‫و‬ ‫لینوکس‬ ‫هسته‬
‫آن‬ ‫کامپایل‬
‫موسوی‬ ‫علی‬
‫مشهد‬ ‫لینوکس‬ ‫کاربران‬ ‫گروه‬
‫یبهشت‬‌ ‫ارد‬۱۳۹۳
‫هسته؟‬
●.‫لها‬‌ ‫معام‬‌ ‫سیست‬ ‫اکثر‬ ‫اصلی‬ ‫جزو‬
●:‫سیستم‬ ‫منابع‬ ‫مدیریت‬ ‫اصلی‬ ‫هی‬‌ ‫وظیف‬
●‫تافزار‬‌ ‫سخ‬ ‫و‬ ‫مافزار‬‌ ‫نر‬ ‫بین‬ ‫ارتباط‬ ‫ایجاد‬
●‫تافزار‬‌ ‫سخ‬ ‫و‬ ‫هنویس‬‌ ‫برنام‬ ‫بین‬ ‫ارتباط‬ ‫هسازی‬‌ ‫ساد‬
‫لینوکس‬ ‫هی‬‌ ‫هست‬
●.‫است‬ ‫لینوکس‬ ‫لینوکس‬ ‫هی‬‌ ‫هست‬
●.‫دارد‬ ‫فعال‬ ‫هنویس‬‌ ‫برنام‬ ‫صدها‬ ‫از‬ ‫بیش‬
●.‫یشود‬‌ ‫م‬ ‫مدیریت‬ ‫توروالدز‬ ‫لینوس‬ ‫توسط‬
‫وانیلی‬ ‫هی‬‌ ‫هست‬
●‫سایت‬ ‫در‬ ‫که‬ ‫های‬‌ ‫هست‬ ‫به‬
kernel.org‫منتشر‬
‫یشود‬‌ ‫م‬‫وانیلی‬ ‫هی‬‌ ‫هست‬
)Vanilla Kernel(
.‫یگویند‬‌ ‫م‬
●‫توسط‬ ‫وانیلی‬ ‫هی‬‌ ‫هست‬
‫ههای‬‌ ‫پروژ‬ ‫و‬ ‫عها‬‌ ‫توزی‬
‫منتشر‬ ‫و‬ ‫دستکاری‬ ‫مختلف‬
.‫یشود‬‌ ‫م‬
‫کنیم؟‬ ‫کامپایل‬ ‫چرا‬
●.‫کنیم‬ ‫تنظیم‬ ‫نیازمان‬ ‫مطابق‬ ‫را‬ ‫کرنل‬ ‫از‬ ‫بخشی‬
●.‫کنیم‬ ‫استفاده‬ ‫دیگر‬ ‫کرنل‬ ‫یک‬ ‫از‬
●.‫باشیم‬ ‫داشته‬ ‫خود‬ ‫برای‬ ‫سریع‬ ‫و‬ ‫کوچک‬ ‫کرنل‬ ‫یک‬
●.‫بگیریم‬ ‫یاد‬
●Just for fun!
‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬
۱-‫تافزار‬‌ ‫سخ‬ ‫اطلعات‬ ‫عآوری‬‌ ‫جم‬
●‫یکند؟‬‌ ‫م‬ ‫استفاده‬ ‫افزارهایی‬ ‫سخت‬ ‫چه‬ ‫از‬ ‫من‬ ‫سیستم‬
● cat /proc/cpuinfo
● cat /proc/meminfo
● lspci -k
● lsusb
‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬
۲-‫چیست؟‬ ‫ماژول‬
●.‫یشود‬‌ ‫م‬ ‫لود‬ ‫مموری‬ ‫در‬ ‫همیشه‬ ‫کرنل‬ ‫اصلی‬ ‫بخش‬
●‫نیازی‬ ‫آن‬ ‫به‬ ‫که‬ ‫زمانی‬ ‫تا‬ ‫که‬ ‫است‬ ‫کرنل‬ ‫از‬ ‫بخشی‬ ‫ماژول‬
.‫یگیرد‬‌ ‫نم‬ ‫قرار‬ ‫مموری‬ ‫در‬ ‫نباشد‬
●‫به‬ ‫را‬ ‫هسته‬ ‫امکانات‬ ‫و‬ ‫تافزارها‬‌ ‫سخ‬ ‫از‬ ‫بسیاری‬ ‫یتوان‬‌ ‫م‬
.‫کرد‬ ‫تنظیم‬ ‫ماژول‬ ‫عنوان‬
‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬
۳-‫ماژول‬ ‫عنوان‬ ‫به‬ ‫را‬ ‫چیزهایی‬ ‫چه‬
‫کنیم؟‬ ‫تنظیم‬
●)‫قطعات‬ ‫مثل‬ ‫شدن‬ ‫جدا‬ ‫قابل‬ ‫قطعات‬usb(
●‫مختلف‬ ‫مهای‬‌ ‫سیست‬ ‫روی‬ ‫بر‬ ‫شما‬ ‫کرنل‬ ‫یخواهید‬‌ ‫م‬ ‫اگر‬
‫کرنل‬ ‫در‬ ‫را‬ ‫درایورها‬ ‫هی‬‌ ‫هم‬ ‫که‬ ‫نیست‬ ‫منطقی‬ ،‫شود‬ ‫اجرا‬
.‫کنید‬ ‫کامپایل‬
●‫چه‬ ‫به‬ ‫تافزارهایی‬‌ ‫سخ‬ ‫چه‬ ‫که‬ ‫یدهد‬‌ ‫م‬ ‫تشخصی‬ ‫لینوکس‬
.‫یکند‬‌ ‫م‬ ‫بارگزاری‬ ‫را‬ ‫نها‬‌ ‫آ‬ ‫و‬ ‫دارند‬ ‫نیاز‬ ‫لهایی‬‌ ‫ماژو‬
‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬
۴-‫ماژول‬ ‫عنوان‬ ‫به‬ ‫را‬ ‫چیزهایی‬ ‫چه‬
‫نکنیم؟‬ ‫تنظیم‬
‫یک‬ ‫از‬ ‫لها‬‌ ‫ماژو‬‫یک‬ ‫از‬ ‫لها‬‌ ‫ماژو‬
‫دیسک‬ ‫روی‬ ‫محل‬‫دیسک‬ ‫روی‬ ‫محل‬
‫بارگزاری‬ ‫سخت‬‫بارگزاری‬ ‫سخت‬
!‫یشوند‬‌ ‫م‬!‫یشوند‬‌ ‫م‬
‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬
۵-‫لها‬‌ ‫ماژو‬ ‫با‬ ‫کار‬
● lsmod – rmmod – modprobe – modinfo
●‫کار‬ ‫هی‬‌ ‫نحو‬ ‫تغییر‬ ‫لها‬‌ ‫ماژو‬ ‫از‬ ‫استفاده‬ ‫فواید‬ ‫از‬ ‫یکی‬
:‫لهاست‬‌ ‫ماژو‬
# modprobe [module name] [param]
● /etc/modprobe.d/[module name]
options [module name] [param]
‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬
۶-‫هسته‬ ‫دریافت‬
●‫سایت‬ ‫به‬kernel.org.‫کنید‬ ‫مراجعه‬
●.‫کنید‬ ‫ذخیره‬ ‫و‬ ‫انتخاب‬ ‫را‬ ‫هها‬‌ ‫گزین‬ ‫از‬ ‫یکی‬
●.‫کنید‬ ‫اکسترکت‬ ‫و‬ ‫ذخیره‬ ‫جایی‬ ‫در‬ ‫را‬ ‫دریافتی‬ ‫فایل‬
‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬
۶-‫کرنل‬ ‫یسازی‬‌ ‫شخص‬ ‫و‬ ‫تنظیم‬
●:‫کرنل‬ ‫تنظیم‬ ‫ابزار‬ ‫از‬ ‫استفاده‬
$ cp .config .config~
● $ make menuconfig
‫تنظیمات‬ ‫برای‬ ‫نکته‬ ‫چند‬
● $ zcat /proc/config.gz > .config
● localmodconfig
● localyesconfig
● kernel-seeds.org
‫کرنل‬ ‫کامپایل‬
● $ make
● # make modules_install
● # cp -v arch/x86/bzImage /boot/vmlinuz-[version]
●:‫نیاز‬ ‫صورت‬ ‫در‬
mkinitcpio -k [fullKernelName] -c /etc/mkinitcpio.conf
-g /boot/initramfs-[YourKernel].img
‫گراب‬ ‫تنظیم‬
● grub-mkconfig -o /boot/grub/grub.cfg
●/ ‫فایل‬ ‫ویرایش‬ ‫نیاز‬ ‫صورت‬ ‫در‬etc/grub.d/40_custom
menuentry "Other Linux" {
set root=(hd0,2)
linux /boot/vmlinuz (add other options here as
required)
initrd /boot/initrd.img (if the other kernel uses/needs
one)
}
‫مجدد‬ ‫هاندازی‬‌ ‫را‬
‫جدیدتان‬ ‫کرنل‬ ‫از‬
!‫ببرید‬ ‫لذت‬
OOPS!
●‫یکنه؟‬‌ ‫نم‬ ‫کار‬ ‫درست‬ ‫چیزی‬ ‫یک‬
...‫کنید‬ ‫تنظیم‬ ‫دوباره‬
:‫کنید‬ ‫کامپایل‬ ‫دوباره‬
$ make
# make modules_install
‫مجدد‬ ‫هاندازی‬‌ ‫را‬
‫جدیدتان‬ ‫کرنل‬ ‫از‬
!‫ببرید‬ ‫لذت‬
!‫منتشر‬ ‫هسته‬ ‫جدید‬ ‫ورژن‬ ‫کنید‬ ‫صبر‬
!‫شده‬
●.‫کنید‬ ‫اکسترکت‬ ‫جایی‬ ‫و‬ ‫دریافت‬ ‫را‬ ‫هسته‬ ‫جدید‬ ‫ورژن‬
● $ zcat /proc/config.gz > .config
● $ make oldconfig
● $ make
● # make modules_install
‫مجدد‬ ‫هاندازی‬‌ ‫را‬
‫جدیدتان‬ ‫کرنل‬ ‫از‬
(: !‫ببرید‬ ‫لذت‬

هسته لینوکس و کامپایل آن

  • 1.
    ‫و‬ ‫لینوکس‬ ‫هسته‬ ‫آن‬‫کامپایل‬ ‫موسوی‬ ‫علی‬ ‫مشهد‬ ‫لینوکس‬ ‫کاربران‬ ‫گروه‬ ‫یبهشت‬‌ ‫ارد‬۱۳۹۳
  • 2.
    ‫هسته؟‬ ●.‫لها‬‌ ‫معام‬‌ ‫سیست‬‫اکثر‬ ‫اصلی‬ ‫جزو‬ ●:‫سیستم‬ ‫منابع‬ ‫مدیریت‬ ‫اصلی‬ ‫هی‬‌ ‫وظیف‬ ●‫تافزار‬‌ ‫سخ‬ ‫و‬ ‫مافزار‬‌ ‫نر‬ ‫بین‬ ‫ارتباط‬ ‫ایجاد‬ ●‫تافزار‬‌ ‫سخ‬ ‫و‬ ‫هنویس‬‌ ‫برنام‬ ‫بین‬ ‫ارتباط‬ ‫هسازی‬‌ ‫ساد‬
  • 3.
    ‫لینوکس‬ ‫هی‬‌ ‫هست‬ ●.‫است‬‫لینوکس‬ ‫لینوکس‬ ‫هی‬‌ ‫هست‬ ●.‫دارد‬ ‫فعال‬ ‫هنویس‬‌ ‫برنام‬ ‫صدها‬ ‫از‬ ‫بیش‬ ●.‫یشود‬‌ ‫م‬ ‫مدیریت‬ ‫توروالدز‬ ‫لینوس‬ ‫توسط‬
  • 4.
    ‫وانیلی‬ ‫هی‬‌ ‫هست‬ ●‫سایت‬‫در‬ ‫که‬ ‫های‬‌ ‫هست‬ ‫به‬ kernel.org‫منتشر‬ ‫یشود‬‌ ‫م‬‫وانیلی‬ ‫هی‬‌ ‫هست‬ )Vanilla Kernel( .‫یگویند‬‌ ‫م‬ ●‫توسط‬ ‫وانیلی‬ ‫هی‬‌ ‫هست‬ ‫ههای‬‌ ‫پروژ‬ ‫و‬ ‫عها‬‌ ‫توزی‬ ‫منتشر‬ ‫و‬ ‫دستکاری‬ ‫مختلف‬ .‫یشود‬‌ ‫م‬
  • 5.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چرا‬ ●.‫کنیم‬‫تنظیم‬ ‫نیازمان‬ ‫مطابق‬ ‫را‬ ‫کرنل‬ ‫از‬ ‫بخشی‬ ●.‫کنیم‬ ‫استفاده‬ ‫دیگر‬ ‫کرنل‬ ‫یک‬ ‫از‬ ●.‫باشیم‬ ‫داشته‬ ‫خود‬ ‫برای‬ ‫سریع‬ ‫و‬ ‫کوچک‬ ‫کرنل‬ ‫یک‬ ●.‫بگیریم‬ ‫یاد‬ ●Just for fun!
  • 6.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬ ۱-‫تافزار‬‌‫سخ‬ ‫اطلعات‬ ‫عآوری‬‌ ‫جم‬ ●‫یکند؟‬‌ ‫م‬ ‫استفاده‬ ‫افزارهایی‬ ‫سخت‬ ‫چه‬ ‫از‬ ‫من‬ ‫سیستم‬ ● cat /proc/cpuinfo ● cat /proc/meminfo ● lspci -k ● lsusb
  • 7.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬ ۲-‫چیست؟‬‫ماژول‬ ●.‫یشود‬‌ ‫م‬ ‫لود‬ ‫مموری‬ ‫در‬ ‫همیشه‬ ‫کرنل‬ ‫اصلی‬ ‫بخش‬ ●‫نیازی‬ ‫آن‬ ‫به‬ ‫که‬ ‫زمانی‬ ‫تا‬ ‫که‬ ‫است‬ ‫کرنل‬ ‫از‬ ‫بخشی‬ ‫ماژول‬ .‫یگیرد‬‌ ‫نم‬ ‫قرار‬ ‫مموری‬ ‫در‬ ‫نباشد‬ ●‫به‬ ‫را‬ ‫هسته‬ ‫امکانات‬ ‫و‬ ‫تافزارها‬‌ ‫سخ‬ ‫از‬ ‫بسیاری‬ ‫یتوان‬‌ ‫م‬ .‫کرد‬ ‫تنظیم‬ ‫ماژول‬ ‫عنوان‬
  • 8.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬ ۳-‫ماژول‬‫عنوان‬ ‫به‬ ‫را‬ ‫چیزهایی‬ ‫چه‬ ‫کنیم؟‬ ‫تنظیم‬ ●)‫قطعات‬ ‫مثل‬ ‫شدن‬ ‫جدا‬ ‫قابل‬ ‫قطعات‬usb( ●‫مختلف‬ ‫مهای‬‌ ‫سیست‬ ‫روی‬ ‫بر‬ ‫شما‬ ‫کرنل‬ ‫یخواهید‬‌ ‫م‬ ‫اگر‬ ‫کرنل‬ ‫در‬ ‫را‬ ‫درایورها‬ ‫هی‬‌ ‫هم‬ ‫که‬ ‫نیست‬ ‫منطقی‬ ،‫شود‬ ‫اجرا‬ .‫کنید‬ ‫کامپایل‬ ●‫چه‬ ‫به‬ ‫تافزارهایی‬‌ ‫سخ‬ ‫چه‬ ‫که‬ ‫یدهد‬‌ ‫م‬ ‫تشخصی‬ ‫لینوکس‬ .‫یکند‬‌ ‫م‬ ‫بارگزاری‬ ‫را‬ ‫نها‬‌ ‫آ‬ ‫و‬ ‫دارند‬ ‫نیاز‬ ‫لهایی‬‌ ‫ماژو‬
  • 9.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬ ۴-‫ماژول‬‫عنوان‬ ‫به‬ ‫را‬ ‫چیزهایی‬ ‫چه‬ ‫نکنیم؟‬ ‫تنظیم‬ ‫یک‬ ‫از‬ ‫لها‬‌ ‫ماژو‬‫یک‬ ‫از‬ ‫لها‬‌ ‫ماژو‬ ‫دیسک‬ ‫روی‬ ‫محل‬‫دیسک‬ ‫روی‬ ‫محل‬ ‫بارگزاری‬ ‫سخت‬‫بارگزاری‬ ‫سخت‬ !‫یشوند‬‌ ‫م‬!‫یشوند‬‌ ‫م‬
  • 10.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬ ۵-‫لها‬‌‫ماژو‬ ‫با‬ ‫کار‬ ● lsmod – rmmod – modprobe – modinfo ●‫کار‬ ‫هی‬‌ ‫نحو‬ ‫تغییر‬ ‫لها‬‌ ‫ماژو‬ ‫از‬ ‫استفاده‬ ‫فواید‬ ‫از‬ ‫یکی‬ :‫لهاست‬‌ ‫ماژو‬ # modprobe [module name] [param] ● /etc/modprobe.d/[module name] options [module name] [param]
  • 11.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬ ۶-‫هسته‬‫دریافت‬ ●‫سایت‬ ‫به‬kernel.org.‫کنید‬ ‫مراجعه‬ ●.‫کنید‬ ‫ذخیره‬ ‫و‬ ‫انتخاب‬ ‫را‬ ‫هها‬‌ ‫گزین‬ ‫از‬ ‫یکی‬ ●.‫کنید‬ ‫اکسترکت‬ ‫و‬ ‫ذخیره‬ ‫جایی‬ ‫در‬ ‫را‬ ‫دریافتی‬ ‫فایل‬
  • 12.
    ‫کنیم؟‬ ‫کامپایل‬ ‫چگونه‬ ۶-‫کرنل‬‫یسازی‬‌ ‫شخص‬ ‫و‬ ‫تنظیم‬ ●:‫کرنل‬ ‫تنظیم‬ ‫ابزار‬ ‫از‬ ‫استفاده‬ $ cp .config .config~ ● $ make menuconfig
  • 13.
    ‫تنظیمات‬ ‫برای‬ ‫نکته‬‫چند‬ ● $ zcat /proc/config.gz > .config ● localmodconfig ● localyesconfig ● kernel-seeds.org
  • 14.
    ‫کرنل‬ ‫کامپایل‬ ● $make ● # make modules_install ● # cp -v arch/x86/bzImage /boot/vmlinuz-[version] ●:‫نیاز‬ ‫صورت‬ ‫در‬ mkinitcpio -k [fullKernelName] -c /etc/mkinitcpio.conf -g /boot/initramfs-[YourKernel].img
  • 15.
    ‫گراب‬ ‫تنظیم‬ ● grub-mkconfig-o /boot/grub/grub.cfg ●/ ‫فایل‬ ‫ویرایش‬ ‫نیاز‬ ‫صورت‬ ‫در‬etc/grub.d/40_custom menuentry "Other Linux" { set root=(hd0,2) linux /boot/vmlinuz (add other options here as required) initrd /boot/initrd.img (if the other kernel uses/needs one) }
  • 16.
    ‫مجدد‬ ‫هاندازی‬‌ ‫را‬ ‫جدیدتان‬‫کرنل‬ ‫از‬ !‫ببرید‬ ‫لذت‬
  • 17.
    OOPS! ●‫یکنه؟‬‌ ‫نم‬ ‫کار‬‫درست‬ ‫چیزی‬ ‫یک‬ ...‫کنید‬ ‫تنظیم‬ ‫دوباره‬ :‫کنید‬ ‫کامپایل‬ ‫دوباره‬ $ make # make modules_install
  • 18.
    ‫مجدد‬ ‫هاندازی‬‌ ‫را‬ ‫جدیدتان‬‫کرنل‬ ‫از‬ !‫ببرید‬ ‫لذت‬
  • 19.
    !‫منتشر‬ ‫هسته‬ ‫جدید‬‫ورژن‬ ‫کنید‬ ‫صبر‬ !‫شده‬ ●.‫کنید‬ ‫اکسترکت‬ ‫جایی‬ ‫و‬ ‫دریافت‬ ‫را‬ ‫هسته‬ ‫جدید‬ ‫ورژن‬ ● $ zcat /proc/config.gz > .config ● $ make oldconfig ● $ make ● # make modules_install
  • 20.
    ‫مجدد‬ ‫هاندازی‬‌ ‫را‬ ‫جدیدتان‬‫کرنل‬ ‫از‬ (: !‫ببرید‬ ‫لذت‬