ด้วงเป็นวิธีการแก้ปัญหาการโหลดที่ดีที่สุด? มีทางเลือกอื่นง่ายขึ้นไหม?


26

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

สิ่งนี้ตรงกันข้ามกับประสบการณ์ก่อนหน้านี้ของฉันLILOซึ่งฉันกำลังพิจารณาที่จะคืนค่าอย่างจริงจังเนื่องจากฉันไม่เคยมีปัญหาใด ๆ กับมันและการกำหนดค่าของมันค่อนข้างง่าย อย่างหนึ่งที่ฉันจำได้ก็คือฉันต้องอัปเดต(หรือมากกว่านั้นอัปเดตเท่านั้น)ไฟล์ข้อความที่ตั้งค่าได้เพียงจัดการไฟล์ต่อเคอร์เนลอัปเดต

ดังนั้น LILO ทำงานกับฮาร์ดแวร์ที่ทันสมัยด้วยเมล็ดในปัจจุบันได้อย่างไร ด้วงเป็นอย่างไร? bootloaders อื่น ๆ ทำอย่างไร? ฉันต้องทำตามเงื่อนไขก่อนหน้านี้หรือไม่หรือมันเป็นเพียงการเขียนไฟล์กำหนดค่าและliloคำสั่งการใช้งานเพราะฉันจำได้ในสมัยก่อนหรือไม่? เคอร์เนลแพ็คเกจอัพเดต (Debian / Ubuntu) อัปเดต LILO เหมือนกับที่ใช้กับ GRUB2 หรือไม่


ขึ้นอยู่กับว่าคุณมีเฟิร์มแวร์ประเภท EFI หรือไม่ถ้าคุณชอบและโหลดลินุกซ์เคอร์เนลจากเฟิร์มแวร์ แต่คุณยังสามารถใช้ LILO กับ EFI (eLILO ต่อไป)หรือ BIOS มันอยู่ในแผนผังซอร์สเคอร์เนลและถูกดูแลรักษา หากคุณต้องการทราบวิธีการทำสิ่งต่าง ๆ ของ EFI ฉันสามารถตอบได้ แต่ฉันไม่มีประสบการณ์ส่วนตัวกับ LILO เพียงแค่รู้ว่ามันถูกเก็บรักษาไว้และใช้งานได้
mikeserv

ฉันจำได้ว่าใช้ LILO ประมาณปี 2010 หรือ 2011 ใน Core 2 Duo ปัจจุบันแล้ว ฉันคิดว่ามันควรจะยังคงทำงาน (การพิจารณา UEFI เป็นต้น) สถาปัตยกรรมพีซีไม่ได้เปลี่ยนไปมากนัก
Renan

@mikeserv โปรดเขียนทุกสิ่งที่คุณรู้เกี่ยวกับเพลง LILO-EFI ข้อมูลใด ๆ เกี่ยวกับหัวข้อนี้ยินดีต้อนรับ

ฉันเขียนสิ่งที่คุณอาจพบว่ามีประโยชน์ก่อนหน้านี้ที่นี่ซึ่งมีข้อแตกต่างระหว่าง uefi / bios ในไม่ช้า ประเด็นคือ uefi รวม bootloader ดังนั้นด้วง / lilo / อะไรก็ตามที่ซ้ำซ้อน สิ่งที่มักจะไม่รวมอยู่ในตัวจัดการการบูต - สำหรับเมนูและสิ่งของ - ดังนั้นฉันขอแนะนำให้คุณไปที่ rodsbooks.com/refind
mikeserv

3
มันยังคงเป็นสิ่งที่มาพร้อมกับ Slackware นั่นเป็นชุมชนเล็ก ๆ
Bandrami

คำตอบ:


28

ELILO

การจัดการ EFI Boot Loaders สำหรับ Linux: การใช้ ELILO

เป็นเรื่องยากสำหรับฉันที่จะตัดสินใจว่าส่วนใดของการคัดลอก + วางเพราะมันดีจริงๆดังนั้นฉันจะขอให้คุณอ่าน

ร็อดสมิ ธ

ประพันธ์และรักษาทั้งสองและgdiskrEFInd

แต่ก่อนที่คุณจะทำฉันต้องการแสดงความคิดเห็นเล็กน้อย ลิงก์ ELILO ด้านบนเป็นหนึ่งในหลาย ๆ หน้าของการบู๊ต UEFI ที่คุณจะพบในrodsbooks.com ซึ่งเขียนโดย Rod Smith เขาเป็นนักเขียนด้านเทคนิคที่ประสบความสำเร็จและหากคุณเคยลองหัวข้อการบูทของ UEFI และทำให้ไม่ได้อ่านอะไรบางอย่างเขาอาจเป็นไปได้เพราะคุณข้ามผลการค้นหาอันดับต้น ๆ

