Di recente mi sono imbattuto nel ntldr
modulo GRUB .
Apparentemente una delle cose per cui può essere usata è un'alternativa chainloader
all'avvio delle versioni NT> = 6.0 di Windows come nell'esempio seguente. (Molto utile se il Volume Boot Record per una partizione di Windows è, uh, danneggiato.)
menuentry "Windows 7 (bootmgr on /dev/sda1)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root 1EA0019AA0017A13
ntldr ($root)/bootmgr
}
Dove posso trovare ulteriori informazioni su come utilizzare questa direttiva di avvio? Non l'ho visto elencato quando ho guardato nella versione HTML del manuale GNU GRUB .
In risposta alla risposta di Ckhan
Grazie mille! Avevo praticamente deciso che avrei dovuto provare a scavare attraverso il codice sorgente per saperne di più sul ntldr
comando / modulo GRUB . Ma hai fatto un lavoro molto migliore di quanto avrei fatto io.
Non mi sarebbe mai venuto in mente di guardare gli archivi di posta elettronica per vedere quali discussioni di progettazione avrebbe potuto avere la persona che ha scritto il codice. Questo metodo sembra che potrebbe essere molto utile in futuro. Grazie per averlo menzionato.
Le mie opinioni sul ntldr
supporto di GRUB
- Anche se non sono davvero sicuro di quanto significhi la distinzione,
ntldr
è un modulo, non un comando. O forse un comando caricato dinamicamente, se lo desideri.
Seguendo il link del codice sorgente e guardando le righe 152 (GRUB_MOD_INIT
) e 159 (GRUB_MOD_FINI
) puoi vedere il codice da caricare e ... immagino ... scarica il modulo.
Apparentemente GRUB implementa molte funzioni che potresti pensare siano " comandi " come moduli. L'unica differenza di utilizzo di cui sono a conoscenza è che prima di utilizzare un modulo è necessario assicurarsi che sia stato caricato con il comandoinsmod ntldr
.
A parte: mi sono sempre chiesto perché GRUB non supportareboot
. Si scopre che il comando esiste, ma è un modulo. Sereboot
ritornaunknown command
, allorainsmod reboot
consente a GRUB di "ricordare" ilreboot
comando.
A parte: quando e perché GRUB potrebbe " scaricare " un modulo, non ne ho ancora idea. Forse è il risultato di qualcosa di simile alla " garbage collection " ?? Ho notato che una volta caricati i moduli sembrano persistere, anche dopo che un sistema è stato spento e riavviato. Certo, non puoi dipendere da quello, ma sembra essere come spesso funziona nella pratica. - E 'interessante il fatto che essi basati
ntldr
suchainloader
. Non ho guardato ilchainloader.c
codice. Immagino che probabilmente si stia trasferendo anche in modalità reale a 16 bit Intel ?
Io sono piuttosto contento di non implementanontldr
come opzione dichainloader
. Sono d'accordo con Vladimir. Qualunque siano le somiglianze sotto le copertine, la sintassi dell'uso è molto diversa. L'attuale approccio è meno kludgy. - È anche interessante vedere l'apparente mancanza di entusiasmo per l'aggiunta di questo comando a GRUB. Apparentemente gli sviluppatori di GRUB pensavano che il danno al Windows Partition Boot Record (PBR) fosse estremamente improbabile. Tuttavia, posso delineare come farlo durante un'installazione abbastanza ordinaria.
Inizia supponendo che un utente abbia Windows installato sul proprio sistema. Ora installano Ubuntu (12.04 LTS) " insieme a " Windows. Ad un certo punto durante l'installazione di Ubuntu possono apparentemente decidere dove vogliono installare GRUB. Per motivi che non riesco a indovinare, alcuni di loro decidono di installare GRUB nella partizione in cui è installato Windows.
L'installazione è completata e possono avviare correttamente Ubuntu. Tuttavia, quando provano ad avviare Windows selezionando la voce nel menu di GRUB, Windows non si avvia. Invece, tentando di avviare Windows con GRUB, viene nuovamente visualizzato il menu di GRUB?
Perché? Bene, apparentemente quando hanno scelto di installare GRUB nella partizione di Windows parte di ciò che è realmente accaduto è stato che il PBR per la partizione di Windows è stato sovrascritto con il PBR di GRUB. Quindichainloader +1
non carica a catena un bootloader di Windows, ma ricarica GRUB.
IMO, il più sicuro rapido modo per consentire a un utente di avvio di Windows in quella situazione è di usare il GRUB di nuovontldr
. Mi chiedo se questo sarebbe di interesse per gli sviluppatori. Mi aspetto che non abbiano anticipato questo scenario.
Mi chiedo quali bootloader diversi da quelli di Windows ntldr
e bootmgr
il ntldr
comando GRUB potrebbero essere in grado di caricare?