منبع اصلی نوشتار زیر در این لینک قرار دارد

نصب و آپدیت کرنل به نسخه 4.x

با سلام خدمت دوستان عزیزم

نظر به اتفاقاتی که برای کرنل نسخه 3 افتاده و با دیدن یک سری شل کد و لوکال روت برای نسخه هایی همچون 3.14 و … جای خالی چنین پستی رو در سایت احساس کردم . خوب توی این پست آپدیت و نصب کرنل 4 رو از طریق سورس و پکیج یاد خواهیم گرفت ، با من همراه باشید .

قبل از هر حرفی یه توضیح اجمالی از کرنل داشته باشیم که ببینیم اصلا چیه و به چه کاری میاد :

هستهٔ لینوکس یک هسته سیستم‌عامل آزاد شبه یونیکس است که در ابتدا توسط لینوس توروالدز در سال ۱۹۹۱ ساخته شد و سپس با کمک توسعه‌دهندگان در سراسر جهان پیشرفت داده شد.

این هسته در اصل بر روی پردازندهٔ اینتل مدل ۸۰۳۸۶ و تقریباً بطور کامل با استفاده از زبان برنامه‌نویسی سی نوشته شده است. این هستهٔ سیستم‌عامل تحت مجوز عمومی گنو بصورت نرم‌افزار آزاد توزیع می‌شود.

هستهٔ لینوکس بهترین هستهٔ شناخته شده برای هسته سیستم‌عامل گنو/لینوکس است. توزیع نرم‌افزار براساس این هسته «توزیع گنو/لینوکس» نامیده می‌شود.

هستهٔ لینوکس یک هستهٔ سیستم‌عامل کامپیوتر شبه یونیکس هست. هستهٔ لینوکس یکی از پراستفاده‌ترین هستهٔ سیستم‌عامل در جهان می‌باشد، که سیستم عامل لینوکس مبتنی بر آن می‌باشد و بر سیستم کامپیوترهای سنتی، معمولاً در شکل توزیع لینوکس، و همچنین بر روی تجهیزات تعبیه شده مانند روترها گسترش یافته است.

سیستم عامل اندروید برای تبلت‌ها، کامپیوترها و تلفن‌های هوشمند به طور معمول بر روی هستهٔ لینوکس بنا شده‌اند.

در اصل، هستهٔ لینوکس در سال ۱۹۹۱ توسط یک دانشجوی علوم کامپیوتر فنلاندی به نام «لینوس توروالدز» خلق شد، برای کامپیوتر شخصی وی و بدون هیچ‌گونه قصد چند سکویی (نرم‌افزارهایی که در چندین سکوی رایانه قابل اجرا باشند)، اما دارای علم توسعه‌یافته‌ای بود که یک آرایه‌ای از معماری‌های کامپیوتر را، بیشتر از هر سیستم‌عامل دیگر یا هسته، پشتیبانی کند. لینوکس به سرعت توسعه‌دهندگان و کاربرانی که کدهایی از پروژه‌های نرم‌افزاری رایگان برای استفادهٔ سیستم‌عامل‌های جدید درست کردند را به خود جذب کرد. هستهٔ لینوکس کمک و همکاری‌های زیادی از جانب هزاران برنامه‌نویس دریافت کرد. با اینکه قسمتی از هسته عاملیت هست، برنامهٔ راه‌اندازی دستگاه‌ها سخت‌افزار را کنترل می‌کنند؛ (مین لاین) یا «وانیل» برنامه راه‌اندازی دستگاه‌ها به طور معمول ثابت و پایدار می‌باشد.

به‌هرحال، واسط بین هسته و ”LKM” (یک فایلی که شامل کد برای اجرای هسته می‌باشد)، بر خلاف بسیاری از هسته‌ها و سیستم‌عامل‌های دیگر، خیلی ثابت و پایدار توسط طرح نمی‌باشد.

هستهٔ لینوکس، توسط شرکت‌کنندگان جهانی توسعه یافته است، که یک مثال برجسته از منبع نرم‌افزارهای رایگان و باز می‌باشد. بحث‌های روزانهٔ توسعه‌دهندگان جایگاه خود را در لیست نامه‌های هستهٔ لینوکس (LKML) قرار دادند. هستهٔ لینوکس تحت GLPv2 منتشر شد، و با تعدادی از تصاویر میان افزار (Firmware) تحت گواهی‌های مختلف غیر رایگان منتشر کرد.

ابتدای امر برای دیدن ورژن کنونی کرنل از دستور زیر استفاده میکنیم :

uname -a

خروجی دستور بالا به شکل زیر خواهد بود :

Linux server.oslearn.ir 3.10.84-1.el6.elrepo.x86_64 #1 SMP Sat Jul 11 11:33:48 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux

نکته لازم به ذکر اینه که ابتدا در centos توضیحات مربوطه رو میدم بعد اوبونتو و دبیان .

برای بروز رسانی رو centos ابتدا باید از repository کامل elrepo استفاده کنیم برای این منظور دستورات زیر رو اجرا میکنیم :

