Apakah GRUB solusi bootloading terbaik? Apakah ada alternatif yang lebih mudah?

26

Saya memiliki beberapa pengalaman buruk GRUB2. Saya bisa mengatakan (dan mengatakan) beberapa hal buruk tentang desain dan proses pengembangannya. Saya terutama tidak menyukai sarana pembaruan: untuk alasan apa pun ia harus secara otomatis memperbarui beberapa skrip - satu secara tidak langsung melalui yang lain dalam sebuah rantai - untuk setiap pembaruan kernel - atau banyak perubahan konfigurasi minor lainnya (dan tampaknya tidak terkait) .

Ini secara langsung kontras dengan pengalaman sebelumnya yang saya miliki LILO- yang saya pertimbangkan dengan serius untuk kembali - karena saya tidak pernah memiliki masalah dengan itu, dan konfigurasinya cukup sederhana. Untuk satu hal, seperti yang saya ingat, saya hanya perlu memperbarui (atau, lebih tepatnya, hanya diperbarui) satu file teks konfigurasi yang dikelola secara sederhana per pembaruan kernel.

Jadi bagaimana LILO bekerja pada perangkat keras modern dengan kernel saat ini? Bagaimana GRUB? Bagaimana dengan bootloader lain? Apakah saya harus memenuhi prasyarat apa pun, atau hanya menulis file konfigurasi dan menjalankan liloperintah seperti yang saya ingat dulu? Apakah paket kernel memperbarui (Debian / Ubuntu) memperbarui LILO seperti halnya dengan GRUB2?

Komunitas
sumber
Tergantung pada apakah Anda memiliki jenis firmware EFI atau tidak, Anda dapat melakukannya tanpa jika Anda suka dan memuat kernel linux dari firmware. Tetapi Anda masih bisa menggunakan LILO dengan EFI (tetap saja eLILO) atau BIOS. Itu ada di pohon kode sumber dan dipertahankan. Jika Anda ingin tahu bagaimana melakukan hal EFI, saya dapat menjawabnya, tetapi saya tidak memiliki pengalaman pribadi dengan LILO, ketahuilah bahwa ini disimpan dan berfungsi.
mikeserv
Saya ingat menggunakan LILO sekitar 2010 atau 2011 pada Core 2 Duo saat itu. Saya kira itu masih bekerja (mempertimbangkan UEFI dll.), Arsitektur PC tidak banyak berubah.
Renan
@mikeserv, tulis semua yang Anda ketahui tentang duet LILO-EFI. Setiap informasi tentang topik ini, silakan.
Saya benar-benar menulis sesuatu yang mungkin berguna sebelumnya di sini yang berkaitan dengan perbedaan antara uefi / bios. Intinya adalah uefi termasuk bootloader sehingga grub / lilo / apa saja berlebihan. Apa yang sering tidak termasuk adalah boot manager - untuk menu dan barang-barang - jadi saya sarankan Anda pergi ke rodsbooks.com/refind
mikeserv
3
Itu masih apa yang dikirim dengan Slackware. Itu bukan komunitas kecil.
Bandrami

Jawaban:

28

ELILO

Mengelola EFI Boot Loaders untuk Linux: Menggunakan ELILO

Sangat sulit bagi saya untuk memutuskan bagian mana yang akan disalin + tempel karena semuanya sangat bagus, jadi saya hanya akan meminta Anda untuk membacanya.

Rod Smith

Ditulis dan dikelola keduanya gdiskdan rEFInd.

Tetapi sebelum Anda melakukannya, saya ingin berkomentar sedikit tentang itu. Tautan ELILO di atas adalah ke salah satu dari banyak halaman tentang booting UEFI yang akan Anda temukan di rodsbooks.com yang ditulis oleh Rod Smith. Dia adalah penulis teknis yang ulung, dan jika Anda pernah mencari di Google topik booting UEFI dan akhirnya tidak membaca sesuatu tentangnya, kemungkinan karena Anda melewatkan beberapa hasil teratas.

Linux UEFI boot

Pada dasarnya, kernel Linux dapat langsung dieksekusi oleh firmware.

Dalam tautan di atas ia menyebutkan kernel EFI loader Linux kernel - ini adalah apa yang harus Anda gunakan, menurut saya, karena memungkinkan kernel linux dipanggil langsung oleh firmware itu sendiri. Terlepas dari apa yang Anda lakukan, sesuatu sedang dieksekusi oleh firmware - dan sepertinya ada sesuatu grub. Jika firmware dapat langsung memuat kernel os Anda, apa gunanya bootloader? Firmware UEFI memasang partisi GPT yang diformat FAT yang ditandai esp oleh tabel partisi dan mengeksekusi jalur yang telah disimpannya sebagai variabel boot UEFI dalam modul memori flash onboard. Jadi satu hal yang mungkin Anda lakukan adalah meletakkan kernel linux di partisi FAT itu dan menyimpan path-nya di variabel boot itu. Tiba-tiba kernel itu sendiri bootloader.

