[hide=1]ผมเริ่มทดลองติดตั้งเคอร์เนล 2.6 บน peorth ตั้งแต่ 2.6.0-test10 แต่ไม่ประสบผลสำเร็จซักที ก็เลยไม่ได้เขียนวิธีการติดตั้งเป็นเรื่องเป็นราว ปัญหาใหญ่สุดของผมคือ usbmouse ไม่ทำงาน และ touchpad ก็มีอาการกระโดดๆ จนถึง 2.6.0 released อาการนี้ก็ยังไม่หาย จนไม่นานนี้เอา 2.6.0-1.30 ของ Fedora Core 2 (FC2) เป็น rpm มาติดตั้งรวดเดียวผ่านฉลุย ก็เลยได้กลับมาลองเคอร์เนล 2.6 อีกครั้ง ฟีเจอร์ใหม่ๆ ของ 2.6 ที่ต่างไปจากวานิลลา 2.4.24 ก็มีเยอะเหมือนกัน และก็จะมีบางส่วนที่ removed/deprecated/obsoleted ด้วย ที่เห็นชัดจะมีเรื่องการสนับสนุนฮาร์ดแวร์ และระบบขนาดใหญ่ ... รายละเอียดปลีกย่อยมันเยอะ (มากๆๆ) ครับ ลองหาอ่านเอาเองนะครับ อย่างไรก็ตามอยากแนะนำให้เริ่มเปลี่ยนเคอร์เนลเป็น 2.6 กันได้เลยครับ เพราะข่าวจาก Marcelo Tosatti ที่เป็น 2.4 kernel maintainer จะเป็นรีลีสสุดท้ายของเคอร์เนล 2.4 และจะเริ่มเข้าสู่ maintainance mode ซึ่งจะไม่มีการพัฒนาฟีเจอร์เพิ่มกันอีก จะเหลือแต่แก้ไขบักเล็กน้อยเท่านั้น นักพัฒนาเคอร์เนลก็จะมุ่งไปที่เคอร์เนล 2.6 (stable branch) และ 2.7 (development branch) แทน .. (2.4.24 จะเป็นรีลีสสุดท้ายหรือเปล่า ตอนนี้ไม่แน่ใจเหมือนกันครับ เพราะออกก่อนกำหนดตั้งเดือนครึ่ง ด้วยต้องการแก้บักด้านความปลอดภัยหลายๆ ตัว)
Configuration
หลังจากลอง kernel-2.6.0-1.30 ของ FC2 แล้วประสบผลสำเร็จดี ผมก็เลยเอา kernel-source-2.6.0-1.30 มาทำ custom kernel แต่ในวันเดียวกันนั้นเอง ลินุสก็ออก 2.6.1 ผมเลยเอามาติดตั้งด้วย แล้วไม่กี่ชั่วโมงต่อมาก็มีแพตช์ mm1 ของ แอนดรูว์ มอร์ตัน ออกมา ตามด้วย mm2 ในวันเดียวกันอีก สรุปว่าผมลงเคอร์เนล 2.6 ห้าตัวในวันเดียว เล่นเอาพื้นที่ในดิสก์เกือบจะไม่พอ วิธีการคอนฟิกเคอร์เนลหากใช้ make menuconfig จะเห็นว่าอินเทอร์เฟซแทบไม่เปลี่ยนเลย แต่ถ้าใช้ make xconfig จะกลายเป็นอินเทอร์เฟซที่ใช้ QT แทนที่จะเป็น tcl/tk และที่เพิ่มมาอีกอันคือ make gconfig สำหรับอินเทอร์เฟซที่ใช้ GTK .. แรกๆ อาจจะไม่ค่อยคุ้นนัก แต่ลองได้คอนฟิกบ่อยๆ เดี๋ยวก็ชิน มาดูส่วนที่น่าสนใจกันสักนิด