Linux UEFI boot

โดยทั่วไปเคอร์เนล Linux สามารถดำเนินการได้โดยตรงจากเฟิร์มแวร์

ในลิงค์ด้านบนเขากล่าวถึงEFI stub loader ของลีนุกซ์ - นี่คือสิ่งที่คุณควรใช้, ในความคิดของฉัน, เพราะมันช่วยให้เคอร์เนล linux ถูกเรียกโดยตรงจากเฟิร์มแวร์เอง. โดยไม่คำนึงถึงสิ่งที่คุณกำลังทำบางสิ่งบางอย่างจะถูกดำเนินการโดยเฟิร์ม - grubและก็เสียงเหมือนมีอะไรบางอย่างที่เป็น หากเฟิร์มแวร์สามารถโหลดเคอร์เนลระบบปฏิบัติการของคุณได้โดยตรง bootloader คืออะไรดี? UEFI เฟิร์มแวร์ติดตั้งพาร์ติชัน GPT ที่จัดรูปแบบ FAT ซึ่งตั้งค่าสถานะespโดยตารางพาร์ติชันและดำเนินการพา ธ ที่นั่นซึ่งได้บันทึกเป็นตัวแปรสำหรับการบู๊ต UEFI ในโมดูลหน่วยความจำแฟลชออนบอร์ด ดังนั้นสิ่งหนึ่งที่คุณอาจทำคือวางเคอร์เนล linux บนพาร์ติชัน FAT นั้นและเก็บเส้นทางไว้ในตัวแปรการบูต ทันใดเคอร์เนลเป็นของมันเอง bootloader

bootloaders

สำหรับระบบ UEFI นั้น bootloaders ซ้ำซ้อน - รวมถึง ELILO

ปัญหา bootloaders ถูกออกแบบมาเพื่อแก้ไขคือว่าระบบ BIOS อ่านเฉพาะในภาคแรกของพาร์ติชันที่มีการตั้งค่าสถานะการบูตและดำเนินการ เป็นเรื่องยากเล็กน้อยที่จะทำสิ่งใดที่มีความหมายกับเคอร์เนล 512 ไบต์ดังนั้นสิ่งที่ต้องทำคือเขียนยูทิลิตี้เล็ก ๆ ที่สามารถติดตั้งระบบไฟล์ที่คุณเก็บเคอร์เนลจริงไว้แล้วทำการสับมัน

ในความเป็นจริง 512 ไบต์มักไม่เพียงพอสำหรับ bootloaders grubตัวอย่างเช่น chainloads จริง ๆ ก่อนที่จะ chainloading เคอร์เนลของคุณเพราะ wedges ขั้นตอนที่สองในพื้นที่ว่างระหว่างบูตเซกเตอร์และเซกเตอร์แรกของระบบแฟ้มของคุณ มันเป็นแฮ็คที่สกปรก - แต่มันก็ใช้ได้

Bootmanagers

เพื่อประโยชน์ในการตั้งค่าง่ายแม้ว่าบางคนอาจมีประโยชน์

สิ่งที่ rEFInd ของ Rod Smith ทำนั้นเปิดตัวเป็นแอปพลิเคชั่น EFI - นี่เป็นแนวคิดที่ค่อนข้างใหม่ เป็นโปรแกรมที่ดำเนินการจากดิสก์โดย - และกลับไปที่ - เฟิร์มแวร์ สิ่งที่ rEFInd ทำคืออนุญาตให้คุณจัดการเมนูการบู๊ตจากนั้นส่งคืนการเลือกการบู๊ตของคุณไปยังเฟิร์มแวร์เพื่อดำเนินการ มันมาพร้อมกับไดรเวอร์ระบบไฟล์ UEFI - ยกตัวอย่างเช่นคุณสามารถใช้ EFI-stub loader ของเคอร์เนลบนพาร์ติชั่นที่ไม่ใช่ FAT (เช่นปัจจุบันของคุณ/boot) มันเป็นเรื่องง่ายที่จะจัดการ - ถ้าสิ่งนั้นเป็นสิ่งที่จำเป็น - และเพิ่มความเรียบง่ายของเคอร์เนลระบบปฏิบัติการให้กับความสะดวกสบายของตัวจัดการบู๊ตที่กำหนดค่าได้

การเปลี่ยนทิศทางอะตอม

เคอร์เนลไม่จำเป็นต้อง symlinks - mount --bindมันสามารถ

หากมีเส้นทางใด ๆ ของคุณ/ที่คุณควรจะไม่อนุญาตให้ symlinking /bootมันเป็น symlink ที่เป็นเด็กกำพร้าใน/bootนั้นไม่ใช่ปัญหาที่คุณควรแก้ไข ถึงกระนั้นมันก็เป็นวิธีปฏิบัติที่ใช้กันทั่วไปพอสมควรในการตั้งค่าทางอ้อมที่ซับซ้อน/bootโดยการแจกแจงหลายอย่างแม้ว่ามันจะเป็นความคิดที่น่ากลัว - เพื่อจัดการเคอร์เนลอัพเดตแบบแทนที่และ / หรือการกำหนดค่าเคอร์เนลหลายตัว