Bootloader

Pada sistem UEFI, bootloader berlebih - termasuk ELILO.

Masalah bootloader yang dirancang untuk dipecahkan adalah bahwa sistem BIOS hanya membaca di sektor pertama dari partisi yang ditandai boot dan menjalankannya. Agak sulit untuk melakukan sesuatu yang berarti dengan kernel 512 byte, jadi hal yang biasa dilakukan adalah menulis sebuah utilitas kecil yang dapat me-mount sistem file tempat Anda menyimpan kernel aktual dan memuatnya.

Bahkan, 512 byte sering tidak cukup bahkan untuk bootloader. grub, misalnya, sebenarnya chainloads sendiri sebelum pernah chainloading kernel Anda, karena itu mementaskan tahap kedua di ruang kosong antara sektor boot dan sektor pertama sistem file Anda. Semacam hack kotor - tapi berhasil.

Bootmanager

Demi konfigurasi yang mudah, beberapa perantara dapat bermanfaat.

Apa yang dilakukan oleh Rod Smith adalah diluncurkan sebagai aplikasi EFI - ini adalah konsep yang relatif baru. Ini adalah program yang dijalankan dari disk oleh - dan yang mengembalikan ke - firmware. Apa rEFInd tidak memungkinkan Anda untuk mengelola menu boot dan kemudian mengembalikan pilihan boot Anda ke firmware untuk dijalankan. Muncul dengan driver sistem file UEFI - jadi, misalnya, Anda dapat menggunakan kernel-Eub loader kernel pada partisi non-FAT (seperti saat ini /boot). Ini sangat sederhana untuk dikelola - jika hal seperti itu diperlukan sama sekali - dan itu menambah kesederhanaan kernel sistem yang dapat dieksekusi untuk kenyamanan bootmanager yang dapat dikonfigurasi.

Indirection Atom

Kernel tidak perlu symlink - itu bisa mount --bind.

Jika ada jalur di /mana Anda harus melarang symlinking, itu jalan /boot. Sebuah symlink yatim piatu di /bootadalah tidak jenis masalah yang Anda harus pernah harus memecahkan masalah. Namun, ini adalah praktik yang cukup umum untuk mengatur tipuan rumit /bootoleh beberapa distribusi - bahkan jika itu adalah ide yang mengerikan - untuk menangani pembaruan kernel di tempat dan / atau beberapa konfigurasi kernel.

Ini adalah masalah bagi sistem EFI yang tidak dikonfigurasikan untuk memuat driver sistem file (seperti yang disediakan dengan paket rEFInd) karena FAT adalah keseluruhan filesystem yang cukup bodoh, dan tidak memahaminya.

Saya pribadi tidak menggunakan driver sistem file UEFI yang disediakan dengan rEFInd, meskipun sebagian besar distribusi menyertakan paket rEFInd yang dapat diinstal melalui manajer paket dan lupa tentang hanya menggunakan /bootkonfigurasi symlinked yang mengerikan dan driver sistem file UEFI yang dikemas oleh rEFInd.

Config saya

Saya pernah menulis satu set instruksi dan mempostingnya di sini , tetapi sepertinya:

% 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/

Jadi saya hanya meletakkan dua baris di /etc/fstabmenunjuk ke folder yang saya maksud mengandung instalasi linux baru /bootdan saya hampir selesai mengkhawatirkan semuanya. Saya juga harus melakukan:

cat /boot/refind_linux.conf 

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

Selain menginstal refind-efipaket via pacmanuntuk yang pertama, hanya itu yang diperlukan untuk mengatur instalasi / konfigurasi terpisah sebanyak yang saya inginkan. Perhatikan bahwa sebagian besar string di atas terdiri dari opsi pemasangan spesifik btrfs yang ditentukan sebagai parameter kernel. Yang lebih khas /boot/refind_linux.confmungkin akan terlihat seperti:

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

Dan hanya itu yang dibutuhkan.

rodsbooks.com

Jika Anda masih menginginkan ELILO maka Anda dapat menemukan petunjuk pemasangan di tautan di atas. Jika Anda ingin rEFInd Anda akan menemukan tautan di paragraf pertama di sana. Pada dasarnya jika Anda ingin melakukan konfigurasi boot UEFI, baca rodsbooks.com terlebih dahulu.