# cd /tmp
# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
for centos 7
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
for centos 6
# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
for centos 5
# rpm -Uvh http://www.elrepo.org/elrepo-release-5-5.el5.elrepo.noarch.rpm

بعد از وارد کردن دستورات فوق باید پکیج مربوط به کرنل رو نصب کنیم :

# yum --enablerepo=elrepo-kernel install kernel-ml

نکته : برخی اوقات پیش میاد که پکیج مورد نظر داخل مخزن وجود داره اما با دستور yum پیدا نمیشه . خود من برای رفع این مشکل به صورت دستی فایل ها رو نصب میکنم به شکل زیر :

# cd /tmp
for centos 6
# wget http://elrepo.org/linux/kernel/el6/x86_64/RPMS/kernel-ml-4.3.0-1.el6.elrepo.x86_64.rpm
# wget http://elrepo.org/linux/kernel/el6/x86_64/RPMS/kernel-ml-headers-4.3.0-1.el6.elrepo.x86_64.rpm
# rpm -ivh *.rpm
for centos 7
# wget http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-4.3.0-1.el7.elrepo.x86_64.rpm
# wget http://elrepo.org/linux/kernel/el7/x86_64/RPMS/kernel-ml-headers-4.3.0-1.el7.elrepo.x86_64.rpm
# rpm -ivh *.rpm

خوب حالا باید فایل grub.conf رو ویرایش کنیم ابتدا یه بکاپ ازش میگیریم :

# cp /etc/grub.conf /root/grub.conf.bak
# vi /etc/grub.conf

محتویات فایل یه چیزی شبیه به اینه :

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_oslearntm-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.3.0-1.el6.elrepo.x86_64)
        root (hd0,0)
        kernel /vmlinuz-4.3.0-1.el6.elrepo.x86_64 ro root=/dev/mapper/vg_oslearntm-lv_root rd_LVM_LV=vg_oslearntm/lv_swap rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_oslearntm/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-4.3.0-1.el6.elrepo.x86_64.img
title CentOS (3.10.84-1.el6.elrepo.x86_64)
        root (hd0,0)
        kernel /vmlinuz-3.10.84-1.el6.elrepo.x86_64 ro root=/dev/mapper/vg_oslearntm-lv_root rd_LVM_LV=vg_oslearntm/lv_swap rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_oslearntm/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-3.10.84-1.el6.elrepo.x86_64.img

باید خطوط مربوط به کرنل قبلی رو پاک کنیم بعد قسمت default رو برابر با صفر قرار بدیم

یعنی فایل باید به این شکل در بیاد :

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_oslearntm-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (4.3.0-1.el6.elrepo.x86_64)
        root (hd0,0)
        kernel /vmlinuz-4.3.0-1.el6.elrepo.x86_64 ro root=/dev/mapper/vg_oslearntm-lv_root rd_LVM_LV=vg_oslearntm/lv_swap rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_oslearntm/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-4.3.0-1.el6.elrepo.x86_64.im

در نهایت باید سیستم ریبوت بشه با دستور reboot .

بعد از بالا اومدن سرور با دستور uname کرنل جدید رو میتونیم چک کنیم .

برای آپدیت کرنل در اوبونتو ، مینت یا هر کدام از Distro های اوبونتو هم باید به شکل زیر کار کنیم :

برای ۳۲ بیتی :

cd /tmp#  
#wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.2.3-unstable/linux-headers-4.2.3-040203-generic_4.2.3-040203.201510030832_i386.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.2.3-unstable/linux-headers-4.2.3-040203_4.2.3-040203.201510030832_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.2.3-unstable/linux-image-4.2.3-040203-generic_4.2.3-040203.201510030832_i386.deb;
#sudo dpkg -i *.deb

برای ۶۴  بیتی :

#cd /tmp
#wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.2.3-unstable/linux-headers-4.2.3-040203-generic_4.2.3-040203.201510030832_amd64.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.2.3-unstable/linux-headers-4.2.3-040203_4.2.3-040203.201510030832_all.deb http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.2.3-unstable/linux-image-4.2.3-040203-generic_4.2.3-040203.201510030832_amd64.deb
#sudo dpkg -i *.deb

بعد از نصب اگر پیامی مبنی بر آپدیت شدن گراب ندیدین دستور زیر هم وارد کنین :

#sudo update-grub

اگه بود لودر BURG هم روی سیستمتون نصب کردین :

sudo update-burg

بعد از وارد کردن دستورات فوق باید سیستم رو یک بار ریبوت کنین و از کرنل جدید استفاده کنین .

خوب برخی دوستان مایل هستن کرنل رو خودشون کامپایل کنن برای اینکار هم باید به شکل زیر عمل کنیم :

نکته : تیم او اس لرن هیچ گونه مسؤلیتی در قبال کرش کردن سیستم یا مواردی از این دست را نمی پذیرد ، پس لطفا دقت فرمایید که مورد کامپایل رو روی سیستم های تستی ابتدا انجام بدین .

مزایایی که نصب کرنل از سورس داره به شرح زیر هست :

1 . هم خوانی بیشتر با سخت افزار

2 . پاک کردن درایور های بلا استفاده

3 . بوت سریع تر

