ฉันต้องการลองใช้เคอร์เนลที่นอกเหนือจากที่ distro ของฉันจัดหาให้ไม่ว่าจะจากที่อื่นหรือปรับแต่งตามความต้องการของฉัน มันยากหรืออันตรายไหม
ฉันจะเริ่มที่ไหน
ฉันต้องการลองใช้เคอร์เนลที่นอกเหนือจากที่ distro ของฉันจัดหาให้ไม่ว่าจะจากที่อื่นหรือปรับแต่งตามความต้องการของฉัน มันยากหรืออันตรายไหม
ฉันจะเริ่มที่ไหน
คำตอบ:
การสร้างเคอร์เนลแบบกำหนดเองอาจใช้เวลานาน - ส่วนใหญ่อยู่ในการกำหนดค่าเนื่องจากคอมพิวเตอร์สมัยใหม่สามารถสร้างบิลด์ได้ในเวลาไม่กี่นาที - แต่ก็ไม่อันตรายอย่างยิ่งหากคุณเก็บเคอร์เนลปัจจุบันของคุณและตรวจสอบให้แน่ใจว่าได้ปล่อยไว้ เป็นตัวเลือกผ่าน bootloader ของคุณ (ดูขั้นตอนที่ 6 ด้านล่าง) วิธีนี้หากเครื่องใหม่ของคุณใช้งานไม่ได้คุณสามารถรีบูตเครื่องเก่าได้
ในคำแนะนำต่อไปนี้เส้นทางภายในต้นไม้แหล่งที่มาใช้รูปแบบ[src]/whatever
ที่อยู่ในไดเรกทอรีที่คุณติดตั้งแหล่งที่มาลงเช่น[src]
/usr/src/linux-3.13.3
คุณอาจต้องการทำสิ่งนี้su root
เนื่องจากซอร์สต้นไม้ควรมีความปลอดภัยในแง่ของสิทธิ์การเขียน (ควรเป็นเจ้าของโดย root)
ในขณะที่บางขั้นตอนเป็นทางเลือกคุณควรอ่านต่อไปเนื่องจากมีข้อมูลที่จำเป็นในการทำความเข้าใจกระบวนการที่เหลือ
ดาวน์โหลดและแกะแหล่ง tarball
เหล่านี้ได้จากkernel.org รายการล่าสุดแสดงอยู่ที่หน้าแรก แต่ถ้าคุณดูใน/pub/
ไดเรกทอรีคุณจะพบว่าไฟล์เก็บถาวรกลับไปเป็นเวอร์ชั่น 1.0 ถ้าคุณไม่มีเหตุผลพิเศษที่จะทำอย่างอื่นคุณก็ควรเลือก "รุ่นล่าสุดที่มีเสถียรภาพ" ในขณะที่เขียนนี้เป็นtar.xz
ไฟล์74 MB
เมื่อดาวน์โหลด tarball แล้วคุณจะต้องแตกไฟล์ออกจากที่ใดที่หนึ่ง /usr/src
สถานที่ปกติอยู่ใน วางไฟล์ไว้ที่นั่นและ:
tar -xJf linux-X.X.X.tar.xz
โปรดทราบว่าแต่ละ distros มักจะแนะนำให้คุณใช้หนึ่งในแพ็กเกจต้นทางแทนต้นวนิลา สิ่งนี้มีแพตช์เฉพาะ distro ซึ่งอาจจะหรือไม่สำคัญสำหรับคุณ นอกจากนี้ยังจะจับคู่เคอร์เนลรวมส่วนหัวที่ใช้ในการรวบรวมเครื่องมือ userspace บางส่วนแม้ว่าพวกเขาจะเหมือนกันมากที่สุดอยู่แล้ว
ใน 15 ปีของการสร้างเมล็ดที่กำหนดเอง (ส่วนใหญ่ใน Fedora / Debian / Ubuntu) ฉันไม่เคยมีปัญหาในการใช้แหล่งวานิลลา1 การทำเช่นนั้นไม่ได้สร้างความแตกต่างมากนักอย่างไรก็ตามนอกเหนือจากความจริงที่ว่าถ้าคุณต้องการเคอร์เนลล่าสุดที่แน่นอน distro ของคุณอาจยังไม่ได้บรรจุมัน ดังนั้นเส้นทางที่ปลอดภัยที่สุดคือยังคงใช้แพคเกจ distro /usr/src
ซึ่งควรติดตั้งลงใน ฉันชอบคอกม้าที่มีเสถียรภาพล่าสุดดังนั้นฉันจึงสามารถทำตัวเป็นหนูตะเภาก่อนที่มันจะถูกปล่อยออกไปสู่ distros :)
เริ่มต้นด้วยการกำหนดค่าพื้นฐาน [เลือกได้]
คุณไม่ต้องทำสิ่งนี้ - คุณสามารถดำน้ำได้ทันทีและสร้างการกำหนดค่าตั้งแต่เริ่มต้น อย่างไรก็ตามหากคุณไม่เคยทำมาก่อนคาดหวังว่าจะมีการลองผิดลองถูกมากมาย นอกจากนี้ยังหมายถึงต้องอ่านตัวเลือกส่วนใหญ่ (มีหลายร้อย) ทางออกที่ดีกว่าคือการใช้การกำหนดค่าที่มีอยู่ของคุณถ้ามี หากคุณใช้แพ็กเกจ distro source อาจมี[src]/.config
ไฟล์อยู่แล้วดังนั้นคุณสามารถใช้มันได้ /proc/config.gz
มิฉะนั้นการตรวจสอบหา นี่เป็นคุณสมบัติเสริมที่เพิ่มเข้ามาในเคอร์เนล 2.6 gunzip -c config.gz > .config
ถ้ามันมีอยู่แล้วคัดลอกที่เป็นระดับบนสุดของต้นไม้แหล่งที่มาและ
หากไม่มีอยู่อาจเป็นเพราะตัวเลือกนี้ได้รับการกำหนดค่าเป็นโมดูล ลองsudo modprobe configs
แล้วตรวจสอบ/proc
ไดเรกทอรีconfig.gz
อีกครั้ง
การปรับตั้งค่า distro นั้นไม่เหมาะอย่างยิ่งในแง่ที่ว่ามันมีไดรเวอร์ฮาร์ดแวร์เกือบทุกตัวที่เป็นไปได้ สิ่งนี้ไม่สำคัญกับการทำงานของเคอร์เนลมากนักเนื่องจากเป็นโมดูลและส่วนใหญ่จะไม่เคยใช้ แต่จะเพิ่มเวลาในการสร้างอย่างมาก นอกจากนี้ยังเป็นที่น่าอึดอัดใจที่จะต้องมี initramfs เพื่อให้มีโมดูลหลักบางอย่าง (ดูขั้นตอนที่ 4 ด้านล่าง) อย่างไรก็ตามอาจเป็นจุดเริ่มต้นที่ดีกว่าค่าเริ่มต้น
โปรดทราบว่าตัวเลือกการกำหนดค่าจะเลื่อนและเปลี่ยนจากรุ่นเคอร์เนลหนึ่งไปเป็นเวอร์ชันถัดไปและเมื่อคุณรันหนึ่งในmake config
โปรแกรมด้านล่างโปรแกรม.config
จะแยกวิเคราะห์และอัปเดตก่อนเพื่อให้ตรงกับเวอร์ชันใหม่ หากการกำหนดค่ามาจากรุ่นเก่าที่กว้างใหญ่สิ่งนี้อาจนำไปสู่ผลลัพธ์ที่แปลกประหลาดดังนั้นโปรดใส่ใจเมื่อคุณทำการกำหนดค่า AFAIK มันจะไม่ทำงานในทางตรงกันข้าม (ใช้การกำหนดค่าจากเวอร์ชั่นที่ใหม่กว่า)
สร้าง.config
uration
[src]/.config
เป็นไฟล์ข้อความที่ใช้ในการกำหนดค่าเคอร์เนล อย่าแก้ไขไฟล์นี้โดยตรง ตัวเลือกการเปลี่ยนมักจะไม่ใช่เรื่องง่ายในการแทนที่Y
ด้วยN
, ฯลฯ ; มักจะมีชุดของการพึ่งพาซึ่งกันและกันและความเป็นไปได้แตกแขนง แต่คุณต้องการใช้หนึ่งในเป้าหมายการกำหนดค่าจากเคอร์เนล makefile (หมายถึงให้ป้อนmake _____
บนบรรทัดคำสั่งจากไดเรกทอรีแหล่งระดับบนสุด):
make config
เป็นขั้นพื้นฐานที่สุด แต่อาจไม่ถึงกับรสนิยมของคนส่วนใหญ่ มันเป็นชุดคำถาม - คำถามมากมาย - และถ้าคุณเปลี่ยนใจคุณต้องเริ่มใหม่อีกครั้ง
make oldconfig
ก็เหมือนmake config
ยกเว้นถ้าคุณมี.config
จากรุ่นก่อนหน้าจะข้ามคำถามยกเว้นที่เกี่ยวข้องกับตัวเลือกใหม่ ยังมีอีกหลายคนและส่วนใหญ่จะไม่เกี่ยวข้องกับคุณดังนั้นฉันไม่แนะนำ
make menuconfig
เป็นวิธีที่ฉันชอบ (และฉันคิดว่าอีกคน) เป็นส่วนใหญ่ มันสร้างและดำเนินการอินเทอร์เฟซ TUI (เมนูสีที่จะทำงานบนเทอร์มินัล) สิ่งนี้ต้องการให้คุณมี-dev
แพ็คเกจสำหรับติดตั้ง ncurses มันอธิบายได้ด้วยตนเองอย่างเป็นธรรมยกเว้นการค้นหาที่สามารถเข้าถึงได้ผ่านทาง/
; F1 "ความช่วยเหลือ" ให้คำอธิบายสำหรับตัวเลือกปัจจุบัน มีเวอร์ชั่นอื่นmake nconfig
พร้อมด้วยคุณสมบัติพิเศษบางอย่างซึ่ง F2 "syminfo" นั้นเทียบเท่ากับ menuconfig ของ F1
make xconfig
เป็นส่วนต่อประสาน GUI เต็มรูปแบบ สิ่งนี้ต้องการqmake
และ-dev
แพคเกจสำหรับ Qt นั้นได้รับการติดตั้งอีกครั้งซึ่งเป็นโปรแกรมที่รวบรวมและสร้างขึ้นมา หากคุณไม่ได้ใช้สิ่งเหล่านี้มาก่อนหน้านี้นั่นอาจเป็นการดาวน์โหลดที่สำคัญ เหตุผลที่ฉันชอบmenuconfig
รุ่น GUI คือลำดับชั้นของออปชั่นที่นำเสนอโดยใช้หน้าจอที่ต่อเนื่องกันในอดีต
หนึ่งในสิ่งแรกที่คุณควร (แต่ไม่จำเป็นต้องทำ) คือการเพิ่มสตริง "Local version" (ภายใต้การตั้งค่าทั่วไป ) เหตุผลของเรื่องนี้ถูกกล่าวถึงใน # 5 ด้านล่าง
"Labyrinthine" เป็นวิธีที่ดีในการอธิบายลำดับชั้นของตัวเลือกและการได้รับรายละเอียดอย่างละเอียดเกินขอบเขตของคำถามและคำตอบเช่นนี้ หากคุณต้องการที่จะนั่งลงและทำทุกอย่างให้จัดสรรเวลาไว้ Greg Kroah-Hartman (เป็นผู้นำการพัฒนาเคอร์เนล linux เป็นเวลานาน) มีหนังสือออนไลน์ฟรีเกี่ยวกับเคอร์เนล (ดูอ้างอิงด้านล่าง) ซึ่งมีบทเกี่ยวกับการกำหนดค่าแม้ว่ามันจะถูกเขียนในปี 2549 คำแนะนำของฉันคือเริ่มต้นด้วยฐานที่สมเหตุสมผล จาก distro kernel ปัจจุบันของคุณ (ตาม # 2) จากนั้นดำเนินการตามนั้นและยกเลิกการเลือกทุกสิ่งที่คุณรู้ว่าคุณไม่ต้องการ คุณอาจจะต้องการเปลี่ยนตัวเลือก "โมดุล" บางตัวเป็น "บิวท์อิน" ซึ่งจะพาเราไปยังจุดต่อไปของฉัน ...
เกี่ยวกับinitramfs
[ตัวเลือก]
"initramfs" เป็นระบบไฟล์บีบอัดที่สร้างขึ้นในเคอร์เนลและ / หรือโหลดในเวลาบูต วัตถุประสงค์หลักของมันคือการรวมโมดูลที่เคอร์เนลจะต้องใช้ก่อนที่จะสามารถเข้าถึงโมดูลเหล่านั้น/lib/modules
บนระบบไฟล์รูท - เช่นไดรเวอร์สำหรับอุปกรณ์ที่มีระบบไฟล์นั้น Distros มักใช้สิ่งเหล่านี้เพียงบางส่วนเนื่องจากไดรเวอร์ไม่สามารถใช้ร่วมกันได้ดังนั้นจึงไม่สามารถสร้างได้ทั้งหมดในเคอร์เนล initramfs
แต่คนที่เหมาะสมกับระบบปัจจุบันได้รับการคัดเลือกจากภายใน
วิธีนี้ใช้งานได้ดีและไม่ได้แสดงถึงความเสียเปรียบใด ๆ แต่อาจเป็นภาวะแทรกซ้อนที่ไม่จำเป็นเมื่อสร้างเคอร์เนลของคุณเอง 2 การดักจับคือถ้าคุณไม่ใช้ initramfs คุณต้องตรวจสอบให้แน่ใจว่าไดรเวอร์สำหรับระบบไฟล์รูทของคุณ (และอุปกรณ์ที่เปิดอยู่) ติดตั้งอยู่ในเคอร์เนล ในmenuconfig
นี่คือความแตกต่างระหว่างM
ตัวเลือก (= โมดูล) และตัวเลือก*
(= ในตัว) หากคุณไม่ได้รับสิทธินี้ระบบจะล้มเหลวก่อนในกระบวนการบู๊ต ดังนั้นหากคุณมีฮาร์ดไดรฟ์ SATA และระบบไฟล์รูท ext4 คุณจำเป็นต้องมีไดร์เวอร์สำหรับอุปกรณ์ในตัว [หากใครสามารถนึกถึงสิ่งอื่นที่เป็นสิ่งที่ไม่ควรพลาดให้แสดงความคิดเห็นและฉันจะรวมที่นี่]
หากคุณไม่ต้องการใช้initramfs
คุณจะต้องเลือกตัวเลือกที่เหมาะสมในการติดตั้งทั่วไป มีคู่มือในการสร้างโครงกระดูกเป็นหนึ่งที่สร้างขึ้นในเคอร์เนลใน[src]/Documentation/filesystems/ramfs-rootfs-initramfs.txt
แต่ทราบว่า distros ไม่ทำเช่นนี้; พวกเขาใช้ไฟล์ cpio ภายนอก gzipped อย่างไรก็ตามเอกสารดังกล่าวมีการอภิปรายในสิ่งที่ควรไปในinitramfs
(ดู "เนื้อหาของ initramfs")
สร้างและติดตั้งเคอร์เนล
ขั้นตอนต่อไปนั้นง่าย เพื่อให้เคอร์เนลเพียงแค่เรียกใช้make
ใน[src]
ไดเรกทอรี ถ้าคุณอยู่ในระบบแบบ multi-core คุณสามารถเพิ่ม-j N
ความเร็วสิ่งขึ้นซึ่งN
เป็นจำนวนของแกนที่คุณต้องการที่จะอุทิศ + 1 ไม่มีหรือtest
หลังจากที่ทำคุณสามารถcheck
make modules
ในกล่องที่รวดเร็วทั้งหมดนี้ใช้เวลา <10 นาที
ถ้าทุกอย่างเป็นไปด้วยดีmake INSTALL_MOD_STRIP=1 modules_install
. สิ่งนี้จะสร้างไดเรกทอรีในการ/lib/modules
จับคู่หมายเลขเวอร์ชันของเคอร์เนลบวกกับสตริง "Local version" ที่กล่าวถึงในขั้นตอนที่ 3 หากมี หากคุณไม่ได้ใช้สตริง "Local version" โปรดระมัดระวังหากคุณมีเคอร์เนลของเวอร์ชันเดียวกันกับที่คุณอ้างอิงเนื่องจากโมดูลเหล่านี้จะแทนที่สตริงเหล่านั้น 3 INSTALL_MOD_STRIP=1
เป็นตัวเลือกสำหรับการอย่างมีนัยสำคัญดูที่นี่
จากนั้นคุณสามารถmake install
ติดตั้งเคอร์เนลไปยังตำแหน่งเริ่มต้น อย่างไรก็ตามคำแนะนำของฉันคือทำด้วยตัวเองเพื่อให้แน่ใจว่าไม่มีไฟล์ที่มีอยู่ถูกเขียนทับ ดูใน[src]/arch/[ARCH]/boot
แฟ้มชื่อbzImage
4ที่[ARCH]
คือx86
ถ้าคุณอยู่บน x86 หรือเครื่อง x86-64 (และอย่างอื่นถ้าคุณอยู่ในบางสิ่งบางอย่างอื่น) คัดลอกสิ่งนั้นลงใน/boot
และเปลี่ยนชื่อเป็นสิ่งที่เฉพาะเจาะจงและมีข้อมูลมากขึ้น (ไม่สำคัญว่าอะไร) ทำสิ่งเดียวกันด้วย[src]/System.map
แต่เปลี่ยนชื่อตามรูปแบบต่อไปนี้:
System.map-[VERSION]
ที่นี่[VERSION]
เป็นที่แน่นอนเช่นเดียวกับชื่อของไดเรกทอรีในที่/lib/modules
สร้างขึ้นโดยmake modules_install
ซึ่งจะรวมถึงรุ่น "ท้องถิ่น" System.map-3.13.3-mykernel
สตริงเช่น
กำหนดค่า bootloader ของ GRUB 2
หากคุณไม่ได้ใช้งานgrub
(ผู้ใช้เดสก์ท็อปส่วนใหญ่เป็น linux) สิ่งนี้ไม่เหมาะกับคุณ คุณควรมี/etc/grub.d/40_custom
ไฟล์ที่มีไม่มาก หากไม่ใช่ให้สร้างโดย root และchmod 755
(ต้องสามารถเรียกใช้งานได้) เพื่อเพิ่มที่:
menuentry 'My new kernel, or whatever' {
set root='hd0,1'
linux /boot/[name-of-kernel] root=/dev/sda1 [other kernel options]
}
หากคุณกำลังใช้ initramfs initrd /path/to/initramfs
คุณควรจะมีบรรทัดสุดท้าย ระวังset root=
เส้น ตัวอย่างจะทำการติดตั้งด้วงลงบนพาร์ติชั่นแรกของฮาร์ดไดรฟ์ตัวแรก (hd0,1) หากคุณมีหลายไดรฟ์คุณอาจต้องการใช้พาร์ติชัน UUID แทนและแทนที่บรรทัดนั้นด้วย:
search --no-floppy --fs-uuid --set=root [the UUID of the partition]
ยกเว้นว่าด้วงไม่ได้อยู่ในระบบไฟล์รูทของคุณสิ่งนี้ก็ควรสอดคล้องกับroot=
คำสั่งในlinux
บรรทัดซึ่งระบุระบบไฟล์รูทของคุณ (อันที่มี/sbin/init
และ/lib/modules
) รุ่น UUID root=UUID=[the UUID]
ที่เป็น
คุณสามารถดู/boot/grub2/grub.cfg
เงื่อนงำเกี่ยวกับชื่ออุปกรณ์ที่มีอยู่ของคุณ ต่อไปนี้เป็นคำแนะนำโดยย่อเกี่ยวกับเรื่องนี้ภายใต้ด้วง 2 เมื่อคุณมีความสุขแล้วให้รันgrub2-mkconfig -o /boot/grub2/grub.cfg
(แต่สำรองข้อมูลปัจจุบันของคุณgrub.cfg
ก่อน) จากนั้นคุณอาจต้องการแก้ไขไฟล์นั้นและย้ายรายการของคุณไปด้านบน มันก็ยังคงควรมีรายการสำหรับเก่า (ที่ทำงาน) เคอร์เนลของคุณและ distro ของคุณอาจมีกลไกที่ซ้ำรายการสำหรับ kernel ใหม่โดยอัตโนมัติ A (เพราะมันถูกพบใน/boot
; Fedora ไม่นี้จึงใช้ชื่อที่แตกต่างกันกับการmenuentry
เป็น ความคิดที่ดี). คุณสามารถลบได้ในภายหลังหากทุกอย่างเป็นไปด้วยดี
นอกจากนี้คุณยังสามารถแทรกmenuentry
ลงในgrub.cfg
โดยตรง แต่ distros บางอย่างจะเขียนทับสิ่งนี้เมื่อเคอร์เนลของพวกเขามีการปรับปรุง (ในขณะที่การใช้/etc/grub.d/
จะทำให้มันรวมอยู่)
แค่นั้นแหละ. สิ่งที่คุณต้องทำตอนนี้คือรีบูต หากไม่ได้ผลให้ลองและสรุปปัญหาจากหน้าจอรีบูตการเลือกเคอร์เนลเก่าและกลับไปที่ขั้นตอนที่ 3 (ยกเว้นใช้ที่.config
คุณมีอยู่แล้วบิดที่) อาจเป็นความคิดที่ดีที่จะmake clean
(หรือmake mrproper
) ระหว่างความพยายามแต่ให้แน่ใจว่าคุณคัดลอก[src]/.config
ไปที่การสำรองข้อมูลก่อนเพราะมันจะถูกลบ สิ่งนี้ช่วยให้มั่นใจได้ว่าวัตถุที่ใช้ในกระบวนการสร้างจะไม่เหม็นอับ
เกี่ยวกับส่วนหัวของเคอร์เนลและ อัล
สิ่งหนึ่งที่คุณควรทำคือ symlink ( ln -s -i
) /lib/modules/X.X.X/source
และ/lib/modules/X.X.X/build
ไปยัง/usr/src
ไดเรกทอรีที่ต้นไม้ต้นกำเนิดอยู่ (เก็บไว้) นี่เป็นสิ่งจำเป็นเพื่อให้เครื่องมือ userspace บางตัว (และตัวติดตั้งไดรเวอร์ของบุคคลที่สาม) สามารถเข้าถึงซอร์สสำหรับเคอร์เนลที่กำลังรันอยู่
ปัญหาที่เกี่ยวข้องกับการนี้.h
ไฟล์ใน/usr/include
ฯลฯ การเปลี่ยนแปลงเหล่านี้มากเรื่อย ๆ และมีความเข้ากันได้ คุณมีสองทางเลือก:
ปล่อยให้คนที่ใช้โดย distro ของคุณ หากคุณอัปเดตทั้งระบบเป็นประจำ distro จะติดตั้งระบบใหม่เป็นระยะ ๆ ดังนั้นนี่คือตัวเลือก "รบกวนน้อยที่สุด"
make headers_install
ใช้
เนื่องจากมันเข้ากันได้ย้อนหลัง (หมายถึง "โปรแกรมที่สร้างขึ้นกับไลบรารี C ที่ใช้ส่วนหัวเคอร์เนลเก่าควรรันบนเคอร์เนลที่ใหม่กว่า") คุณไม่จำเป็นต้องยุ่งเกี่ยวกับเรื่องนี้มากเกินไป ปัญหาที่อาจเกิดขึ้นก็จะเป็นแค่ถ้าคุณสร้างเคอร์เนลที่กำหนดเองและเก็บไว้ในขณะที่ช่วงเวลาที่ distro จะอัพเดต "เคอร์เนลส่วนหัวของแพ็กเกจ" ไปยังที่ใหม่กว่ารุ่นกว่าใช้ในการสร้างเคอร์เนลของคุณและมีจะออกมาเป็นบางส่วน ความไม่ลงรอยกัน (ซึ่งจะใช้กับซอฟต์แวร์ที่รวบรวมจากแหล่งที่มาในภายหลังเท่านั้น)
นี่คือทรัพยากรบางส่วน:
[src]/README
รวมถึงคำแนะนำสั้น ๆ เกี่ยวกับการสร้างและติดตั้ง
[src]/Documentation
ไดเรกทอรีมีข้อมูลจำนวนมากที่อาจเป็นประโยชน์ในการกำหนดค่า
เคอร์เนลลินุกซ์ของเกร็ก KH ส่วนมากในหนังสือสรุป (มีให้ฟรีเหมือนชุดไฟล์ PDF) หมุนรอบการสร้างเคอร์เนล
1. "วานิลลา" หมายถึงต้นฉบับอย่างเป็นทางการที่ไม่ได้รับการชำระบริสุทธิ์อย่างที่พบใน kernel.org distros ส่วนใหญ่ใช้แหล่งที่มาของวานิลลาและเพิ่มการปรับแต่งเล็กน้อย
2. โปรดทราบว่ามีสถานการณ์ที่จำเป็นต้องมี initramfs เนื่องจากจำเป็นต้องใช้ userspace บางตัวเพื่อติดตั้งระบบไฟล์รูท - ตัวอย่างเช่นหากมีการเข้ารหัสหรือแพร่กระจายไปทั่วอาเรย์ RAID ที่ซับซ้อน
3. จะไม่ลบโมดูลที่มีอยู่แล้วหากคุณไม่ได้สร้างขึ้นมาซึ่งหมายความว่าคุณสามารถเพิ่มโมดูลได้ในภายหลังโดยเพียงแค่ปรับเปลี่ยนการกำหนดค่าของคุณและทำงานmake modules_install
อีกครั้ง โปรดทราบว่าการสร้างโมดูลบางตัวอาจต้องการการเปลี่ยนแปลงเคอร์เนลเองซึ่งในกรณีนี้คุณต้องแทนที่เคอร์เนลด้วย คุณจะสามารถบอกได้เมื่อคุณพยายามใช้modprobe
เพื่อแทรกโมดูล
4. ไฟล์นี้อาจมีชื่อที่ต่างออกไปถ้าคุณใช้ตัวเลือกการบีบอัดที่ไม่ได้มาตรฐาน ฉันไม่แน่ใจว่าสิ่งที่เป็นไปได้ทั้งหมด
initramfs
ควรใช้เกือบทุกครั้ง เช่นการตั้งค่า rootfs บน LVM + RAID มักจะต้องใช้ รากที่เข้ารหัสจะทำอย่างแน่นอน แม้การตั้งค่า RAID ที่ซับซ้อนจะทำ ในเคอร์เนลอัตโนมัติแม้การชุมนุมของอาร์เรย์ที่น่ารำคาญจะเลิกจริง ...
initramfs
คือถ้าคุณไม่ต้องการใช้งานคุณไม่จำเป็นต้องทำสิ่งนี้และทำให้กระบวนการง่ายขึ้น อย่างไรก็ตามฉันได้เพิ่มเชิงอรรถเกี่ยวกับการเข้ารหัสรูท FS ฯลฯ
localmodconfig
และเครื่องมือเช่นstreamline_config.pl
สคริปต์ วิธีการที่เป็นประโยชน์ในการทำงานจากการตั้งค่าที่มีอยู่ของคุณ ...