<ก่อนหน้านี้ | Contents | ถัดไป>
8.3.1. การติดตั้งเคอร์เนล
การสร้างเคอร์เนลเกี่ยวข้องกับไม่กี่ขั้นตอน—การกำหนดค่า การคอมไพล์ และการติดตั้ง อ่าน README ในแผนผังต้นทางของเคอร์เนลสำหรับวิธีการอื่นในการกำหนดค่าเคอร์เนลของหนังสือเล่มนี้
เตรียมการคอมไพล์โดยรันคำสั่งต่อไปนี้:
mrproper
mrproper
สิ่งนี้ทำให้มั่นใจได้ว่าต้นไม้เคอร์เนลนั้นสะอาดอย่างแน่นอน ทีมเคอร์เนลแนะนำให้ออกคำสั่งนี้ก่อนการรวบรวมเคอร์เนลแต่ละครั้ง อย่าพึ่งให้ทรีต้นทางสะอาดหลังจากยกเลิกการทาเครื่องหมาย
กำหนดค่าเคอร์เนลผ่านอินเทอร์เฟซที่ขับเคลื่อนด้วยเมนู สำหรับข้อมูลทั่วไปเกี่ยวกับคอนฟิกูเรชันเคอร์เนล โปรดดูที่ http://www. linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt BLFS มีข้อมูลบางอย่างเกี่ยวกับข้อกำหนดการกำหนดค่าเคอร์เนลเฉพาะของแพ็คเกจภายนอก LFS ที่ http://www.linuxfromscratch.org/blfs/view/9.0/ longindex.html#kernel-config-index ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าและการสร้างเคอร์เนลได้ที่ http://www.kroah.com/lkn/
หมายเหตุ
จุดเริ่มต้นที่ดีสำหรับการตั้งค่าการกำหนดค่าเคอร์เนลคือการเรียกใช้ ทำ defconfig. การดำเนินการนี้จะตั้งค่าคอนฟิกูเรชันพื้นฐานให้อยู่ในสถานะที่ดีซึ่งจะพิจารณาสถาปัตยกรรมระบบปัจจุบันของคุณ
ตรวจสอบให้แน่ใจว่าได้เปิด/ปิดการใช้งาน/ตั้งค่าคุณสมบัติต่อไปนี้ มิฉะนั้นระบบอาจทำงานไม่ถูกต้องหรือบู๊ตเลย:
ไดรเวอร์อุปกรณ์ --->
ตัวเลือกไดรเวอร์ทั่วไป --->
[ ] รองรับผู้ช่วย uevent [CONFIG_UEVENT_HELPER]
[*] รักษาระบบไฟล์ devtmpfs เพื่อเมาต์ที่ /dev [CONFIG_DEVTMPFS]
การแฮ็กเคอร์เนล --->
เลือกตัวคลายเคอร์เนล (ตัวชี้เฟรมที่คลายตัว) ---> [CONFIG_UNWINDE
มีตัวเลือกอื่น ๆ อีกหลายอย่างที่อาจต้องการขึ้นอยู่กับความต้องการของระบบ สำหรับรายการตัวเลือกที่จำเป็นสำหรับแพ็คเกจ BLFS โปรดดูดัชนี BLFS ของการตั้งค่าเคอร์เนล (http://www.linuxfromscratch.org/blfs/view/9.0/ longindex.html#kernel-config-index)
หมายเหตุ
หากฮาร์ดแวร์โฮสต์ของคุณใช้ UEFI ดังนั้น 'make defconfig' ด้านบนควรเพิ่มตัวเลือกเคอร์เนลที่เกี่ยวข้องกับ EFI โดยอัตโนมัติ
เพื่อให้เคอร์เนล LFS ของคุณสามารถบูตได้จากภายในสภาพแวดล้อมการบูต UEFI ของโฮสต์ เคอร์เนลของคุณต้องเลือกตัวเลือกนี้:
ประเภทโปรเซสเซอร์และคุณสมบัติ
[*]
--->
[CONFIG_EFI_STUB]
ประเภทโปรเซสเซอร์และคุณสมบัติ
[*]
รองรับ EFI ต้นขั้ว
รองรับ EFI ต้นขั้ว
คำอธิบายแบบเต็มของการจัดการสภาพแวดล้อม UEFI จากภายใน LFS ครอบคลุมโดยคำใบ้ lfs-uefi.txt ที่
http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt.
เหตุผลสำหรับรายการการกำหนดค่าข้างต้น:
รองรับผู้ช่วย uevent
การตั้งค่าตัวเลือกนี้อาจรบกวนการจัดการอุปกรณ์เมื่อใช้ Udev/Eudev
รักษา devtmpfs
สิ่งนี้จะสร้างโหนดอุปกรณ์อัตโนมัติซึ่งเติมโดยเคอร์เนล แม้จะไม่ได้ใช้งาน Udev ก็ตาม จากนั้น Udev จะทำงานเหนือสิ่งนี้ จัดการสิทธิ์และเพิ่มลิงก์เชื่อมโยง รายการการกำหนดค่านี้จำเป็นสำหรับผู้ใช้ Udev/Eudev ทุกคน
make menuconfig
make menuconfig
ความหมายของตัวเลือก make ตัวแปรสภาพแวดล้อม:
แลง= LC_ALL=
สิ่งนี้กำหนดการตั้งค่าโลแคลเป็นการตั้งค่าที่ใช้บนโฮสต์ อาจจำเป็นสำหรับ menuconfig ที่เหมาะสม ncurses การวาดเส้นอินเตอร์เฟสบนคอนโซลข้อความ UTF-8 linux
หากใช้อย่าลืมเปลี่ยน โดยมูลค่าของ $LANG ตัวแปรจากโฮสต์ของคุณ คุณสามารถใช้แทนค่าของโฮสต์เป็น $LC_ALL or $LC_CTYPE.
ติดต่อเราโดยตรง ทำให้ oldconfig อาจจะเหมาะสมกว่าในบางสถานการณ์ ดู README ไฟล์สำหรับข้อมูลเพิ่มเติม
หากต้องการ ให้ข้ามการกำหนดค่าเคอร์เนลโดยคัดลอกไฟล์กำหนดค่าเคอร์เนล .configจากระบบโฮสต์ (สมมติว่ามี) ไปจนถึงการคลายการแพ็ก ลินุกซ์ 5.2.8 ไดเร็กทอรี อย่างไรก็ตาม เราไม่แนะนำตัวเลือกนี้ มักจะเป็นการดีกว่าที่จะสำรวจเมนูการกำหนดค่าทั้งหมดและสร้างการกำหนดค่าเคอร์เนลตั้งแต่เริ่มต้น
รวบรวมภาพเคอร์เนลและโมดูล:
ทำ
ทำ
หากใช้โมดูลเคอร์เนล การกำหนดค่าโมดูลใน /etc/modprobe.d อาจจำเป็นต้องใช้ ข้อมูลที่เกี่ยวข้องกับโมดูลและการกำหนดค่าเคอร์เนลอยู่ในส่วนที่ 7.3 “ภาพรวมของการจัดการอุปกรณ์และโมดูล” และในเอกสารเคอร์เนลใน linux-5.2.8/เอกสารประกอบ ไดเร็กทอรี อีกด้วย, modprobe.d(5) อาจเป็นที่สนใจ
ติดตั้งโมดูล หากการกำหนดค่าเคอร์เนลใช้โมดูลเหล่านี้:
ทำ modules_install
ทำ modules_install
หลังจากคอมไพล์เคอร์เนลเสร็จสิ้น จำเป็นต้องมีขั้นตอนเพิ่มเติมเพื่อดำเนินการติดตั้งให้เสร็จสิ้น ไฟล์บางไฟล์จำเป็นต้องคัดลอกไปที่ / boot ไดเรกทอรี
คำเตือน
หากระบบโฮสต์มี /boot พาร์ติชันแยกต่างหาก ไฟล์ที่คัดลอกด้านล่างควรไปที่นั่น วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการผูก /boot บนโฮสต์ (นอก chroot) กับ /mnt/lfs/boot ก่อนดำเนินการต่อ ในฐานะผู้ใช้รูทใน ระบบโฮสต์:
คำเตือน
หากระบบโฮสต์มี /boot พาร์ติชันแยกต่างหาก ไฟล์ที่คัดลอกด้านล่างควรไปที่นั่น วิธีที่ง่ายที่สุดในการทำเช่นนี้คือการผูก /boot บนโฮสต์ (นอก chroot) กับ /mnt/lfs/boot ก่อนดำเนินการต่อ ในฐานะผู้ใช้รูทใน ระบบโฮสต์:
เมานต์ --bind /boot /mnt/lfs/boot
เมานต์ --bind /boot /mnt/lfs/boot
เส้นทางไปยังเคอร์เนลอิมเมจอาจแตกต่างกันไปขึ้นอยู่กับแพลตฟอร์มที่ใช้ ชื่อไฟล์ด้านล่างสามารถเปลี่ยนให้เหมาะกับรสนิยมของคุณได้ แต่ต้นกำเนิดของชื่อไฟล์ควรเป็น วมลินุซ เพื่อให้เข้ากันได้กับการตั้งค่าอัตโนมัติของกระบวนการบู๊ตที่อธิบายไว้ในหัวข้อถัดไป คำสั่งต่อไปนี้ถือว่าสถาปัตยกรรม x86:
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.2.8-lfs-9.0
cp -iv arch/x86/boot/bzImage /boot/vmlinuz-5.2.8-lfs-9.0
System.map เป็นไฟล์สัญลักษณ์สำหรับเคอร์เนล มันแมปจุดเข้าใช้งานฟังก์ชันของทุกฟังก์ชันในเคอร์เนล API เช่นเดียวกับที่อยู่ของโครงสร้างข้อมูลเคอร์เนลสำหรับเคอร์เนลที่ทำงานอยู่ มันถูกใช้เป็นทรัพยากรในการตรวจสอบปัญหาเคอร์เนล ออกคำสั่งต่อไปนี้เพื่อติดตั้งไฟล์แผนที่:
cp -iv System.map /boot/System.map-5.2.8
cp -iv System.map /boot/System.map-5.2.8
ไฟล์คอนฟิกูเรชันเคอร์เนล .config ผลิตโดย make menuconfig ขั้นตอนข้างต้นประกอบด้วยการเลือกการกำหนดค่าทั้งหมดสำหรับเคอร์เนลที่เพิ่งคอมไพล์ เป็นความคิดที่ดีที่จะเก็บไฟล์นี้ไว้เพื่อใช้อ้างอิงในอนาคต:
cp -iv .config /boot/config-5.2.8
cp -iv .config /boot/config-5.2.8
ติดตั้งเอกสารสำหรับเคอร์เนล Linux:
ติดตั้ง -d /usr/share/doc/linux-5.2.8
cp -r เอกสารประกอบ/* /usr/share/doc/linux-5.2.8
ติดตั้ง -d /usr/share/doc/linux-5.2.8
cp -r เอกสารประกอบ/* /usr/share/doc/linux-5.2.8
สิ่งสำคัญคือต้องสังเกตว่าไฟล์ในไดเร็กทอรีต้นทางเคอร์เนลไม่ได้เป็นเจ้าของโดย ราก. เมื่อใดก็ตามที่แพ็กเกจถูกแตกออกเป็นผู้ใช้ ราก (เช่นเดียวกับที่เราทำใน chroot) ไฟล์มี ID ผู้ใช้และกลุ่มของสิ่งที่พวกเขาอยู่ในคอมพิวเตอร์ของผู้จัดแพ็คเกจ ซึ่งปกติแล้วจะไม่เป็นปัญหาสำหรับการติดตั้งแพ็กเกจอื่นๆ เนื่องจากทรีต้นทางจะถูกลบออกหลังการติดตั้ง อย่างไรก็ตาม ต้นไม้ต้นทางของ Linux มักจะถูกเก็บไว้เป็นเวลานาน ด้วยเหตุนี้ จึงมีโอกาสที่ ID ผู้ใช้ใดๆ ที่ผู้จัดทำแพ็กเกจใช้จะถูกกำหนดให้กับใครบางคนในเครื่อง บุคคลนั้นจะมีสิทธิ์เขียนถึงแหล่งเคอร์เนล
หมายเหตุ
ในหลายกรณี คอนฟิกูเรชันของเคอร์เนลจะต้องได้รับการอัปเดตสำหรับแพ็คเกจที่จะติดตั้งในภายหลังใน BLFS ไม่เหมือนกับแพ็คเกจอื่น ๆ ไม่จำเป็นต้องลบต้นไม้ต้นทางเคอร์เนลหลังจากติดตั้งเคอร์เนลที่สร้างขึ้นใหม่
หากต้นไม้ต้นทางเคอร์เนลจะยังคงอยู่ ให้รัน ชาง -R 0:0 บน ลินุกซ์ 5.2.8 ไดเร็กทอรีเพื่อให้แน่ใจว่าไฟล์ทั้งหมดเป็นเจ้าของโดยผู้ใช้ ราก.
หมายเหตุ
ในหลายกรณี คอนฟิกูเรชันของเคอร์เนลจะต้องได้รับการอัปเดตสำหรับแพ็คเกจที่จะติดตั้งในภายหลังใน BLFS ไม่เหมือนกับแพ็คเกจอื่น ๆ ไม่จำเป็นต้องลบต้นไม้ต้นทางเคอร์เนลหลังจากติดตั้งเคอร์เนลที่สร้างขึ้นใหม่
หากต้นไม้ต้นทางเคอร์เนลจะยังคงอยู่ ให้รัน ชาง -R 0:0 บน ลินุกซ์ 5.2.8 ไดเร็กทอรีเพื่อให้แน่ใจว่าไฟล์ทั้งหมดเป็นเจ้าของโดยผู้ใช้ ราก.
การเตือน
เอกสารเคอร์เนลบางตัวแนะนำให้สร้าง symlink จาก /usr/src/ลินุกซ์ ชี้ไปที่ไดเร็กทอรีซอร์สเคอร์เนล เป็นข้อมูลเฉพาะสำหรับเมล็ดก่อนรุ่น 2.6 และ จะต้องไม่ ถูกสร้างขึ้นบนระบบ LFS เนื่องจากอาจทำให้เกิดปัญหากับแพ็คเกจที่คุณอาจต้องการสร้างเมื่อระบบ LFS พื้นฐานของคุณเสร็จสมบูรณ์
การเตือน
เอกสารเคอร์เนลบางตัวแนะนำให้สร้าง symlink จาก /usr/src/ลินุกซ์ ชี้ไปที่ไดเร็กทอรีซอร์สเคอร์เนล เป็นข้อมูลเฉพาะสำหรับเมล็ดก่อนรุ่น 2.6 และ จะต้องไม่ ถูกสร้างขึ้นบนระบบ LFS เนื่องจากอาจทำให้เกิดปัญหากับแพ็คเกจที่คุณอาจต้องการสร้างเมื่อระบบ LFS พื้นฐานของคุณเสร็จสมบูรณ์
การเตือน
ส่วนหัวในระบบ's ประกอบด้วย ไดเรกทอรี (/ usr / รวม) ควร เสมอ เป็นคนที่รวบรวม Glibc นั่นคือส่วนหัวที่ถูกสุขลักษณะซึ่งติดตั้งในส่วน 6.7 “ส่วนหัวของ Linux-5.2.8 API” ดังนั้นพวกเขาจึงควร ไม่เคย ถูกแทนที่ด้วยส่วนหัวของเคอร์เนลแบบ raw หรือเคอร์เนลอื่น ๆ ที่ล้างส่วนหัว
การเตือน
ส่วนหัวในระบบ's ประกอบด้วย ไดเรกทอรี (/ usr / รวม) ควร เสมอ เป็นคนที่รวบรวม Glibc นั่นคือส่วนหัวที่ถูกสุขลักษณะซึ่งติดตั้งในส่วน 6.7 “ส่วนหัวของ Linux-5.2.8 API” ดังนั้นพวกเขาจึงควร ไม่เคย ถูกแทนที่ด้วยส่วนหัวของเคอร์เนลแบบ raw หรือเคอร์เนลอื่น ๆ ที่ล้างส่วนหัว