Comment installer GRUB sur un disque ext4 entier sans table de partition?


15

Actuellement, j'ai le disque entier /dev/sdaformaté en ext4 et installé Gentoo.

(Il n'y a pas de MBR, pas de partition du tout.)

Mais enfin, je ne peux pas installer GRUB dessus, car il semble que GRUB doit écrire sur 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. 

ne fonctionne pas non plus grub,

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

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

Est-il possible d'installer GRUB dans / dev / sda sans MBR?

PS Le /bootrépertoire et les grub.conffichiers:

# 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

Il sera utile si vous pouvez inclure la commande que vous avez utilisée et le message d'erreur que vous avez reçu lors de la tentative d'installation. Par exemple, avez-vous essayé grub-install /dev/sda?
phunehehe

J'ai déjà recréé la disposition du disque avec MBR et copié le système de fichiers brut dans la partition unique du disque. Cependant, je vais réessayer une nouvelle installation de Gento et coller le message d'erreur un peu plus tard. Merci
Xiè Jìléi

EDIT J'ai ajouté le message d'erreur.
Xiè Jìléi

Réponses:


5

Le BIOS lit le premier secteur (512 octets) du disque et s'y branche. Si votre disque contient des partitions de style PC, le premier secteur contient également la table de partition. Si votre disque contient un seul système de fichiers, le premier secteur contient tout ce que le système de fichiers décide d'y mettre. Dans le cas de ext [234] (et de nombreux autres systèmes de fichiers), le premier secteur¹ est réservé au chargeur de démarrage (et est initialement remis à zéro). Vous pouvez installer Grub sur /dev/sda.

Cela étant dit, il existe parfois des BIOS qui refusent de démarrer à partir d'un périphérique qui ne contient pas de table de partition. (Mais il y a aussi des BIOS qui refusent de démarrer à partir de certains périphériques externes s'ils contiennent une table de partition!) Si vous avez l'un de ces BIOS, vous devrez créer une table de partition.

Même si une table de partition n'est pas nécessaire, elle est recommandée. Vous ne perdez que quelques kilo-octets, et gagnez en lisibilité sous de nombreux systèmes d'exploitation non Linux et moins de surprise pour tout co-administrateur. Si vous connectez accidentellement votre disque à une machine exécutant Windows, il peut vous suggérer de reformater le disque s'il ne voit pas de table de partition, alors qu'il se plaindra simplement qu'il ne peut pas lire les données s'il voit une table de partition avec un type de partition qu'il ne reconnaît pas.

¹ En fait, le premier bloc, je pense, où un bloc est de 1 Ko, 2 Ko ou 4 Ko selon les options transmises mkfs.


5
Il est utilisé par le système d'exploitation invité Gentoo dans VirtualBox. J'ai créé un disque virtuel .vmdk qui back-end par un brut image.ext4. La raison pour laquelle j'utilise le disque entier pour un système de fichiers est que je veux monter le volume directement dans le système d'exploitation hôte, sans le décalage délicat de la partition comme -o loop,offset=1048576.
Xiè Jìléi

1
Dans un cas connexe, nous avons des disques FC connectés à un système. Ceux-ci sont conçus comme JBOD pour une utilisation par une base de données ou LVM, destinés à être sans partition. Lors de la réinstallation de Grub avec --recheck, il va mettre à jour sa table de mappage avec ces lecteurs sans partition, puis se plaindre quand il réprimande leur table de partition inexistante. Si je supprime ces chemins de lecteur du fichier de carte, l'avertissement disparaît.
Otheus


0

À peu près tout attend une table de partition. Je pense que vous devrez réinstaller et suivre les directives suggérées d'avoir au moins une partition / boot, swap et / root. Où est ton échange?


4
Linux s'en fiche. La plupart des BIOS ne s'en soucient pas (bien que certains le fassent). Des partitions de swap et de démarrage distinctes ne sont pas nécessaires et /bootne sont plus recommandées sur le matériel moderne (il était difficile de contourner les limitations du BIOS sur les tailles de disque et le manque de prise en charge des modes de disque avancés tels que LVM dans Grub 1).
Gilles 'SO- arrête d'être méchant'

@ Gilles Vous voulez dire, je peux avoir LVM sans séparé /boot? Si oui, pourquoi vaut-il mieux laisser /bootdans la même partition que /?
phunehehe

2
@phunehehe: Vous pouvez avoir LVM sans séparé /bootavec Lilo ou Grub 2, mais pas avec Grub 1. Un séparé /boota un coût administratif (vous devez faire une partition de plus, et vous devez faire attention à ne pas confondre /bootavec /), vous n'en utiliserez donc qu'une s'il y a une raison (telle que votre chargeur de démarrage ne comprend pas LVM).
Gilles 'SO- arrête d'être méchant'

1
@ Gilles maintenant tu me donnes envie de réinstaller ...
phunehehe

1
Vous pouvez également avoir des choses comme le chiffrement du disque entier :)
XTL
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.