Jak zainstalować GRUB na całym dysku ext4 bez tablicy partycji?


15

Obecnie mam cały dysk /dev/sdasformatowany jako ext4 i zainstalowałem Gentoo.

(Brak MBR, brak partycji).

Ale w końcu nie mogę zainstalować GRUB-a, ponieważ wygląda na to, że GRUB musi napisać do 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. 

też nie grubdziała

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

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

W jaki sposób mogę zainstalować GRUB w / dev / sda bez MBR?

PS /bootKatalog i grub.confpliki:

# 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

Pomocne będzie dołączenie użytej komendy i komunikatu o błędzie otrzymanego podczas próby instalacji. Na przykład próbowałeś grub-install /dev/sda?
phunehehe

Odtworzyłem już układ dysku za pomocą MBR i skopiowałem surowy system plików na pojedynczą partycję dysku. Chociaż spróbuję ponownie zainstalować Gento i wkleić komunikat o błędzie jakiś czas później. Dzięki
Xiè Jìléi

EDYCJA Dodałem komunikat o błędzie.
Xiè Jìléi

Odpowiedzi:


5

BIOS odczytuje pierwszy sektor (512 bajtów) dysku i rozgałęzia się na nim. Jeśli twój dysk zawiera partycje typu PC, pierwszy sektor zawiera również tablicę partycji. Jeśli twój dysk zawiera pojedynczy system plików, pierwszy sektor zawiera wszystko, co system plików zdecyduje się tam umieścić. W przypadku ext [234] (i wielu innych systemów plików) pierwszy sektor¹ jest zarezerwowany dla bootloadera (i początkowo jest zerowany). Możesz zainstalować Grub na /dev/sda.

To powiedziawszy, czasami zdarzają się BIOS-y, które odmawiają rozruchu z urządzenia, które nie zawiera tablicy partycji. (Ale są też BIOS-y, które odmawiają rozruchu z niektórych urządzeń zewnętrznych, jeśli zawierają tablicę partycji!) Jeśli masz jeden z tych BIOS-ów, musisz utworzyć tablicę partycji.

Nawet jeśli tablica partycji nie jest konieczna, jest zalecana. Marnujesz tylko kilka kilobajtów i zyskujesz czytelność w wielu systemach operacyjnych innych niż Linux, a także mniej zaskoczenia dla każdego współużytkownika. Jeśli przypadkowo podłączysz dysk do komputera z systemem Windows, może to sugerować sformatowanie dysku, jeśli nie widzi on tablicy partycji, ale po prostu narzeka, że ​​nie może odczytać danych, jeśli zobaczy tablicę partycji z typ partycji, której nie rozpoznaje.

¹ Myślę, że pierwszy blok, gdzie blok ma wielkość 1kB, 2kB lub 4kB, w zależności od przekazanych opcji mkfs.


5
Jest używany przez gościa Gentoo OS w VirtualBox. Utworzyłem dysk wirtualny .vmdk, który jest zapleczem surowego image.ext4. Powodem, dla którego używam całego dysku dla jednego systemu plików jest to, że chcę zamontować wolumin bezpośrednio w systemie operacyjnym hosta, bez trudnych przesunięć partycji, takich jak -o loop,offset=1048576.
Xiè Jìléi

1
W pokrewnym przypadku mamy dyski FC podłączone do systemu. Są one rozumiane jako JBOD do użytku przez bazę danych lub LVM, które mają być bez partycji. Podczas ponownej instalacji Gruba z --recheck, zaktualizuje swoją tabelę map o te dyski bez partycji, a następnie narzeka, gdy sprawdzi ich nieistniejącą tablicę partycji. Jeśli usunę te ścieżki dysków z pliku mapy, ostrzeżenie zniknie.
Otheus


0

Prawie wszystko oczekuje tabeli partycji. Myślę, że będziesz musiał ponownie zainstalować i postępować zgodnie z sugerowanymi wytycznymi dotyczącymi posiadania przynajmniej partycji / boot, swap i / root. Gdzie jest twoja zamiana?


4
Linux nie dba o to. Większość BIOS-ów to nie obchodzi (choć niektóre tak robią). Oddzielne partycje wymiany i rozruchu nie są konieczne i /bootnie są już zalecane na nowoczesnym sprzęcie (kludge pomijało ograniczenia BIOS-u dotyczące rozmiarów dysków i brak obsługi zaawansowanych trybów dysku, takich jak LVM w Grub 1).
Gilles „SO- przestań być zły”

@Gilles Masz na myśli, że mogę mieć LVM bez oddzielnego /boot? Jeśli tak, to dlaczego lepiej pozostawić /bootna tej samej partycji co /?
phunehehe

2
@phunehehe: Można mieć LVM bez oddzielna /bootz Lilo lub Grub 2, ale nie z Grub 1. oddzielić /bootma kosztów administracyjnych (trzeba wykonać jeszcze jedną partycję, i trzeba uważać, aby nie mieszać się /bootz /) więc użyjesz tylko jednego, jeśli istnieje powód (np. twój program ładujący nie rozumie LVM).
Gilles „SO- przestań być zły”

1
@Gilles, teraz sprawiasz, że mam ochotę ponownie zainstalować ...
phunehehe

1
Możesz także mieć takie funkcje jak szyfrowanie całego dysku :)
XTL
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.