การกำหนดค่าการรวบรวมและการติดตั้งเคอร์เนล Linux ที่กำหนดเอง


38

ฉันต้องการลองใช้เคอร์เนลที่นอกเหนือจากที่ distro ของฉันจัดหาให้ไม่ว่าจะจากที่อื่นหรือปรับแต่งตามความต้องการของฉัน มันยากหรืออันตรายไหม

ฉันจะเริ่มที่ไหน

คำตอบ:


51

การสร้างเคอร์เนลแบบกำหนดเองอาจใช้เวลานาน - ส่วนใหญ่อยู่ในการกำหนดค่าเนื่องจากคอมพิวเตอร์สมัยใหม่สามารถสร้างบิลด์ได้ในเวลาไม่กี่นาที - แต่ก็ไม่อันตรายอย่างยิ่งหากคุณเก็บเคอร์เนลปัจจุบันของคุณและตรวจสอบให้แน่ใจว่าได้ปล่อยไว้ เป็นตัวเลือกผ่าน bootloader ของคุณ (ดูขั้นตอนที่ 6 ด้านล่าง) วิธีนี้หากเครื่องใหม่ของคุณใช้งานไม่ได้คุณสามารถรีบูตเครื่องเก่าได้

ในคำแนะนำต่อไปนี้เส้นทางภายในต้นไม้แหล่งที่มาใช้รูปแบบ[src]/whateverที่อยู่ในไดเรกทอรีที่คุณติดตั้งแหล่งที่มาลงเช่น[src] /usr/src/linux-3.13.3คุณอาจต้องการทำสิ่งนี้su rootเนื่องจากซอร์สต้นไม้ควรมีความปลอดภัยในแง่ของสิทธิ์การเขียน (ควรเป็นเจ้าของโดย root)

ในขณะที่บางขั้นตอนเป็นทางเลือกคุณควรอ่านต่อไปเนื่องจากมีข้อมูลที่จำเป็นในการทำความเข้าใจกระบวนการที่เหลือ

  1. ดาวน์โหลดและแกะแหล่ง 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 :)

  2. เริ่มต้นด้วยการกำหนดค่าพื้นฐาน [เลือกได้]

    คุณไม่ต้องทำสิ่งนี้ - คุณสามารถดำน้ำได้ทันทีและสร้างการกำหนดค่าตั้งแต่เริ่มต้น อย่างไรก็ตามหากคุณไม่เคยทำมาก่อนคาดหวังว่าจะมีการลองผิดลองถูกมากมาย นอกจากนี้ยังหมายถึงต้องอ่านตัวเลือกส่วนใหญ่ (มีหลายร้อย) ทางออกที่ดีกว่าคือการใช้การกำหนดค่าที่มีอยู่ของคุณถ้ามี หากคุณใช้แพ็กเกจ 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 มันจะไม่ทำงานในทางตรงกันข้าม (ใช้การกำหนดค่าจากเวอร์ชั่นที่ใหม่กว่า)

  1. สร้าง.configuration

    [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) จากนั้นดำเนินการตามนั้นและยกเลิกการเลือกทุกสิ่งที่คุณรู้ว่าคุณไม่ต้องการ คุณอาจจะต้องการเปลี่ยนตัวเลือก "โมดุล" บางตัวเป็น "บิวท์อิน" ซึ่งจะพาเราไปยังจุดต่อไปของฉัน ...

  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")

  3. สร้างและติดตั้งเคอร์เนล

    ขั้นตอนต่อไปนั้นง่าย เพื่อให้เคอร์เนลเพียงแค่เรียกใช้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แฟ้มชื่อbzImage4ที่[ARCH]คือx86ถ้าคุณอยู่บน x86 หรือเครื่อง x86-64 (และอย่างอื่นถ้าคุณอยู่ในบางสิ่งบางอย่างอื่น) คัดลอกสิ่งนั้นลงใน/bootและเปลี่ยนชื่อเป็นสิ่งที่เฉพาะเจาะจงและมีข้อมูลมากขึ้น (ไม่สำคัญว่าอะไร) ทำสิ่งเดียวกันด้วย[src]/System.mapแต่เปลี่ยนชื่อตามรูปแบบต่อไปนี้:

    System.map-[VERSION]
    

    ที่นี่[VERSION]เป็นที่แน่นอนเช่นเดียวกับชื่อของไดเรกทอรีในที่/lib/modulesสร้างขึ้นโดยmake modules_installซึ่งจะรวมถึงรุ่น "ท้องถิ่น" System.map-3.13.3-mykernelสตริงเช่น

  4. กำหนดค่า 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ไปที่การสำรองข้อมูลก่อนเพราะมันจะถูกลบ สิ่งนี้ช่วยให้มั่นใจได้ว่าวัตถุที่ใช้ในกระบวนการสร้างจะไม่เหม็นอับ

  5. เกี่ยวกับส่วนหัวของเคอร์เนลและ อัล

    สิ่งหนึ่งที่คุณควรทำคือ 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) หมุนรอบการสร้างเคอร์เนล

  • ด้วง 2 มีคู่มือออนไลน์


