GRUB è la migliore soluzione di bootloading? C'è un'alternativa più semplice?


26

Ho avuto delle esperienze piuttosto negative con GRUB2. Potrei dire (e aver detto) alcune cose brutte sul suo processo di progettazione e sviluppo. In particolare non mi piacciono i suoi mezzi di aggiornamento: per qualsiasi motivo, deve aggiornare semi-automaticamente diversi script - uno indirettamente tramite un altro in una catena - per ogni aggiornamento del kernel - o molte altre modifiche di configurazione minori (e apparentemente non correlate) .

Ciò è direttamente contrastato dalle precedenti esperienze che ho avuto LILO- a cui sto seriamente pensando di tornare indietro - in quanto non ho mai avuto problemi con esso e la sua configurazione era piuttosto semplice. Per prima cosa, come lo ricordo, dovevo solo aggiornare (o, piuttosto, solo mai aggiornato) un singolo file di testo di configurazione gestito semplicemente per ogni aggiornamento del kernel.

Quindi, come funziona LILO su hardware moderno con i kernel di oggi? Come funziona GRUB? Come fanno gli altri bootloader? Devo soddisfare alcune condizioni preliminari o si tratta solo di scrivere il file di configurazione ed eseguire il lilocomando come ricordo con affetto ai vecchi tempi? Il pacchetto del kernel aggiorna (Debian / Ubuntu) aggiorna LILO come fa con GRUB2?


A seconda che tu abbia o meno un tipo di firmware EFI, puoi fare a meno se ti è piaciuto e caricare il kernel Linux dal firmware. Ma puoi ancora usare LILO con EFI (eLILO comunque) o BIOS. È nella struttura dei sorgenti del kernel ed è mantenuto. Se vuoi sapere come fare la cosa EFI, posso rispondere, ma non ho esperienza personale con LILO, sappi solo che è mantenuta e funziona.
Mikeserv,

Ricordo di aver usato LILO intorno al 2010 o 2011 su un Core 2 Duo di allora. Immagino che dovrebbe ancora funzionare (sconsiderando UEFI ecc.), L'architettura del PC non è cambiata molto.
Renan,

@mikeserv, per favore scrivi tutto quello che sai sul duetto LILO-EFI. Tutte le informazioni su questo argomento sono benvenute.

In realtà ho scritto qualcosa che potresti trovare utile prima qui che si occupa a breve delle differenze tra uefi / bios. Il punto è che uefi include un bootloader, quindi grub / lilo / qualunque cosa è ridondante. Ciò che spesso non include un boot manager - per menu e cose simili
mikeserv

3
È ancora ciò che viene fornito con Slackware. Non è certo una piccola comunità.
Bandrami,

Risposte:


28

ELILO

Gestione dei boot loader EFI per Linux: utilizzo di ELILO

È davvero difficile per me decidere quale parte di quello copiare + incollare perché è tutto davvero buono, quindi ti chiederò solo per favore di leggerlo.

Rod Smith

Autore e mantiene entrambi gdiske rEFInd.

Ma prima di farlo vorrei commentare un po '. Il link ELILO sopra è ad una delle tante pagine sull'avvio di UEFI che troverai su rodsbooks.com scritto da Rod Smith. È un abile scrittore tecnico e se hai mai cercato su Google il tema dell'avvio di UEFI e hai finito per non leggere qualcosa del suo, è stato probabilmente perché hai saltato i primi risultati.

Avvio UEFI Linux

Fondamentalmente, il kernel Linux può essere eseguito direttamente dal firmware.

Nel link sopra menziona il caricatore di stub EFI del kernel Linux - questo è ciò che dovresti usare, secondo me, poiché consente al kernel Linux di essere chiamato direttamente dal firmware stesso. Indipendentemente da ciò che stai facendo qualcosa viene eseguito dal firmware - e sembra che qualcosa lo sia grub. Se il firmware può caricare direttamente il tuo kernel OS, a che serve un bootloader? Il firmware UEFI monta una partizione GPT formattata FAT contrassegnata da esp dalla tabella delle partizioni ed esegue un percorso lì che ha salvato come variabile di avvio UEFI in un modulo di memoria flash integrato. Quindi una cosa che potresti fare è mettere il kernel Linux su quella partizione FAT e memorizzare il suo percorso in quella variabile di avvio. Improvvisamente il kernel è suo boot loader.

