เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | 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 หรือเคอร์เนลอื่น ๆ ที่ล้างส่วนหัว


ภาพ

ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: