¿Cómo instalar GRUB en un disco ext4 completo sin tabla de particiones?

15

Actualmente tengo todo el disco /dev/sdaformateado como ext4 e instalé Gentoo.

(No hay MBR, no hay partición en absoluto).

Pero finalmente, no puedo instalar GRUB en él, porque parece que GRUB necesita escribir en 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. 

tampoco grubfunciona

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

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

¿De alguna manera puedo instalar GRUB en / dev / sda sin MBR?

PD El /bootdirectorio y los grub.confarchivos:

# 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
fuente
Será útil si puede incluir el comando que utilizó y el mensaje de error que recibió al intentar instalar. Por ejemplo, ¿lo has intentado grub-install /dev/sda?
phunehehe
Ya he recreado el diseño del disco con MBR, y he copiado el sistema de archivos sin formato en la única partición del disco. Sin embargo, volveré a intentar una nueva instalación de Gento y pegaré el mensaje de error algún tiempo después. Gracias
Xiè Jìléi
EDITAR He agregado el mensaje de error.
Xiè Jìléi

Respuestas:

5

El BIOS lee el primer sector (512 bytes) del disco y se ramifica en él. Si su disco contiene particiones estilo PC, el primer sector también contiene la tabla de particiones. Si su disco contiene un único sistema de archivos, el primer sector contiene lo que el sistema de archivos decida poner allí. En el caso de ext [234] (y muchos otros sistemas de archivos), el primer sector¹ está reservado para el gestor de arranque (e inicialmente se pone a cero). Puedes instalar Grub en /dev/sda.

Dicho esto, hay BIOS ocasionales que se niegan a arrancar desde un dispositivo que no contiene una tabla de particiones. (¡Pero también hay BIOS que se niegan a arrancar desde algunos dispositivos externos si contienen una tabla de particiones!) Si tiene uno de estos BIOS, tendrá que crear una tabla de particiones.

Incluso si una tabla de partición no es necesaria, se recomienda. Solo desperdicia unos pocos kilobytes y obtiene legibilidad en muchos sistemas operativos que no son Linux y menos sorpresa para cualquier co-administrador de sistemas. Si conecta accidentalmente su disco a una máquina que ejecuta Windows, puede sugerirle que vuelva a formatear el disco si no ve una tabla de particiones, mientras que simplemente se quejará de que no puede leer los datos si ve una tabla de particiones con un tipo de partición que no reconoce.

¹ De hecho, el primer bloque, creo, donde un bloque es 1kB, 2kB o 4kB, dependiendo de las opciones que se pasen mkfs.

Gilles 'SO- deja de ser malvado'
fuente
55
Es utilizado por el SO Gentoo invitado en VirtualBox. He creado un disco virtual .vmdk que back-end por un raw image.ext4. La razón por la que uso todo el disco para un sistema de archivos es que quiero montar el volumen directamente en el sistema operativo host, sin el complicado desplazamiento de la partición -o loop,offset=1048576.
Xiè Jìléi
1
En un caso relacionado, tenemos discos FC conectados a un sistema. Estos están diseñados como JBOD para su uso por una base de datos o LVM, destinados a ser sin particiones. Al reinstalar Grub con --recheck, actualizará su tabla de mapas con esas unidades sin particiones, luego se quejará cuando compruebe su tabla de particiones no existente. Si elimino estas rutas de disco del archivo de mapa, la advertencia desaparece.
Oteo
0

Casi todo espera una tabla de particiones. Creo que tendrá que volver a instalar y seguir las pautas sugeridas para tener al menos una partición / boot, swap y / root. ¿Dónde está tu intercambio?

Keith
fuente
44
A Linux no le importa. A la mayoría de las BIOS no les importa (aunque algunas sí). Las particiones separadas de intercambio y arranque no son necesarias, y /bootya no se recomienda en el hardware moderno (fue un error evitar las limitaciones del BIOS en los tamaños de disco y la falta de soporte para modos de disco avanzados como LVM en Grub 1).
Gilles 'SO- deja de ser malvado'
@Gilles ¿Quieres decir que puedo tener LVM sin un separado /boot? Si es así, ¿por qué es mejor dejar /booten la misma partición que /?
phunehehe
2
@phunehehe: Puede tener LVM sin separada /bootcon Lilo o Grub 2, pero no con Grub 1. Un separar /boottiene un costo administrativo (que necesita para hacer una partición más, y hay que tener cuidado de no confundir /bootcon /), así que solo usarías uno si hay una razón (como que tu gestor de arranque no entienda LVM).
Gilles 'SO- deja de ser malvado'
1
@Gilles ahora me haces sentir como reinstalar ...
phunehehe
1
También puede tener cosas como cifrado de disco completo :)
XTL