1. "วานิลลา" หมายถึงต้นฉบับอย่างเป็นทางการที่ไม่ได้รับการชำระบริสุทธิ์อย่างที่พบใน kernel.org distros ส่วนใหญ่ใช้แหล่งที่มาของวานิลลาและเพิ่มการปรับแต่งเล็กน้อย

2. โปรดทราบว่ามีสถานการณ์ที่จำเป็นต้องมี initramfs เนื่องจากจำเป็นต้องใช้ userspace บางตัวเพื่อติดตั้งระบบไฟล์รูท - ตัวอย่างเช่นหากมีการเข้ารหัสหรือแพร่กระจายไปทั่วอาเรย์ RAID ที่ซับซ้อน

3. จะไม่ลบโมดูลที่มีอยู่แล้วหากคุณไม่ได้สร้างขึ้นมาซึ่งหมายความว่าคุณสามารถเพิ่มโมดูลได้ในภายหลังโดยเพียงแค่ปรับเปลี่ยนการกำหนดค่าของคุณและทำงานmake modules_installอีกครั้ง โปรดทราบว่าการสร้างโมดูลบางตัวอาจต้องการการเปลี่ยนแปลงเคอร์เนลเองซึ่งในกรณีนี้คุณต้องแทนที่เคอร์เนลด้วย คุณจะสามารถบอกได้เมื่อคุณพยายามใช้modprobeเพื่อแทรกโมดูล

4. ไฟล์นี้อาจมีชื่อที่ต่างออกไปถ้าคุณใช้ตัวเลือกการบีบอัดที่ไม่ได้มาตรฐาน ฉันไม่แน่ใจว่าสิ่งที่เป็นไปได้ทั้งหมด


3
upvoted คุณอาจต้องการเพิ่มการกล่าวถึงlocalmodconfigและเครื่องมือเช่นstreamline_config.plสคริปต์ วิธีการที่เป็นประโยชน์ในการทำงานจากการตั้งค่าที่มีอยู่ของคุณ ...
jasonwryan

1
นี่อาจจะมีรายละเอียดเพียงพอที่จะเป็นคำถามประเภทมาตรฐานตามความคิดริเริ่มของ @ terdon ลองพิจารณาให้คำตอบสำหรับคำถามเกี่ยวกับเมตา หรือฉันสามารถถ้าคุณต้องการ ดูเหมือนว่านี่อาจเป็นความตั้งใจเนื่องจากคุณถามคำถามต่อไป รวมถึงวิธีการกระจายเฉพาะสำหรับการสร้างแพ็คเกจไบนารีจะเป็นประโยชน์เช่นกัน
Faheem Mitha

1
FYI: initramfsควรใช้เกือบทุกครั้ง เช่นการตั้งค่า rootfs บน LVM + RAID มักจะต้องใช้ รากที่เข้ารหัสจะทำอย่างแน่นอน แม้การตั้งค่า RAID ที่ซับซ้อนจะทำ ในเคอร์เนลอัตโนมัติแม้การชุมนุมของอาร์เรย์ที่น่ารำคาญจะเลิกจริง ...
derobert

2
@derobert: นั่นทำให้เกิดคำถามว่ามีการใช้ลินุกซ์ "เกือบตลอดเวลา" เพื่อเรียกใช้เซิร์ฟเวอร์องค์กร ประเด็นของฉันinitramfsคือถ้าคุณไม่ต้องการใช้งานคุณไม่จำเป็นต้องทำสิ่งนี้และทำให้กระบวนการง่ายขึ้น อย่างไรก็ตามฉันได้เพิ่มเชิงอรรถเกี่ยวกับการเข้ารหัสรูท FS ฯลฯ
goldilocks

โปรดระบุรายละเอียดเกี่ยวกับฟังก์ชั่น efi-stub ของ EFI และ linux
IW16
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.