bootloader

Sui sistemi UEFI, i bootloader sono ridondanti - ELILO incluso.

Il problema che i bootloader sono stati progettati per risolvere è che i sistemi BIOS leggono solo nel primo settore della partizione contrassegnata da boot ed eseguono. È un po 'difficile fare qualcosa di significativo con un kernel da 512 byte, quindi la cosa comune da fare era scrivere una piccola utility che potesse montare un filesystem dove hai mantenuto il kernel reale e caricarlo a catena.

In effetti, i 512 byte spesso non erano sufficienti nemmeno per i bootloader. grub, per esempio, in realtà si carica da solo prima di caricare a catena il kernel, perché incunea il suo secondo stadio nello spazio vuoto tra il settore di avvio e il primo settore del file system. È un po 'un trucco sporco, ma ha funzionato.

gestore di avvio

Per motivi di facile configurazione, tuttavia, alcuni passaggi possono essere utili.

Quello che fa rEFInd di Rod Smith è il lancio come applicazione EFI - questo è un concetto relativamente nuovo. È un programma che viene eseguito dal disco dal - e che ritorna al - firmware. Ciò che fa rEFInd è consentire di gestire i menu di avvio e quindi restituire la selezione di avvio al firmware da eseguire. Viene fornito con i driver del file system UEFI - quindi, ad esempio, è possibile utilizzare il caricatore EFI-stub del kernel su una partizione non-FAT (come quella corrente /boot). È semplicissimo da gestire - se è assolutamente necessario - e aggiunge la semplicità di un kernel di sistema eseguibile alla comodità di un bootmanager configurabile.

Indiretto atomico

Il kernel non ha bisogno di collegamenti simbolici - può mount --bind.

Se c'è qualche percorso sul /quale dovresti impedire il collegamento simbolico, lo è /boot. Un collegamento simbolico orfano non/boot è il tipo di problema che dovresti mai dover risolvere. Tuttavia, è una pratica abbastanza comune impostare indirette elaborate da diverse distribuzioni - anche se è un'idea orribile - al fine di gestire gli aggiornamenti sul posto sul posto e / o più configurazioni del kernel./boot

Questo è un problema per i sistemi EFI non configurati per caricare i driver del filesystem (come quelli forniti con il pacchetto rEFInd) perché FAT è un file system abbastanza stupido in generale e non li comprende.

Non utilizzo personalmente i driver del file system UEFI forniti con rEFInd, sebbene la maggior parte delle distribuzioni includa un pacchetto rEFInd che può essere installato tramite il gestore dei pacchetti e dimenticato di usare semplicemente la propria terribile /bootconfigurazione con collegamento simbolico e i driver del file system UEFI impacchettati di rEFInd.

My Config

Una volta ho scritto una serie di istruzioni e l' ho pubblicato qui , ma sembra:

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

Quindi ho semplicemente inserito queste due righe nel mio /etc/fstabpuntamento a una cartella che ho intenzione di contenere la nuova installazione di Linux /boote ho quasi finito di preoccuparmi di tutto. Devo anche fare:

cat /boot/refind_linux.conf 

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

Oltre a installare il refind-efipacchetto tramite pacmanil primo, è tutto ciò che serve per installare tutte le installazioni / configurazioni separate che desidero. Nota che la maggior parte di quella stringa sopra è costituita da opzioni di mount specifiche di btrfs specificate come parametri del kernel. Un più tipico /boot/refind_linux.confsarebbe probabilmente simile a:

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

E questo è tutto ciò che serve.

rodsbooks.com

Se desideri ancora ELILO, puoi trovare le istruzioni di installazione al link sopra. Se vuoi ritrovare, troverai i collegamenti ad esso nel primo paragrafo lì. Fondamentalmente se si desidera eseguire una configurazione di avvio UEFI, leggere prima rodsbooks.com .


