Як встановити 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

Буде корисно, якщо ви зможете включити використану команду та повідомлення про помилку, яке ви отримали при спробі встановлення. Наприклад, ви пробували grub-install /dev/sda?
phunehehe

Я вже відтворив макет диска за допомогою MBR і скопіював сировинну файлову систему в єдиний розділ диска. Хоча я знову спробую встановити нову установку Gento і вставити повідомлення про помилку через деякий час. Спасибі
Xiè Jìléi

EDIT Я додав повідомлення про помилку.
Xiè Jìléi

Відповіді:


5

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

При цьому є випадкові BIOS, які відмовляються завантажуватися з пристрою, що не містить таблиці розділів. (Але також є BIOS, які відмовляються завантажуватися з деяких зовнішніх пристроїв, якщо вони містять таблицю розділів!) Якщо у вас є одна з цих BIOS, вам доведеться створити таблицю розділів.

Навіть якщо таблиця розділів не потрібна, рекомендується. Ви витрачаєте лише кілька кілобайт і отримуєте читабельність у багатьох ОС, що не є Linux, і менше здивування для будь-якого спільного sysadmin. Якщо ви випадково підключите свій диск до машини з ОС Windows, він може запропонувати вам переформатувати диск, якщо він не бачить таблицю розділів, тоді як він просто скаржиться, що не може прочитати дані, якщо бачить таблицю розділів з тип розділу, який він не розпізнає.

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


5
Він використовується гостьовою ОС Gentoo у VirtualBox. Я створив віртуальний диск .vmdk, який є бек-файлом image.ext4. Причина, за якою я використовую весь диск для однієї файлової системи, полягає в тому, що я хочу монтувати гучність безпосередньо в хост-операційній системі без хитромудрого зсуву розділу -o loop,offset=1048576.
Xiè Jìléi

1
У відповідному випадку ми маємо диски FC, приєднані до системи. Вони позначаються як JBOD для використання в базі даних або LVM, призначені для безроздільної роботи. Після повторної інсталяції Grub --recheck, він збирається оновити свою таблицю карт за допомогою цих дисків без розділів, а потім скаржиться, коли перевіряє їх неіснуючу таблицю розділів. Якщо я видаляю ці контури диска з файлу карти, попередження знімається.
Отей


0

Практично все очікує таблицю розділів. Я думаю, вам доведеться перевстановити та дотримуватися запропонованих вказівок щодо наявності принаймні / boot, swap та / root розділу. Де ваш своп?


4
Linux не байдуже. Більшість BIOS не хвилюються (хоча деякі це роблять). Окремі розділи для заміни та завантаження не потрібні, і /bootбільше не рекомендується застосовувати сучасне обладнання (це було хиткою обходити обмеження BIOS на розміри дисків та відсутність підтримки для розширених режимів диска, таких як LVM у Grub 1).
Жил "ТАК - перестань бути злим"

@Gilles Ви маєте на увазі, я можу мати LVM без відокремленої /boot? Якщо так, то чому краще залишити /bootв тій же перегородці, що і /?
phunehehe

2
@phunehehe: Ви можете мати LVM без окремого /bootз Lilo або Grub 2, але не з Grub 1. Окремий /bootмає адміністративні витрати (потрібно зробити ще один розділ, і вам потрібно бути обережним, щоб не змішуватися /bootз ним /), тож ви використовували б його лише за наявності причини (наприклад, ваш завантажувач не розуміє LVM).
Жил "ТАК - перестань бути злим"

1
@Gilles тепер ти змушуєш мене відчувати себе перевстановленням ...
phunehehe

1
Ви також можете мати такі речі, як шифрування цілого диска :)
XTL
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.