4 . امنیت بیشتر

5 . استفاده کمتر از منابع همچون رم و …

6 . …

موارد لازم قبل از نصب :

git : کنسولی برای دسترسی به آخرین نسخه از یک سری سورس های متن باز

fakeroot : شبیه ساز دسترسی روت برای کامپایل پکیج های deb

build-essential : تولزی برای کامپایل gcc و … که در نصب کرنل لازم است

ncurses-dev : کتابخانه توسعه یافته ای هست برای Menu Config

kernel-package : ابزاری برای build کرنل

xz-utils : ابزاری برای extract کردن فایل های xz

فضا : 10 گیگابایت

برای نصب موارد فوق دستور زیر رو اجرا کنید :

$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils

خروجی دستور فوق :

git-fackroot-build-essential-ncurese-dev-xz-utils

بعد دستور زیر رو اجرا میکنیم :

$ sudo apt-get install kernel-package
or
$ sudo apt-get --no-install-recommends install kernel-package

kernel-package

برای دانلود سورس دلخواه هم از وب سایت کرنل استفاده میکنیم :

$ https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.2.5.tar.xz

برای خارج کردن از حالت فشرده :

$ tar xvf linux-4.2.5.tar.xz
$ ls
$ cd linux-4.2.5
$ ls

برای کانفیگ کرنل :

$ cd linux-4.2.5
$ cp /boot/config-$(uname -r) .config

برای دیدن منوی کانفیگ :

$ make menuconfig

make-menuconfigkernel-config

قبل از بستن منوی کانفیگ حتما از درستی انتخاب ها اطمینان حاصل کنید .

و بعد برای کامپایل کرنل مورد نظر از دستور زیر استفاده کنید :

$ make-kpkg clean

خروجی :

make-kpkg-clean

بعد از دیدن خروجی فوق از دستور زیر استفاده کنید :

$ fakeroot make-kpkg --initrd --revision=1.0.NAS kernel_image kernel_headers

کامپایل کرنل بسته به سیستم شما ممکنه طول بکشه برای رم 8 و سی پی یو 16 هسته روی سیستم من 35 دقیقه طول کشید .

بعد از کامپایل دو باید فایل های زیر رو ببینید :

$ ls  ../*.deb
../linux-headers-4.2.5_1.0.NAS_amd64.deb  ../linux-image-4.2.5_1.0.NAS_amd64.deb

برای نصب کرنل جدید هم باید دستورات زیر رو اجرا کنید :

$ sudo dpkg -i linux-headers-4.2.5_1.0.NAS_amd64.deb
$ sudo dpkg -i linux-image-4.2.5_1.0.NAS_amd64.deb

خروجی :

Selecting previously unselected package linux-image-4.2.5.
(Reading database ... 154262 files and directories currently installed.)
Preparing to unpack linux-image-4.2.5_1.0.NAS_amd64.deb ...
Examining /etc/kernel/preinst.d/
Done.
Unpacking linux-image-4.2.5 (1.0.NAS) ...
Setting up linux-image-4.2.5 (1.0.NAS) ...
 
 Hmm. There is a symbolic link /lib/modules/4.2.5/build
 However, I can not read it: No such file or directory
 Therefore, I am deleting /lib/modules/4.2.5/build
 
 
 Hmm. The package shipped with a symbolic link /lib/modules/4.2.0/source
 However, I can not read the target: No such file or directory
 Therefore, I am deleting /lib/modules/4.2.5/source
 
Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.2.5 /boot/vmlinuz-4.2.5
run-parts: executing /etc/kernel/postinst.d/dkms 4.2.5 /boot/vmlinuz-4.2.5
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.2.5 /boot/vmlinuz-4.2.5
update-initramfs: Generating /boot/initrd.img-4.2.5
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.2.5 /boot/vmlinuz-4.2.5
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.2.5-nixcraft-nas.1.0
Found initrd image: /boot/initrd.img-4.2.5-nixcraft-nas.1.0
Found linux image: /boot/vmlinuz-4.2.5
Found initrd image: /boot/initrd.img-4.2.5
Found linux image: /boot/vmlinuz-4.1.6
Found initrd image: /boot/initrd.img-4.1.6
Found linux image: /boot/vmlinuz-3.16.0-4-amd64
Found initrd image: /boot/initrd.img-3.16.0-4-amd64
Found linux image: /boot/vmlinuz-2.6.32-5-amd64
Found initrd image: /boot/initrd.img-2.6.32-5-amd64
done

 

سپس سیستم رو ریبوت کنید و بعد دستورات زیر رو وارد کنید :

$ uname -a
$ uname -r
$ uname -mrs
$ dmesg | more

خروجی دستورات زیر کرنل جدید خواهد بود .

امیدوارم که آموزش فوق به دردتون خورده باشه و براتون مفید بوده باشه

منبع : او اس لرن

نویسنده : محمد ورمزیار ( N3td3v!l )

———————————————————————————-

از من انتقادی دارید ؟ یا برای روال کار سایت پیشنهادی دارید ؟ خوشحال میشم از طریق ایمیل باهام در میون بزارین ♥



برچسب ها : , , , , ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد