คอมไพล์ Kernel
ขั้นตอนนี้ยังไม่จำเป็น เพราะยังสามารถใช้ kernel ที่ติดมากับ Slackware 13.37 ได้ แต่ถ้ามีการใช้ความสามารถของ kernel ก็จะต้องติดตั้ง kernel ใหม่ โดยมีความต้องการดังนี้
- iSCSI (built-in) ใช้ kernel 3.2.5 ขึ้นไป
- Network Team ใช้ kernel 3.3 ขึ้นไป
ขั้นตอนการคอมไพล์ kernel มีดังนี้
- ดาวน์โหลด และแตกไฟล์
- กำหนดค่า
- คอมไพล์
- ติดตั้ง
ดาวน์โหลด และแตกไฟล์
ในที่นี้จะดาวน์โหลด kernel มาไว้ที่ /space/src
- ดาวน์โหลด kernel จาก http://www.kernel.org/ (เลือก Full Source ของ 3.2.x ล่าสุด ขณะเขียนบทความคือ 3.2.47)
cd /space mkdir src cd src wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.2.47.tar.xz
- แตกไฟล์โดยใช้คำสั่ง
tar Jxf linux-3.2.47.tar.xz
กำหนดค่า
การกำหนดค่า จะใช้ค่าเดิมเป็นตัวตั้งต้น แล้วมาปรับแต่งตามความเหมาะสม
- Copy config เดิม
cd linux-3.2.47 cp /boot/config .config
- เพิ่ม option ที่ต้องการ
- RTC - สำหรับ Real Time Clock (เนื่องจากใน kernel รุ่นใหม่จะเป็นคนละ option กับรุ่นเดิม จึงต้องมาเลือกเพิ่ม)
make menuconfig
เมื่อเสร็จแล้ว ให้ออกจากโปรแกรม แล้วบันทึกค่าเอาไว้
คอมไพล์
คอมไพล์ kernel โดยใช้คำสั่ง
make -j4
ค่าเลข 4 คือให้คอมไพล์ 4 งานพร้อมกัน เพื่อใช้ CPU ทั้ง 4 thread
ติดตั้ง
การติดตั้งจะแบ่งเป็น 3 ส่วน คือ ติดตั้ง module, ติดตั้ง kernel และกำหนดค่า LILO
- ติดตั้ง module
make modules_install
- ติดตั้ง kernel
Kernel ที่ได้จากการคอมไพล์จะอยู่ที่ arch/x86/boot/bzImage ให้คัดลอกไฟล์นี้ไปไว้ใน /boot พร้อมกับไฟล์ config อีก 2 ไฟล์ ดังนี้
cp arch/x86/boot/bzImage /boot/vmlinuz-3.2.47 cp System.map /boot/System.map-3.2.47 cp .config /boot/config-3.2.47
- กำหนดค่า LILO
แก้ไขไฟล์ /etc/lilo.conf ดังนี้ ตอนต้นไฟล์ เพิ่มบรรทัดนี้
# Start LILO global section boot = /dev/sda default = Linux-3.2.47 lba32 #compact # faster, but won't work on all systems.
บรรทัดสีน้ำเงินคือบรรทัดที่เพิ่มเข้าไป
ตอนท้ายไฟล์ เพิ่มบรรทัดดังนี้
# Linux bootable partition config begins image = /boot/vmlinuz root = /dev/sda1 label = Linux read-only # Partitions should be mounted read-only for checking image = /boot/vmlinuz-3.2.47 root = /dev/sda1 label = Linux-3.2.47 read-only # Partitions should be mounted read-only for checking # Linux bootable partition config ends
บรรทัดสำน้ำเงินคือที่เพิ่มเข้าไป สำหรับบรรทัด root = มีการใช้คำสั่ง LABEL= แทนการอ้างพาร์ทิชั่นโดยตรง รายละเอียดอ่านได้จากหัวข้อ เปลี่ยนการอ้างอิง Filesystem
จากนั้นเรียกคำสั่ง lilo เพื่อติดตั้งค่าใหม่ตามที่กำหนด ดังนี้
root@diskserv:~# lilo Added Linux Added Linux-3.2.47 * root@diskserv:~#