3

Uso LILO invece di GRUB2. Ad essere onesti, non è stata una mia scelta: l'installazione di GRUB2 non è riuscita nel programma di installazione di Debian Live CD, ma è stata l'opzione per installare LILO che ha avuto successo. Ho un laptop di 2 anni con Debian Stable. LILO lavora perfettamente per me.


1

LILO è ancora utilizzabile, anche con BIOS UEFI. UEFI può caricare direttamente il kernel Linux, di solito. Questo dipende però dalla stessa UEFI.

Tuttavia, se è necessaria una schermata di selezione dell'avvio, ad esempio se si esegue l'avvio su più sistemi operativi su una macchina, un piccolo bootloader potrebbe essere utile.

Considererei invece l' uso di EXTLINUX , invece. È una variante di SYSLINUX, ma risiede in extpartizioni di tipo.

La bellezza di EXTLINUX è che, sebbene sia più espandibile e abbia molte più opzioni rispetto a LILO, può essere altrettanto semplice e mantenersi attivamente.


-1 Il pacchetto del kernel (deb / ubuntu) non aggiorna EFI. (EFI non leggerà fs che supportano i collegamenti simbolici, quindi non puoi semplicemente usare la mia risposta). +1 per EXTLINUX come nuova alternativa a LILO. Il tuo link mostra che supporta molti altri filesystem che è un buon segno. Il supporto EFI sembra un po 'nuovo, laddove necessario.
sourcejedi,

@sourcejedi - ti sbagli. Un sistema EFI su cui sono caricati i driver del file system EFI corretti può gestire facilmente i collegamenti simbolici.
Mikeserv,

Per qualche motivo, il collegamento diretto a syslinux.com sembra essere proibito.
polemon,

@mikeserv, lo so, ma il caricamento di un driver del filesystem mi è sembrato piuttosto oscuro per la maggior parte dei casi. Dovresti anche installare una sorta di script EFI (terminologia?) Per caricare il driver e poi il kernel. Oh, e scommetto che nessuno ha firme di avvio sicuro MS per questi driver, quindi questo è un altro wormcan: p.
sourcejedi,

@sourcejedi - puoi leggere la risposta che ho scritto qui? E sì, avresti bisogno di alcuni mezzi per caricare il driver.
Mikeserv,

1

Non ricordo nessun equivalente di update-grub. Comunque c'è un sistema più vecchio che è ancora supportato in Debian. (È usato per uboot sul mio server ARM).

Il kernel più recente è collegato a symrd /boot/vmlinuze initrd a /boot/initrd.img. È aggiornato dal pacchetto del kernel. Il boot loader punta su quelle e dereferenze il link simbolico su ogni avvio.

Quindi potresti non avere un'opzione di recupero. In ogni caso questa non sarà l'opzione più ampiamente testata, quindi è ancora più consigliabile tenere un disco di avvio funzionante :-).


Aggiornamento: se il tuo obiettivo è diverso da quello di eseguire letteralmente LILO su un computer moderno, probabilmente ci sono alternative migliori, come descritto dalle altre risposte qui :).

Quanto sopra ha senso solo per la versione originale basata su BIOS di LILO. L'hardware moderno fornisce la compatibilità del BIOS su EFI, se non si desidera l'avvio sicuro o l'avvio di Windows 8 dallo stesso menu. Teoricamente potresti far funzionare ELILO ma non supporta l'avvio sicuro o il caricamento di Windows 8. ELILO non ha più senso in generale, quindi suppongo che non ci sia molta comunità dietro di esso.


ugh. i collegamenti simbolici in / da /bootsono una soluzione sporca a qualsiasi problema.
Mikeserv,

welp lilo è morto (e uboot deprecato) quindi sì. Qual è il problema che avevi in ​​mente? Le persone non usano ancora FAT per / boot ... BootLoaderSpec è un buon progetto ma non è ancora arrivato ... e c'è una buona ragione per questo (brevetti malvagi, licenza compatibile FLOSS concessa solo per l'interoperabilità EFI).
sourcejedi,

È stata una buona modifica.
Mikeserv,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.