General setup -> Loadable module
Automatic kernel module loading : เคอร์เนลจะสั่ง modprobe อัตโนมัติเมื่อต้องการใช้โมดูลบางตัว -> Y
Power Management support
ถ้าฮาร์ดแวร์สนับสนุน ACPI แนะนำให้ใช้ ACPI แทน APM ครับ
โน๊ตบุ๊คที่ใช้ CPU/Chipset ที่สนับสนุน CPU Frequency scaling (e.g., Speedstep-ICH, Pentium-M, PowerNow!, LongRun, ...) แนะนำให้ enable CPU Frequency scaling ด้วยครับ
Device drivers -> ATA/ATAPI/MFM/RLL support
ถ้ามี IDE/ATAPI CD Writer .. เคอร์เนล 2.6 ไม่จำเป็นต้องใช้ SCSI emulation (BLK_DEV_IDESCSI) แล้วครับ
Device drivers -> Input Device
ต้องเลือก Y สำหรับออพชั่นหลักสี่ตัวคือ
Serial I/O (SERIO)
i8042 PC Keyboard controller (SERIO_i8042)
Keyboards (INPUT_KEYBOARD)
Mice (INPUT_MOUSE)
ถ้าไม่เห็นสองตัวแรกไม่ต้องตกใจ มันเป็นออพชั่นที่ซ่อนไว้ ถ้าไม่สั่ง show all options ก็จะไม่เห็นครับ Keyboards จะ enable AT Keyboard by default ส่วน Mice ก็เลือกตามชนิดของเมาส์ที่ใช้งาน
หากต้องการใช้ PC Speaker ต้องเลือก PC Speaker support (INPUT_PCSPKR) ในเมนู Misc ด้วยครับ
File systems -> Pseudo filesystems
/proc file system support (PROC_FS) -> Y
sysfs support (SYSFS) -> Y จำเป็นมากๆ
Device drivers -> Character devices
Virtual terminal (VT) -> Y
Support for console on virtual terminal (CONSOLE_VT) -> Y
Device drivers -> Graphics support -> Console display driver support
ถ้าต้องการใช้ Framebuffer ต้องเลือก Y ออพชั่นต่อไปนี้ครับ
VGA Text console (VGA_CONSOLE)
Video mode selection support (VIDEO_SELECT)
Framebuffer Console support (FRAMEBUFFER_CONSOLE)
Sound
แนะนำให้ใช้ ALSA แทน OSS ครับ เท่าที่ทดสอบคือต้องคอมไพล์เป็นโมดูลเท่านั้นครับถึงจะใช้งานได้ ดังนั้นสำหรับ ALSA ให้เลือกเป็น M แทน Y นะครับ และควรเลือก
OSS API emulation (SND_OSSEMUL)
OSS Mixer (SND_MIXER_OSS)
API OSS PCM API (SND_PCM_OSS)
OSS Sequencer API (SND_SEQUENCER_OSS)
เพื่อให้ ALSA จำลองตัวเองเป็น OSS สำหรับแอพพลิเคชั่นที่ยังไม่สนับสนุน ALSA ครับ
Installation
2.6 ไม่ต้อง make dep แล้วครับ ขั้นตอนการ build จะเหลือเพียง
make
make modules_install
make install

และรายละเอียดช่วงคอมไพล์ก็จะถูกตัดทอนไปเยอะ เหลือเพียงสถานะบอกว่ากำลังทำอะไรกับโมดูลไหนเท่านั้น
Post Installation
หลังจากติดตั้งแล้ว ทีนี้ก็เป็นเรื่องคอนฟิกระบบสำหรับใช้กับเคอร์เนล 2.6 นะครับ มีจุดที่ต้องแก้อยู่นิดหน่อย
ใน 2.6 'จำเป็น' ต้องใช้ sysfs ครับ ดังนั้น /etc/fstab ต้องเพิ่ม entry สำหรับ sysfs เข้าไป โดยเพิ่มบรรทัด
none /sys sysfs defaults 0 0

และสร้างไดเรคทอรี่ /sys เตรียมไว้โดย
mkdir /sys

ใน /etc/rc.sysinit ส่วนของ HID คอมเมนต์บรรทัด keybdev กับ mousedev ออกครับ เพราะใน 2.6 ส่วนของ HID (Human Interface Device) ออกแบบใหม่ครับ และจะไม่มี keybdev กับ mousedev แล้ว ถ้าไม่คอมเมนต์ออกมันจะฟ้องตอนบูตว่า modprobe หาโมดูลไม่ได้ .. ที่จริงก็ไม่ได้สร้างปัญหาอะไรครับ แต่มันน่ารำคาญเท่านั้นล่ะ :P
คอนฟิกโมดูลใน 2.4 จะใช้ /etc/modules.conf แต่ใน 2.6 จะเป็น /etc/modprobe.conf ครับ ดังนั้นต้องย้ายคอนฟิกใน /etc/modules.conf ไปไว้ที่ /etc/modprobe.conf ด้วย ผมใช้วิธีถึกๆ แบบนี้
cat /etc/modules.conf > /etc/modprobe.conf

