Как установить GRUB на весь диск ext4 без таблицы разделов?

15

В настоящее время я весь диск , /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

В любом случае я могу установить GRUB в / dev / sda без MBR?

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
Xiè Jìléi
источник
Будет полезно, если вы включите команду, которую вы использовали, и сообщение об ошибке, которое вы получили при попытке установить. Например, вы пробовали grub-install /dev/sda?
phunehehe
Я уже воссоздал структуру диска с MBR и скопировал необработанную файловую систему в один раздел диска. Тем не менее, я попробую новую установку Gento и вставлю сообщение об ошибке через некоторое время. Спасибо
Xiè Jìléi
РЕДАКТИРОВАТЬ Я добавил сообщение об ошибке.
Xiè Jìléi

Ответы:

5

BIOS считывает первый сектор (512 байт) диска и разветвляется на него. Если ваш диск содержит разделы в стиле ПК, первый сектор также содержит таблицу разделов. Если ваш диск содержит одну файловую систему, первый сектор содержит все, что файловая система решит поместить туда. В случае ext [234] (и многих других файловых систем) первый сектор¹ зарезервирован для загрузчика (и первоначально обнуляется). Вы можете установить Grub на /dev/sda.

Это, как говорится, время от времени BIOS, которые отказываются загружаться с устройства, которое не содержит таблицу разделов. (Но есть также BIOS, которые отказываются загружаться с некоторых внешних устройств, если они содержат таблицу разделов!) Если у вас есть один из этих BIOS, вам придется создать таблицу разделов.

Даже если таблица разделов не нужна, рекомендуется. Вы тратите всего несколько килобайт и получаете удобочитаемость во многих операционных системах, отличных от Linux, и меньше удивляет любого со-системного администратора. Если вы случайно подключите диск к машине под управлением Windows, он может предложить переформатировать диск, если он не видит таблицу разделов, тогда как он просто будет жаловаться, что не может прочитать данные, если видит таблицу разделов с тип раздела, который он не распознает.

¹ На самом деле, первый блок, я думаю, где блок 1 кБ, 2 кБ или 4 кБ, в зависимости от переданных опций mkfs.

Жиль "ТАК - прекрати быть злым"
источник
5
Используется гостевой ОС Gentoo в VirtualBox. Я создал виртуальный диск .vmdk, который back-end по сырью image.ext4. Причина, по которой я использую весь диск для одной файловой системы, заключается в том, что я хочу смонтировать том непосредственно в хост-ОС, без хитрого смещения раздела, как -o loop,offset=1048576.
Xiè Jìléi
1
В похожем случае у нас есть диски FC, подключенные к системе. Они предназначены как JBOD для использования базой данных или LVM, предназначенными для работы без разделов. При переустановке Grub с помощью --recheckон будет обновлять свою таблицу сопоставления этими дисками без разделов, а затем жаловаться, когда проверяет их несуществующую таблицу разделов. Если я удалю эти пути дисков из файла карты, предупреждение исчезнет.
Отей
2

Не обязательно, что GRUB должен быть записан в MBR. Вы можете установить его в загрузочный сектор раздела и позволить другому загрузчику из MBR загрузить его, например, загрузчику Windows 7.

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

Мадхур Ахаджа
источник
0

Почти все ожидает таблицы разделов. Я думаю, вам придется переустановить и следовать предложенным рекомендациям по крайней мере, иметь разделы / boot, swap и / root. Где твой своп?

Кит
источник
4
Linux не волнует Большинство BIOS не заботятся (хотя некоторые делают). Отдельные разделы подкачки и загрузки не нужны, и /bootбольше не рекомендуется на современном оборудовании (это был обходной путь, чтобы обойти ограничения BIOS по размерам дисков и отсутствие поддержки расширенных режимов диска, таких как LVM в Grub 1).
Жиль "ТАК - перестань быть злым"
@ Жиль Вы имеете в виду, я могу иметь LVM без разделения /boot? Если так, то почему лучше оставить /bootв том же разделе, что и /?
phunehehe
2
@phunehehe: Вы можете иметь LVM без отдельного /bootс Lilo или Grub 2, но не с Grub 1. отдельно /bootимеет административные расходы (вам нужно сделать еще один раздел, и вы должны быть осторожны , чтобы не перепутать /bootс /), поэтому вы можете использовать только один, если есть причина (например, ваш загрузчик не понимает LVM).
Жиль "ТАК ... перестать быть злым"
1
@ Жиль, теперь ты заставляешь меня испытывать
желание
1
Вы также можете иметь такие вещи, как шифрование всего диска :)
XTL