Como instalar o GRUB em um disco ext4 inteiro sem tabela de partições?

13

Atualmente, tenho todo o disco /dev/sda formatado como ext4 e instalei o Gentoo.

(Não há MBR, nenhuma partição.)

Mas, finalmente, não consigo instalar o GRUB nele, porque parece que o GRUB precisa gravar no 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. 

nem grub work,

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

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

Qualquer maneira eu posso instalar o GRUB no / dev / sda sem o MBR?

P.S. O diretório /boot e grub.conf files:

# 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
    
por Xiè Jìléi 27.12.2010 / 08:47

3 respostas

5

O BIOS lê o primeiro setor (512 bytes) do disco e ramifica-se nele. Se o seu disco contiver partições no estilo PC, o primeiro setor também contém a tabela de partições. Se o seu disco contiver um único sistema de arquivos, o primeiro setor contém o que o sistema de arquivos decidir colocar lá. No caso do ext [234] (e muitos outros sistemas de arquivos), o primeiro setor¹ é reservado para o gerenciador de inicialização (e é inicialmente zerado). Você pode instalar o Grub em /dev/sda .

Dito isto, existem BIOSes ocasionais que se recusam a arrancar a partir de um dispositivo que não contenha uma tabela de partições. (Mas também há BIOSes que se recusam a inicializar a partir de alguns dispositivos externos se eles contiverem uma tabela de partição!) Se você tiver um desses BIOSes, terá que criar uma tabela de partição.

Mesmo que uma tabela de partições não seja necessária, é recomendável. Você só perde alguns kilobytes e ganha legibilidade sob muitos SOs não-Linux e menos surpresa para qualquer co-sysadmin. Se você acidentalmente conectar seu disco em uma máquina rodando Windows, ele pode sugerir que você reformate o disco se ele não vir uma tabela de partição, enquanto ele apenas reclamará que ele não poderá ler os dados se vir uma tabela de partição com um tipo de partição que não reconhece.

¹ Na verdade, o primeiro bloco, eu acho, onde um bloco é 1kB, 2kB ou 4kB dependendo das opções passadas para mkfs .

    
por 27.12.2010 / 13:37
2

Não é obrigatório que o GRUB precise ser gravado no MBR. Você pode instalá-lo no setor de inicialização da partição e deixar o outro carregador de inicialização a partir do MBR carregá-lo, como o Windows 7 loader.

link

    
por 27.12.2010 / 09:47
1

Quase tudo espera uma tabela de partições. Eu acho que você terá que reinstalar e seguir as orientações sugeridas de ter pelo menos uma partição / boot, swap e / root. Onde está o seu swap?

    
por 27.12.2010 / 11:15