mikeserv
sumber
3

Saya menggunakan LILO bukan GRUB2. Sejujurnya, itu bukan pilihan saya - Instalasi GRUB2 gagal di installer Debian Live CD, tetapi kemudian opsi untuk menginstal LILO yang berhasil. Saya memiliki 2 tahun laptop yang menjalankan Debian Stable. LILO bekerja dengan sempurna untuk saya.

Larsoden
sumber
1

LILO masih adalah dapat digunakan, bahkan dengan UEFI BIOS. UEFI dapat memuat kernel Linux secara langsung, biasanya. Ini tergantung pada UEFI itu sendiri.

Namun jika Anda memang membutuhkan layar pemilihan boot, misalnya jika Anda boot ke beberapa OS pada satu mesin, maka bootloader kecil mungkin berguna.

Saya akan mempertimbangkan menggunakan EXTLINUX saja. Ini adalah varian dari SYSLINUX, tetapi ia berada di extpartisi -type.

Keindahan EXTLINUX adalah, meskipun lebih diperluas dan memiliki lebih banyak opsi daripada LILO, EXTLINUX dapat sesederhana dan dipelihara secara aktif.

polemon
sumber
-1 Paket kernel (deb / ubuntu) tidak akan memperbarui EFI. (EFI tidak akan membaca fs yang mendukung symlink, jadi Anda tidak bisa hanya menggunakan jawaban saya). +1 untuk EXTLINUX sebagai alternatif yang lebih baru untuk LILO. Tautan Anda menunjukkan bahwa ia mendukung beberapa sistem file lain yang merupakan pertanda baik. Dukungan EFI terlihat agak baru, di mana itu perlu.
sourcejedi
@sourcejedi - Anda salah. Sistem EFI yang memuat driver sistem file EFI yang tepat dapat menangani symlink dengan mudah.
mikeserv
Untuk beberapa alasan, menautkan langsung ke syslinux.com tampaknya dilarang.
polemon
@ mikeserv Saya tahu, tetapi memuat driver sistem file menurut saya agak tidak jelas untuk sebagian besar kasus. Anda bahkan perlu menginstal semacam skrip EFI (terminologi?) Untuk memuat driver & kemudian kernel. Oh, & aku yakin tidak ada yang punya tanda tangan booting aman MS untuk driver ini jadi itu wormcan lain:
sourcejedi
@sourcejedi - tolong baca jawaban yang saya tulis di sini? Dan ya - Anda perlu beberapa cara memuat driver.
mikeserv
1

Saya tidak ingat ada padanannya update-grub. Namun ada sistem yang lebih lama yang masih didukung di Debian. (Ini digunakan untuk uboot di server ARM saya).

Kernel terbaru dikaitkan dengan /boot/vmlinuzdan initrd ke /boot/initrd.img. Ini diperbarui oleh paket kernel. Boot loader diarahkan ke hal-hal tersebut & merujuk symlink pada setiap boot.

Jadi Anda mungkin tidak mendapatkan opsi pemulihan. Bagaimanapun, ini tidak akan menjadi opsi yang paling banyak diuji, jadi lebih disarankan untuk tetap menggunakan boot disk :-).


Pembaruan: Jika tujuan Anda adalah selain menjalankan LILO di komputer modern, mungkin ada alternatif yang lebih baik, seperti dijelaskan oleh jawaban lain di sini :).

Di atas hanya masuk akal untuk LILO versi berbasis BIOS asli. Perangkat keras modern memang menyediakan kompatibilitas BIOS di atas EFI, jika Anda tidak ingin boot aman atau boot Windows 8 dari menu yang sama. Secara teoritis Anda bisa membuat ELILO berfungsi tetapi tidak mendukung boot aman atau memuat Windows 8. ELILO tidak lagi masuk akal secara umum sehingga dugaan saya adalah tidak ada banyak komunitas di belakangnya.

sourcejedi
sumber
ya symlinks in / from /bootadalah solusi kotor untuk masalah apa pun.
mikeserv
welp lilo sudah mati (dan uboot sudah usang) jadi ya. Apa masalah yang ada dalam pikiran Anda? Orang-orang belum menggunakan FAT untuk / boot ... BootLoaderSpec adalah proyek yang bagus tetapi belum benar-benar ada ... dan ada alasan bagus untuk itu (paten jahat, lisensi kompatibel FLOSS yang hanya diberikan untuk interop EFI).
sourcejedi
Itu hasil edit yang bagus.
mikeserv