Obecnie mam cały dysk /dev/sda
sformatowany 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 grub
dział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 /boot
Katalog i grub.conf
pliki:
# 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
boot
grub-legacy
Xiè Jìléi
źródło
źródło
grub-install /dev/sda
?Odpowiedzi:
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
.źródło
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
.--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.Nie jest obowiązkowe zapisywanie GRUB-a w MBR. Możesz zainstalować go w sektorze rozruchowym partycji i pozwolić na załadowanie go przez inny moduł ładujący rozruchu z MBR, na przykład moduł ładujący system Windows 7.
http://www.linuxselfhelp.com/gnu/grub/html_chapter/grub_3.html
źródło
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?
źródło
/boot
nie 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)./boot
? Jeśli tak, to dlaczego lepiej pozostawić/boot
na tej samej partycji co/
?/boot
z Lilo lub Grub 2, ale nie z Grub 1. oddzielić/boot
ma kosztów administracyjnych (trzeba wykonać jeszcze jedną partycję, i trzeba uważać, aby nie mieszać się/boot
z/
) więc użyjesz tylko jednego, jeśli istnieje powód (np. twój program ładujący nie rozumie LVM).