如何将GRUB安装到没有分区表的整个ext4磁盘上?

如何将GRUB安装到没有分区表的整个ext4磁盘上?

目前我已经将整个磁盘/dev/sda格式化为ext4,并安装了Gentoo。

(没有MBR,根本没有分区。)

但最后,我无法在上面安装 GRUB,因为 GRUB 似乎需要写入 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. 

也不起作用grub

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

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

有什么方法可以在没有 MBR 的情况下将 GRUB 安装到 /dev/sda 中吗?

PS/boot目录和grub.conf文件:

# 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

答案1

BIOS 读取磁盘的第一个扇区(512 字节)并分支到该扇区。如果您的磁盘包含 PC 式分区,则第一个扇区还包含分区表。如果您的磁盘包含单个文件系统,则第一个扇区包含文件系统决定放在那里的任何内容。对于 ext[234](以及许多其他文件系统),第一个扇区 1 是为引导加载程序保留的(并且最初被清零)。您可以在/dev/sda.

话虽如此,有时 BIOS 会拒绝从不包含分区表的设备启动。 (但也有一些 BIOS,如果它们包含分区表,则拒绝从某些外部设备启动!)如果您有这些 BIOS 之一,则必须创建分区表。

即使分区表不是必需的,也建议使用。您只浪费了几千字节,并且在许多非 Linux 操作系统下获得了可读性,并且不会让任何协同系统管理员感到意外。如果您不小心将磁盘插入运行 Windows 的计算机,如果没有看到分区表,它可能会建议您重新格式化磁盘,而如果看到带有以下内容的分区表,它只会抱怨无法读取数据它无法识别的分区类型。

¹事实上,我认为第一个块的大小为 1kB、2kB 或 4kB,具体取决于传递给 的选项mkfs

答案2

GRUB 并不强制写入 MBR。您可以将其安装在分区引导扇区上,并让 MBR 中的其他引导加载程序加载它,例如 Windows 7 加载程序。

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

答案3

几乎所有东西都需要分区表。我认为您必须重新安装,并遵循建议的指南,至少有一个 /boot、swap 和 /root 分区。你的交换在哪里?

相关内容