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

15

Atualmente, tenho o disco inteiro /dev/sdaformatado 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 grubfunciona,

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

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

De alguma maneira posso instalar o GRUB no / dev / sda sem MBR?

PS O /bootdiretório e os grub.confarquivos:

# 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
Xiè Jìléi
fonte
Será útil se você puder incluir o comando que você usou e a mensagem de erro que você recebeu ao tentar instalar. Por exemplo, você já tentou grub-install /dev/sda?
phunehehe
Eu já recriei o layout do disco com o MBR e copiei o sistema de arquivos brutos na partição única do disco. No entanto, tentarei novamente uma nova instalação do Gento e colarei a mensagem de erro algum tempo depois. Obrigado
Xiè Jìléi
EDIT Eu adicionei a mensagem de erro.
Xiè Jìléi

Respostas:

5

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

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

Mesmo que uma tabela de partição não seja necessária, é recomendável. Você desperdiça apenas alguns kilobytes e obtém legibilidade em muitos sistemas operacionais não Linux e menos surpresa para qualquer co-administrador de sistemas. Se você acidentalmente conectar seu disco a uma máquina executando o Windows, poderá sugerir que você reformate o disco se não vir uma tabela de partição, ao passo que apenas reclamará que não pode ler os dados se vir uma tabela de partição com um tipo de partição que não reconhece.

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

Gilles 'SO- parar de ser mau'
fonte
5
É usado pelo convidado Gentoo OS no VirtualBox. Eu criei um disco virtual .vmdk que faz back-end por um raw image.ext4. A razão de eu usar o disco inteiro para um sistema de arquivos é que, eu quero montar o volume diretamente no sistema operacional hospedeiro, sem a partição complicado compensado como -o loop,offset=1048576.
Xiè Jìléi
1
Em um caso relacionado, temos discos FC conectados a um sistema. Estes são designados como JBOD para uso por um banco de dados ou LVM, destinado a não ter partição. Ao reinstalar o Grub --recheck, ele atualizará sua tabela de mapas com essas unidades sem partição e depois reclamará quando verificar a tabela de partição inexistente. Se eu remover esses caminhos de unidade do arquivo de mapa, o aviso desaparecerá.
Otheus 24/11
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 permitir que o outro carregador de inicialização da MBR o carregue, como o Windows 7 loader.

http://www.linuxselfhelp.com/gnu/grub/html_chapter/grub_3.html

Madhur Ahuja
fonte
0

Quase tudo espera uma tabela de partição. Eu acho que você precisará reinstalar e seguir as diretrizes sugeridas para ter pelo menos uma partição / boot, swap e / root. Onde está sua troca?

Keith
fonte
4
Linux não se importa. A maioria dos BIOSs não se importa (embora alguns o façam). Partições de troca e inicialização separadas não são necessárias e /bootnão são mais recomendadas no hardware moderno (era um problema ignorar as limitações do BIOS em tamanhos de disco e falta de suporte para modos de disco avançados, como LVM no Grub 1).
Gilles 'SO- stop be evil'
@ Gilles Quer dizer, eu posso ter LVM sem um separado /boot? Se sim, por que é melhor deixar /bootna mesma partição que /?
phunehehe
2
@phunehehe: Você pode ter LVM sem um separado /bootcom Lilo ou Grub 2, mas não com Grub 1. A separar /boottem um custo administrativo (que você precisa para fazer mais uma partição, e você precisa ter cuidado para não misturar-se /bootcom /), portanto, você só usaria um se houver um motivo (como o seu carregador de inicialização não entender o LVM).
Gilles 'SO- stop be evil'
1
@Gilles agora você me faz sentir como reinstalar ...
phunehehe
1
Você também pode ter coisas como criptografia de disco inteiro :)
XTL