นี่เป็นปัญหาสำหรับระบบ EFI ที่ไม่ได้รับการกำหนดค่าให้โหลดไดรเวอร์ระบบไฟล์(เช่นมีให้ในแพ็คเกจ rEFInd)เนื่องจาก FAT เป็นระบบไฟล์ที่ค่อนข้างโง่โดยรวมและไม่เข้าใจ

ฉันไม่ได้ใช้ไดรเวอร์ระบบไฟล์ UEFI ที่มาพร้อมกับ rEFInd เป็นการส่วนตัวถึงแม้ว่าการแจกจ่ายส่วนใหญ่จะมีแพ็คเกจ rEFInd ที่สามารถติดตั้งผ่านตัวจัดการแพคเกจและลืมเกี่ยวกับการใช้/bootconfig symlinked ที่น่ากลัวของตัวเอง

กำหนดค่าของฉัน

ฉันเคยเขียนชุดคำแนะนำไว้และโพสต์ไว้ที่นี่แต่ดูเหมือนว่า:

% grep esp /etc/fstab && 
> ls /esp/EFI

LABEL=ESP          /esp  vfat defaults      0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0 

arch_root/  arch_sqsh/  arch_xbmc/  BOOT/  ipxe/

ดังนั้นฉันเพียงแค่ใส่สองบรรทัดเหล่านี้ในการ/etc/fstabชี้ไปยังโฟลเดอร์ที่ฉันตั้งใจจะมีการติดตั้งลินุกซ์ใหม่/bootและฉันเกือบจะกังวลเกี่ยวกับสิ่งทั้งหมด ฉันยังต้องทำ:

cat /boot/refind_linux.conf 

"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"

นอกเหนือจากการติดตั้งrefind-efiแพคเกจผ่านpacmanสำหรับครั้งแรกนั่นคือทั้งหมดที่จำเป็นในการตั้งค่าการติดตั้ง / การกำหนดค่าแยกตามที่ฉันต้องการ โปรดทราบว่าส่วนใหญ่ของสตริงดังกล่าวข้างต้นประกอบด้วยตัวเลือกเมาท์ btrfs เฉพาะที่ระบุเป็นพารามิเตอร์เคอร์เนล ปกติมากขึ้น/boot/refind_linux.confอาจดูเหมือน:

"Menu Entry" "root=/dev/sda2"

และนั่นคือทั้งหมดที่ใช้

rodsbooks.com

หากคุณยังต้องการ ELILO คุณสามารถดูคำแนะนำการติดตั้งได้ที่ลิงค์ด้านบน หากคุณต้องการ rEFInd คุณจะพบลิงค์ไปยังมันในย่อหน้าแรก โดยทั่วไปถ้าคุณต้องการทำการกำหนดค่าการบู๊ต UEFI ให้อ่านrodsbooks.comก่อน


3

ฉันใช้ LILO แทน GRUB2 ความจริงแล้วมันไม่ใช่ตัวเลือกของฉัน - การติดตั้ง GRUB2 ล้มเหลวในตัวติดตั้ง Debian Live CD แต่จากนั้นเป็นตัวเลือกในการติดตั้ง LILO ซึ่งประสบความสำเร็จ ฉันมีแล็ปท็อปอายุ 2 ปีใช้งาน Debian Stable LILO ทำงานได้อย่างไม่มีที่ติสำหรับฉัน


1

LILO ยังคงเป็นที่ใช้งานได้แม้จะมี UEFI BIOSes UEFI สามารถโหลดเคอร์เนล Linux ได้โดยตรงโดยปกติ นี้ขึ้นอยู่กับ UEFI เอง

อย่างไรก็ตามหากคุณต้องการหน้าจอการเลือกการบูตตัวอย่างเช่นหากคุณกำลังบู๊ตเข้าสู่ระบบปฏิบัติการหลายระบบบนเครื่องเดียวเครื่อง bootloader ขนาดเล็กอาจมีประโยชน์

ฉันจะพิจารณาใช้EXTLINUXแทน มันเป็นตัวแปรของ SYSLINUX แต่มันอยู่ในextพาร์ติชัน -type

ความสวยงามของ EXTLINUX คือแม้ว่ามันจะสามารถขยายได้มากกว่าและมีตัวเลือกมากมายกว่า LILO แต่ก็สามารถทำได้ง่ายและรักษาไว้อย่างแข็งขัน


