ดเบียนมี kernel image คอมไพล์สำเร็จมาให้แล้ว ในแพกเกจ linux-image-version-revision-cpu (เช่น linux-image-2.6.22-1-686) โดยจะเปิดตัวเลือกแบบครอบจักรวาล และ build module ทั้งหมด เพื่อให้ใช้ได้กับทุกเครื่อง แต่ถ้าคุณต้องการหรือจำเป็นต้องคอมไพล์ใช้เอง ก็จะมีวิธีคอมไพล์ในแบบฉบับของเดเบียน โดยสร้างเป็น deb package ที่สามารถใช้ติดตั้งซ้ำได้หลายครั้ง
สรุปขั้นตอนการคอมไพล์และติดตั้ง
แพกเกจเครื่องมือคอมไพล์เคอร์เนลก็คือ kernel-package และถ้าคุณใช้ menuconfig ก็จะต้องการ libncurses-dev ด้วย
# aptitude install kernel-package libncurses-dev
สำหรับซอร์สของเคอร์เนล คุณสามารถติดตั้งจากแพกเกจของเดเบียน หรือจะดาวน์โหลดจาก kernel.org ก็ได้ แต่โดยทั่วไป คงใช้ของเดเบียนมากกว่า
# aptitude install linux-source-2.6.22
ซึ่งจะติดตั้งซอร์สในรูปของ tarball ไว้ที่ /usr/src เราก็ไปแตกซอร์สซะ:
$ cd /usr/src
$ tar xjf linux-source-2.6.22.tar.bz2
จากนั้น ก็ตั้งค่าเคอร์เนลตามปกติ โดยใช้ menuconfig (หรือถ้าเคยคอมไพล์มาแล้วในรุ่นก่อน ก็อาจจะ copy config มา แล้ว make oldconfig ตามแต่กรณี):
$ cd linux-source-2.6.22
$ make menuconfig
แล้วก็ลงมือคอมไพล์:
$ make-kpkg clean
$ fakeroot make-kpkg kernel_image
มันจะคอมไพล์และสร้าง linux-image-2.6.22_2.6.22-10.00.Custom_i386.deb ที่ไดเรกทอรีชั้นถัดขึ้นไป เราก็สามารถติดตั้งได้เลย
$ su
# dpkg -i ../linux-image-2.6.22_2.6.22-10.00.Custom_i386.deb
จากนั้น ตรวจสอบว่าต้องอัปเดตเมนูของ bootloader หรือไม่ โดยถ้าใช้ grub ก็สั่ง:
# update-grub
หรือถ้าใช้ lilo:
# lilo
แล้วก็บูตเครื่องใหม่ เกร็ดของคำสั่ง
เกร็ดของการสั่งคอมไพล์ที่ควรกล่าวถึง จะอยู่ตรงบรรทัดนี้:
$ fakeroot make-kpkg kernel_image
คำสั่ง fakeroot เป็นคำสั่งที่จำเป็นต้องใช้ในการ build deb โดยทั่วไป ไม่เฉพาะแพกเกจของเคอร์เนล เนื่องจากในการสร้างแพกเกจ จะต้องมีการ chown แฟ้มต่างๆ ให้เป็นของ root ก่อนที่จะแพ็ก ซึ่งการ chown ดังกล่าว โดยปกติจะต้องการสิทธิ์ของ root (สังเกตว่า ตลอดกระบวนการคอมไพล์ ผมใช้สิทธิ์ผู้ใช้ปกติ โดยพรอมต์จะเป็น $ ไม่ใช่ # แต่ถ้าคุณคอมไพล์ขณะเป็น root คำสั่ง fakeroot ก็ไม่จำเป็น แต่คุณก็รู้ ว่าใส่เสื้อเบอร์ S พร้อมกางเกงในทับข้างนอกตลอดเวลา มันประเจิดประเจ้อแค่ไหน) แต่คำสั่ง fakeroot จะ override system call บางตัว เช่น chown(), stat() ที่ทำให้ดูเหมือน chown ได้ภายใน environment ที่เรียก แต่ไม่ได้เกิดขึ้นจริงใน file system เช่น คุณสั่ง chown root.root x แฟ้ม x ก็จะปรากฏใน environment ที่เรียกว่าเป็นของ root แต่ถ้าออกมาดูที่ file system จริง จะไม่มีการ chown เกิดขึ้นแต่อย่างใด ดังนั้น ไม่ต้องกลัวชื่อคำสั่ง ที่ทำให้ดูเหมือนสร้างช่องโหว่ในระบบรักษาความปลอดภัย ทุกอย่างยังอยู่ในการควบคุม สิ่งที่เกิดขึ้น แค่ทำให้เพียงพอต่อการสร้างแพกเกจเท่านั้น แน่นอนว่ามีอีกทางเลือกหนึ่งที่สามารถใช้แทน fakeroot ได้ คือ sudo ซึ่งจะเป็นการเปลี่ยนแปลงใน file system จริงๆ ก่อนแพ็ก ผลที่ได้ ก็ไม่ต่างกันมากนัก แต่ผมคิดว่า ใช้ fakeroot ปลอดภัยกว่า sudo ส่วนที่เหลือ คือการสั่ง make-kpkg ซึ่งมีตัวเลือกที่สามารถเพิ่มเติมได้ เช่น --append-to-version fooใช้สำหรับเพิ่มส่วนต่อท้ายเวอร์ชันของเคอร์เนล ซึ่งจะปรากฏในคำสั่ง uname -r--revision xใช้ กำหนด revision ของ deb ที่จะสร้าง ซึ่งจะมีผลสำหรับการนับรุ่นแพกเกจเท่านั้น ไม่มีผลต่อ image ที่ติดตั้ง--initrdกำหนดว่าจะ build initial RAM drive (initrd) image ด้วย ตัวอย่างเช่น ถ้าคุณสั่ง:
# fakeroot make-kpkg --append-to-version -686-smp --initrd \
--revision 10.01 kernel_image
คุณจะได้ linux-image-2.6.22-686-smp_2.6.22-10.01_i386.deb ออกมา ซึ่งเมื่อติดตั้งแล้ว ตรวจสอบรุ่นของเคอร์เนลด้วย uname -r จะได้ผลลัพธ์เป็น 2.6.22-686-smp
สิ่งที่จะ build
นอกจาก kernel_image แล้ว make-kpkg ยังสามารถ build แพกเกจอื่นได้อีก โดยสั่งเป็นอาร์กิวเมนต์ในบรรทัดคำสั่ง เช่น modules_imageในกรณีที่ติดตั้งแพกเกจซอร์สของมอดูลของเคอร์เนล (เช่น sl-modem-source) ซึ่งเมื่อแตก tarball แล้ว จะติดตั้งตัวเองไว้ที่ /usr/src/modules เมื่อสั่ง make-kpkg modules_image จะไปคอมไพล์และสร้าง deb ของแพกเกจเหล่านั้น แต่หลังจากมีแพกเกจ module-assistant แล้ว วิธีนี้เริ่มจะเลิกใช้กันแล้วเหมือนกันkernel_headersใช้สร้างแพกเกจ linux-headers-version ซึ่งจะติดตั้งเฉพาะ header สำหรับการคอมไพล์มอดูล แพกเกจนี้จำเป็นเมื่อคุณคอมไพล์เคอร์เนลแจกจ่ายชาวบ้านเท่านั้น ถ้าคุณคอมไพล์ใช้เอง การมีซอร์สของเคอร์เนลอยู่ ก็ถือว่าเหลือเฟือkernel_sourceใช้สร้างแพกเกจ linux-source-version อาจจะได้ใช้เมื่อคุณคอมไพล์เคอร์เนลที่มีการแพตช์เพิ่มเพื่อแจกจ่ายชาวบ้าน แล้วอยากให้เขา build เองได้ด้วย มีอีกเพียบ แต่โดยสรุปแล้ว เรามักได้ใช้อยู่สอง target คือ clean และ kernel_image
การตั้งค่าการคอมไพล์
คุณสามารถตั้งค่าของการคอมไพล์ของ make-kpkg ได้ที่แฟ้ม /etc/kernel-pkg.conf หรือ ~/.kernel-pkg.conf ค่าที่น่าสนใจได้แก่: maintainerกำหนดชื่อผู้สร้างแพกเกจ ซึ่งคุณควรเปลี่ยนเป็นชื่อคุณ ถ้าจะ build package แจกจ่ายemailที่อยู่เมลของคุณ ซึ่งจะใช้กำกับต่อท้ายชื่อ maintainerpgpชื่อของลายเซ็น PGP ของคุณ ในกรณีที่ต้องการเซ็นกำกับแพกเกจที่สร้าง สำหรับค่าอื่นๆ อ่านรายละเอียดการตั้งค่าได้ที่ /usr/share/doc/kernel-package/README.gz เอกสาร
- Debian Reference หัวข้อ 2.7 และ บทที่ 7
- BuildYourOwnKernel จาก Debian Wiki
- make-kpkg (1)
- /usr/share/doc/kernel-image/README.gz
Credit : http://debianclub.org/node/9
WARNING
![]()
คำเตือน: นี่คือกระทู้เก่าแล้ว
การสนทนานี้เป็นที่เก่ากว่า 90 วัน ข้อมูลที่ปรากฏอยู่ในนั้นอาจไม่เป็นปัจจุบัน
กระทู้อื่นๆล่าสุดในฟอรั่มเดียวกันนี้:
- [ออกใหม่] Mac OS X 10.7.3 Update 02/02/2012 03:56:17
- [วิธีทำ] UniBeast: Install Mac OS X Lion Using an All-In-One Bootable USB Drive 20/11/2011 02:20:05
- [ออกใหม่] [MAC]OS X Lion Update 10.7.2 Client Combo 15/10/2011 08:20:34
- [วิธีทำ] [MAC]วิธีการทำ Lion USB Installer Step by Step 29/09/2011 07:18:45
- [ออกใหม่] Mac OS X Lion 10.7 - 10.7.2 และ 10.6.8 (update) รวม Direct Link และ Bittorrent 11/09/2011 06:35:20

































LinkBack URL
About LinkBacks


อ้างอิงข้อความ