Come installare GRUB su un intero disco ext4 senza tabella delle partizioni?


15

Attualmente ho l'intero disco /dev/sdaformattato come ext4 e ho installato Gentoo.

(Non ci sono MBR, nessuna partizione).

Ma alla fine, non riesco a installare GRUB su di esso, perché sembra che GRUB debba scrivere su MBR.

# grub-install /dev/sda
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
Unknown partition table signature
The file /boot/grub/stage1 not read correctly. 

nemmeno grubfunziona,

# grub
grub> root (hd0)
 Filesystem type unknown, using whole disk

grub> setup (hd0)
 Error 17: Cannot mount selected partition

In che modo posso installare GRUB in / dev / sda senza MBR?

PS La /bootdirectory e i grub.conffile:

# tree /boot 
/boot
|-- boot -> .
|-- grub
|   |-- default
|   |-- device.map
|   |-- e2fs_stage1_5
|   |-- fat_stage1_5
|   |-- ffs_stage1_5
|   |-- grub.conf
|   |-- iso9660_stage1_5
|   |-- jfs_stage1_5
|   |-- menu.lst -> grub.conf
|   |-- minix_stage1_5
|   |-- reiserfs_stage1_5
|   |-- splash.xpm.gz
|   |-- stage1
|   |-- stage2
|   |-- stage2_eltorito
|   |-- ufs2_stage1_5
|   |-- vstafs_stage1_5
|   `-- xfs_stage1_5
`-- kernel-2.6.36-gentoo-r5

# cat /boot/grub/grub.conf
default 0
timeout 30
splashimage=(hd0)/boot/grub/splash.xpm.gz

title Gentoo Linux 2.6.36-r5
root (hd0)
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/sda

title Gentoo Linux 2.6.36-r5 Rescue
kernel /boot/kernel-2.6.36-gentoo-r5 root=/dev/sda init=/bin/bb

# cat /boot/grub/devices
(fd0)   /dev/fd0
(hd0)   /dev/sda

Sarà utile se puoi includere il comando che hai usato e il messaggio di errore che hai ricevuto durante il tentativo di installazione. Ad esempio, hai provato grub-install /dev/sda?
phunehehe,

Ho già ricreato il layout del disco con MBR e copiato il file system non elaborato nella singola partizione del disco. Tuttavia, riproverò una nuova installazione di Gento e incollerò il messaggio di errore qualche tempo dopo. Grazie
Xiè Jìléi il

EDIT Ho aggiunto il messaggio di errore.
Xiè Jìléi,

Risposte:


5

Il BIOS legge il primo settore (512 byte) del disco e si dirama in esso. Se il disco contiene partizioni in stile PC, il primo settore contiene anche la tabella delle partizioni. Se il tuo disco contiene un singolo filesystem, il primo settore contiene qualunque cosa il filesystem decida di mettere lì. Nel caso di ext [234] (e di molti altri filesystem), il primo settore¹ è riservato al bootloader (e inizialmente è azzerato). È possibile installare Grub su /dev/sda.

Detto questo, ci sono BIOS occasionali che si rifiutano di avviarsi da un dispositivo che non contiene una tabella delle partizioni. (Ma ci sono anche BIOS che si rifiutano di avviarsi da alcuni dispositivi esterni se contengono una tabella delle partizioni!) Se si dispone di uno di questi BIOS, è necessario creare una tabella delle partizioni.

Anche se una tabella delle partizioni non è necessaria, è consigliata. Sprechi solo pochi kilobyte e ottieni leggibilità con molti sistemi operativi non Linux e meno sorprese per qualsiasi amministratore di sistema. Se si collega accidentalmente il disco a una macchina che esegue Windows, potrebbe suggerire di riformattare il disco se non vede una tabella delle partizioni, mentre si lamenterà che non può leggere i dati se vede una tabella delle partizioni con un tipo di partizione che non riconosce.

¹ In effetti, il primo blocco, penso, in cui un blocco è 1kB, 2kB o 4kB a seconda delle opzioni passate a mkfs.


5
È utilizzato dal sistema operativo guest Gentoo in VirtualBox. Ho creato un disco virtuale .vmdk che back-end da un raw image.ext4. Il motivo per cui uso l'intero disco per un file system è che, voglio montare il volume direttamente nel sistema operativo host, senza l'offset della partizione complicato come -o loop,offset=1048576.
Xiè Jìléi,

1
In un caso correlato, abbiamo dischi FC collegati a un sistema. Questi sono intesi come JBOD per l'uso da parte di un database o LVM, intesi come senza partizioni. Quando reinstalla Grub con --recheck, aggiornerà la sua tabella delle mappe con quelle unità senza partizioni, quindi si lamenterà quando si verifica la loro tabella di partizioni inesistente. Se rimuovo questi percorsi di unità dal file della mappa, l'avviso scompare.
Otheus,


0

Quasi tutto si aspetta una tabella delle partizioni. Penso che dovrai reinstallare e seguire le linee guida suggerite per avere almeno una partizione / boot, swap e / root. Dov'è il tuo scambio?


4
A Linux non importa. Alla maggior parte dei BIOS non importa (anche se alcuni lo fanno). Non sono necessarie partizioni di swap e boot separate e non /bootè più raccomandato su hardware moderno (era un kludge bypassare le limitazioni del BIOS sulle dimensioni del disco e la mancanza di supporto per le modalità del disco avanzate come LVM in Grub 1).
Gilles 'SO- smetti di essere malvagio' il

@Gilles Vuoi dire, posso avere LVM senza un separato /boot? In tal caso, perché è meglio lasciare /bootnella stessa partizione di /?
phunehehe,

2
@phunehehe: Si può avere LVM, senza un separato /bootcon Lilo o Grub 2, ma non con Grub 1. A separare /bootha un costo amministrativo (è necessario effettuare una partizione di più, ed è necessario fare attenzione a non confondere /bootcon /), quindi ne useresti uno solo se c'è una ragione (come il tuo bootloader che non capisce LVM).
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles ora mi fai venire voglia di reinstallare ...
phunehehe,

1
Puoi anche avere cose come la crittografia dell'intero disco :)
XTL
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.