แล้วค่อยไปแก้ไขเอาทีหลัง
สำหรับ ALSA ต้องเพิ่มข้างล่างนี้ใน /etc/modprobe.conf ด้วย คอนฟิก ALSA ของ 2.4 กับ 2.6 จะต่างกันเล็กน้อยครับ ลองตรวจเช็คดูครับ ตัวอย่างข้างล่างเป็นคอนฟิกสำหรับ Intel AC'97 นะครับ โมดูลที่ใช้ชื่อ snd-intel8x0 สำหรับเครื่องที่ใช้ซาวด์การ์ดต่างไปจากนี้ก็แก้ที่สองบรรทัดแรกให้ตรงกับโมดูลที่ต้องการใช้ครับ
alias snd-card-0 snd-intel8x0
alias sound-slot-0 snd-intel8x0
alias char-major-116 snd
alias char-major-14 soundcore
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
install sound-slot-0
/sbin/modprobe --ignore-install sound-slot-0 &&
{ /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1; /bin/true; }
remove sound-slot-0
{ /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1; /bin/true; };
/sbin/modprobe -r --ignore-remove sound-slot-0

NVIDIA Driver ลำบากสักหน่อยครับเพราะติดตั้งกับ 2.6 ตรงๆ ไม่ได้ ต้องแพตช์กันเล็กน้อยก่อนครับ โดยดาวน์โหลดแพตช์สำหรับ NVIDIA Driver ได้ที่ http://www.minion.de/ ครับ เลือกแพตช์ที่ตรงกับเวอร์ชั่นของไดรเวอร์นะครับ ตัวอย่างของผมคือใช้ไดรเวอร์ NVIDIA-Linux-x86-1.0-5328-pkg1.run ก็จะต้องใช้แพตช์ NVIDIA_kernel-1.0-5328-2.6.diff ขั้นตอนการติดตั้งต้องทำตามนี้ครับ
sh NVIDIA-Linux-x86-1.0-5328-pkg1.run --extract-only

เพื่อแตกซอร์สที่อยู่ในแพคเกจออก ซอร์สจะแตกไว้ที่ ./NVIDIA-Linux-x86-1.0-5328-pkg1 จากนั้นก็ต้องแพตช์
cd NVIDIA-Linux-x86-1.0-5328-pkg1/usr/src/nv
cat ../../../../NVIDIA_kernel-1.0-5328-2.6.diff | patch -p1
ln -s Makefile.kbuild Makefile
cd ../../../

เสร็จแล้วก็คอมไพล์และติดตั้ง
make SYSSRC=/usr/src/linux-2.6.1-mm2/ install


อย่างที่บอกว่า IDE/ATAPI CD Writer ไม่ต้องจำลอง SCSI กันแล้ว ทำให้ลดภาระงานของเคอร์เนลที่ต้องจำลอง SCSI ลงไปเยอะครับ เท่าที่ทดสอบเขียน CD ที่ 24X ไดรว์ Lite-On 40x12x48 บนเครื่อง Athlon XP 2000+ ใช้ SCSI emulation กินซีพียูไปเกือบๆ 100% ในขณะที่ไม่ใช่ SCSI emulation เหลือราวๆ 5% เท่านั้น เบากว่ากันเยอะเลย แถม disk throughput ก็สูงกว่าด้วย

ทีนี้มาดูเรื่องการสั่งงานนิดนึง เพราะเราไม่ได้จำลอง SCSI แล้ว คำสั่งในการเขียนแผ่นด้วย cdrecord กับ ATAPI CD Writer ก็เลยเปลี่ยนไปเล็กน้อยครับ คือไม่ได้ระบุเป็น dev=bus,target,lun แล้ว แต่จะระบุดีไวซ์ตรงๆ เป็น dev=/dev/hdd เลย อย่างจะ simulate การเขียน ISO อิมเมจลงแผ่นก็ประมาณ:
[kitt@yggdrasil kitt]$ cdrecord -v dev=/dev/hdd speed=40 -dao -dummy driverop
ts=burnfree -overburn -data 4.9-i386-mini.iso
Cdrecord-Clone 2.01a19 (i686-redhat-linux-gnu) Copyright