-1 แพ็คเกจเคอร์เนล (deb / ubuntu) จะไม่อัปเดต EFI (EFI จะไม่อ่าน fs ที่สนับสนุน symlink ดังนั้นคุณจึงไม่สามารถใช้คำตอบของฉันได้) +1 สำหรับ EXTLINUX เป็นทางเลือกใหม่สำหรับ LILO ลิงค์ของคุณแสดงว่ารองรับระบบไฟล์อื่น ๆ ซึ่งเป็นสัญญาณที่ดี ฝ่ายสนับสนุนของ EFI นั้นดูใหม่อยู่เสมอในกรณีที่จำเป็น
sourcejedi

@sourcejedi - คุณผิด ระบบ EFI ซึ่งโหลดไดรเวอร์ระบบไฟล์ EFI ที่เหมาะสมสามารถจัดการ symlink ได้อย่างง่ายดาย
mikeserv

ด้วยเหตุผลบางอย่างการเชื่อมโยงโดยตรงไปยัง syslinux.com นั้นเป็นสิ่งต้องห้าม
polemon

@mikeserv ฉันรู้ แต่การโหลดโปรแกรมควบคุมระบบแฟ้มทำให้ฉันค่อนข้างคลุมเครือในกรณีส่วนใหญ่ คุณต้องติดตั้งสคริปต์ EFI (คำศัพท์บางอย่าง) เพื่อโหลดไดรเวอร์และจากนั้นเคอร์เนล โอ้ & ฉันพนันได้เลยว่าไม่มีผู้ใดที่มีลายเซ็นการบูตปลอดภัย MS สำหรับไดรเวอร์เหล่านี้จึงเป็นหนอนอีกตัว: p
sourcejedi

@sourcejedi - คุณช่วยกรุณาอ่านคำตอบที่ฉันเขียนไว้ที่นี่ได้ไหม? และใช่ - คุณต้องใช้วิธีการโหลดไดรเวอร์
mikeserv

1

update-grubผมจำไม่ได้ใดเทียบเท่า อย่างไรก็ตามมีระบบเก่าซึ่งยังรองรับในเดเบียน (มันใช้สำหรับ uboot บนเซิร์ฟเวอร์ ARM ของฉัน)

เคอร์เนลล่าสุดมีการเชื่อมโยง/boot/vmlinuzและ/boot/initrd.imgเริ่มต้นด้วย อัพเดตโดยแพ็คเกจเคอร์เนล ตัวโหลดการบูตจะถูกชี้ไปที่การเชื่อมโยง & symlink ในแต่ละการบู๊ต

ดังนั้นคุณอาจไม่ได้รับตัวเลือกการกู้คืน ไม่ว่าในกรณีนี้จะไม่เป็นตัวเลือกที่ได้รับการทดสอบอย่างกว้างขวางที่สุดดังนั้นจึงขอแนะนำให้คุณเก็บดิสก์สำหรับบูตที่ทำงานอยู่รอบ ๆ :-)


อัปเดต: หากเป้าหมายของคุณคือสิ่งอื่นนอกเหนือจากการใช้งาน LILO บนคอมพิวเตอร์ที่ทันสมัยอาจมีทางเลือกที่ดีกว่าดังที่อธิบายไว้โดยคำตอบอื่น ๆ ที่นี่ :)

ด้านบนเหมาะสมสำหรับ LILO รุ่นที่ใช้ BIOS ดั้งเดิมเท่านั้น ฮาร์ดแวร์ที่ทันสมัยจะให้ความเข้ากันได้กับ BIOS ที่ด้านบนของ EFI หากคุณไม่ต้องการบูตที่ปลอดภัยหรือบูต Windows 8 จากเมนูเดียวกัน ในทางทฤษฎีคุณสามารถทำให้ ELILO ทำงานได้ แต่มันไม่รองรับการบูทอย่างปลอดภัยหรือการโหลด Windows 8 ELILO ไม่สมเหตุสมผลอีกต่อไปดังนั้นฉันคิดว่าชุมชนในชุมชนไม่ได้อยู่เบื้องหลัง


ฮึ. symlink in / from /bootเป็นคำตอบที่สกปรกสำหรับปัญหาใด ๆ
mikeserv

welp lilo นั้นตายแล้ว (และเลิกใช้แล้ว) ใช่แล้ว คุณมีปัญหาอะไรในใจ? ผู้คนยังไม่ได้ใช้ FAT สำหรับ / boot เลย ... BootLoaderSpec เป็นโครงการที่ดี แต่ยังไม่มีจริงๆ ... และมีเหตุผลที่ดีสำหรับสิ่งนั้น (สิทธิบัตรที่ชั่วร้าย, ใบอนุญาตที่เข้ากันได้กับ FLOSS ที่ให้สำหรับการทำงานร่วมกันของ EFI เท่านั้น)
sourcejedi

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