Wie installiere ich GRUB auf einer ganzen ext4-Festplatte ohne Partitionstabelle?

15

Derzeit habe ich die gesamte Festplatte /dev/sdaals ext4 formatiert und Gentoo installiert.

(Es gibt keinen MBR, überhaupt keine Partition.)

Aber schließlich kann ich GRUB nicht darauf installieren, da GRUB anscheinend an MBR schreiben muss.

# 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. 

auch nicht grubarbeiten,

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

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

Wie kann ich GRUB ohne MBR in / dev / sda installieren?

PS Das /bootVerzeichnis und die grub.confDateien:

# 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
quelle
Es ist hilfreich, wenn Sie den Befehl, den Sie verwendet haben, und die Fehlermeldung, die Sie bei der Installation erhalten haben, angeben. Haben Sie es zum Beispiel versucht grub-install /dev/sda?
Phunehehe
Ich habe das Festplattenlayout bereits mit MBR neu erstellt und das unformatierte Dateisystem in die einzelne Partition der Festplatte kopiert. Ich werde jedoch eine neue Gento-Installation wiederholen und die Fehlermeldung einige Zeit später einfügen. Danke
Xiè Jìléi
BEARBEITEN Ich habe die Fehlermeldung hinzugefügt.
Xiè Jìléi

Antworten:

5

Das BIOS liest den ersten Sektor (512 Byte) der Festplatte und verzweigt in diesen Sektor. Wenn Ihre Festplatte Partitionen im PC-Stil enthält, enthält der erste Sektor auch die Partitionstabelle. Wenn Ihre Festplatte ein einzelnes Dateisystem enthält, enthält der erste Sektor alles, was das Dateisystem dort ablegen möchte. Im Fall von ext [234] (und vielen anderen Dateisystemen) ist der erste Sektor¹ für den Bootloader reserviert (und wird anfänglich auf Null gesetzt). Du kannst Grub auf installieren /dev/sda.

Abgesehen davon gibt es gelegentlich BIOS, die sich weigern, von einem Gerät zu starten, das keine Partitionstabelle enthält. (Es gibt aber auch BIOS, die sich weigern, von einigen externen Geräten zu booten, wenn sie eine Partitionstabelle enthalten!) Wenn Sie eines dieser BIOS haben, müssen Sie eine Partitionstabelle erstellen.

Auch wenn eine Partitionstabelle nicht erforderlich ist, wird sie empfohlen. Sie verschwenden nur ein paar Kilobyte und erhalten Lesbarkeit unter vielen Nicht-Linux-Betriebssystemen und weniger Überraschung für jeden Co-Sysadmin. Wenn Sie Ihre Festplatte versehentlich an einen Computer anschließen, auf dem Windows ausgeführt wird, empfiehlt es sich möglicherweise, die Festplatte neu zu formatieren, wenn keine Partitionstabelle angezeigt wird. Es wird jedoch nur beanstandet, dass die Daten nicht gelesen werden können, wenn eine Partitionstabelle mit angezeigt wird Ein Partitionstyp, den es nicht erkennt.

¹ In der Tat, der erste Block, denke ich, wo ein Block 1kB, 2kB oder 4kB ist, abhängig von den übergebenen Optionen mkfs.

Gilles 'SO - hör auf böse zu sein'
quelle
5
Es wird vom Gast-Gentoo-Betriebssystem in VirtualBox verwendet. Ich habe ein virtuelles .vmdk-Laufwerk erstellt, das durch ein RAW-Back-End ersetzt wird image.ext4. Der Grund, warum ich die gesamte Festplatte für ein Dateisystem verwende, ist, dass ich das Volume direkt im Host-Betriebssystem einbinden möchte, ohne dass der schwierige Partitions-Offset wie -o loop,offset=1048576.
Xiè Jìléi
1
In einem verwandten Fall sind FC-Festplatten an ein System angeschlossen. Diese sind als JBOD für die Verwendung durch eine Datenbank oder LVM gedacht, die partitionslos sein sollen. Wenn Sie Grub mit erneut installieren --recheck, wird die Zuordnungstabelle mit diesen Laufwerken ohne Partition aktualisiert. Beschweren Sie sich dann, wenn die nicht vorhandene Partitionstabelle überprüft wird. Wenn ich diese Laufwerkspfade aus der Kartendatei entferne, verschwindet die Warnung.
Otheus
0

Fast alles erwartet eine Partitionstabelle. Ich denke, Sie müssen neu installieren und die vorgeschlagenen Richtlinien befolgen, um mindestens eine / boot-, Swap- und / root-Partition zu haben. Wo ist dein Swap?

Keith
quelle
4
Linux ist das egal. Die meisten BIOSe interessieren sich nicht (obwohl einige tun). Separate Swap- und Boot-Partitionen sind nicht erforderlich und werden /bootauf moderner Hardware nicht mehr empfohlen (es war ein Trick, die BIOS-Beschränkungen hinsichtlich der Festplattengröße zu umgehen und erweiterte Festplattenmodi wie LVM in Grub 1 nicht zu unterstützen).
Gilles 'SO - hör auf böse zu sein'
@Gilles Du meinst, ich kann LVM ohne eine getrennte haben /boot? Wenn ja, warum ist es besser, /bootin derselben Partition wie zu belassen /?
Phunehehe
2
@phunehehe: Sie können LVM haben , ohne ein separate /bootmit Lilo oder Graben 2, aber nicht mit Graben 1. Eine Trennung /boothat ein administrativ Kosten (Sie müssen eine weitere Partition machen, und Sie müssen vorsichtig sein , nicht zu verwechseln /bootmit /), Sie würden also nur einen verwenden, wenn es einen Grund gibt (z. B. wenn Ihr Bootloader LVM nicht versteht).
Gilles 'SO- hör auf böse zu sein'
1
@ Gilles jetzt fühlen Sie mich wie eine Neuinstallation ...
Phunehehe
1
Sie können auch Dinge wie die Verschlüsselung der gesamten Festplatte haben :)
XTL