Podstawowe szczegóły systemu roboczego:
Użyłem płyty CD z serwerem Ubuntu 12.04, aby zainstalować serwer.
Mam 4 dyski. Na wszystkich dyskach zrobiłem następujące, podobne do tego howto :
- utworzył partycję wymiany 2 GB
- utworzono partycję 256 GB / boot
- utworzył partycję RAID10 64 GB (dla roota)
- utworzył dużą partycję RAID10 zajmującą resztę miejsca
Sformatowałem boot jako ext3. Skonfigurowałem RAID10 na partycji głównej i dużych partycjach. Sformatowałem root jeden ext4. Na dużym utworzyłem wolumin logiczny i sformatowałem go ext4.
Powstały system działa dobrze i uruchamia się dobrze.
Szczegóły problemu:
Następnie postanowiłem udokumentować procedurę niepowodzenia. Jako pierwszy krok postanowiłem ponownie zainstalować grub.
# grub-install /dev/sda
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
# grub-install /dev/sdb
warn: This GPT partition label has no BIOS Boot Partition; embedding won't be possible!.
error: Embedding is not possible. GRUB can only be installed in this setup by using blocklists. However, blocklists are UNRELIABLE and their use is discouraged..
Wygląda na to, że się nie udało, ale wydaje się, że się poddał i nie wprowadził żadnych zmian. Więc zrestartowałem się. Uruchomienie nie powiodło się. Po prostu wisi na czarnym ekranie z migającym kursorem około 4 linii w dół. Jeśli uruchomię, przytrzymując klawisz „Shift”, po lewej stronie kursora pojawia się słowo „GRUB”, ale nie ma interaktywnego monitu.
W tym momencie użyłem dysku rozruchowego do wygenerowania tego raportu: http://paste.ubuntu.com/966531/
Uwaga w powyższym raporcie mówi, że bootloader nie wskazuje poprawnego sektora dla core.img. (sda jest wirtualnym cd; sdb jest dyskiem rozruchowym; sdc jest lustrem sdb, ale boot nie jest dublowany, istnieje tylko osobna niepowiązana partycja i sformatowana ext3; sdd i sde mają miejsce na boot, ale nie są sformatowane)
Następnie uruchomiłem system z dysku CD serwera Ubuntu, uruchomiłem system ratunkowy i wydałem następujące polecenia, które zakończyły się bez błędów (gdzie sda to wirtualny dysk CD, a b, c, d, e to dyski, które były a, b, c , d we wcześniejszych poleceniach grub):
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
W tym momencie użyłem dysku rozruchowego do wygenerowania tego raportu: http://paste.ubuntu.com/966561/
Zauważ, że w powyższym raporcie problem dotyczący core.img zniknął. Wydaje się wskazywać na właściwy sektor.
Teraz, gdy spróbuję uruchomić, otrzymuję monit o grub. Jeśli uruchomię „set”, widzę, że root został znaleziony i ustawiony. Jeśli uruchomię „ls /”, widzę mój katalog główny z woluminu rajdowego, w tym plik jądra vmlinuz. Jeśli wpiszesz „ls / vmlinuz”, pojawi się komunikat „błąd: nie znaleziono pliku”. Mówi ten sam błąd, jeśli użyję polecenia „linux”, aby spróbować załadować jądro. Plik vmlinuz nie jest wymieniony, jeśli użyję „ls -l /”.
Zbyt szczegółowe informacje, na wypadek, gdybyś chciał przestrzegać:
Zauważyłem, że nie ma również /boot/grub/grub.cfg, więc pobiegłem
# grub-mkconfig -o /boot/grub/grub.cfg
Ale problem pozostaje.
Jeśli użyję narzędzia „gptsync”, to zachowanie się nie zmieni.
Dysk rozruchowy nie naprawi systemu, ponieważ chce, żebym uruchomił system z włączonym EFI. Krótko się temu przyjrzałem, ale nie wiem, jak to działa. Znalazłem powłokę UEFI w moich opcjach uruchamiania, ale nic o tym nie wiem i nie wiem, jak zmienić stamtąd start (np. Aby uruchomić CD z tej powłoki EFI).
Przeczytałem również tę stronę , ale Ubuntu nie ma polecenia „grub”, więc nie mogę dokładnie go wykonać. Mógłbym po prostu zainstalować to polecenie, ale bardziej ciekawi mnie, jak instalator Ubuntu zdołał go zainstalować, zamiast mieć inną konfigurację. Czy używał list blokujących?
Oto dane wyjściowe parted podczas rozruchu na dysku rozruchowym (gdzie tutaj sdb jest pierwszym dyskiem twardym, sda po uruchomieniu z dysku, a „boot” zmienia się na „bios_grub” w linku 2 wklej):
Model: ATA Hitachi HUA72303 (scsi)
Disk /dev/sdb: 3001GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 2000MB 2000MB linux-swap(v1) swap1
2 2000MB 2256MB 256MB ext3 boot1 boot (this says bios_grub in 2nd link)
3 2256MB 66.3GB 64.0GB root1 raid
4 66.3GB 3001GB 2934GB data1 raid
Oto niepowiązana super stara maszyna wirtualna do porównania (dla każdego, kto nie zna dysku rozruchowego ): http://paste.ubuntu.com/966799/
Oto najnowsza pasta z systemu problemów, po uruchomieniu powyższego grub-mkconfig, a także ustawieniu „bios_grub” z powrotem na „boot”. http://paste.ubuntu.com/966808/
Porównując oba, wygląda to interesująco:
sdb2: __________________________________________________________________________
File system:
Boot sector type: Grub2's core.img
Boot sector info:
Mounting failed: mount: unknown filesystem type ''
md/bcserver8:0: ________________________________________________________________
File system: ext4
Boot sector type: -
Boot sector info:
Operating System: Ubuntu 12.04 LTS
Boot files: /boot/grub/grub.cfg /etc/fstab /boot/grub/core.img
Wygląda na to, że raid ma pliki rozruchowe, a sdb2 nie jest sformatowany. (pomimo tego system uruchomił się przed uruchomieniem grub-install). Z ratunkowej płyty CD „mount -t ext3 / dev / sdb2 / boot” kończy się niepowodzeniem. Ale ma to sens, że wprowadzałoby to zamieszanie, ponieważ grub używa jawnie partycji 2 (2 w poleceniu parted, które włącza bios_grub).
Zrobiłem więc coś takiego:
# mkfs.ext3 -L boot1 /dev/sdb2
# mv boot boot_on_root
# mkdir boot
# mount /dev/sdb2 boot
# rsync -avHP boot_on_root/ boot/
# parted /dev/sdb set 2 bios_grub on
# parted /dev/sdc set 2 bios_grub on
# grub-install /dev/sdb
# grub-install /dev/sdc
Następnie uruchomiłem ponownie i znów mam czarny ekran, bez monitu. http://paste.ubuntu.com/966848/
Więc w tym momencie, zgaduję, że kiedy ustawiony jest bios_grub, grub nie instaluje się w MBR, a nie w systemie plików ext3 na ext3, ale na samej partycji, tak jakby to była EFI ... co oczywiście bałagan tam system plików ext3. I po krótkim czytaniu o EFI, brzmiało to tak, jakby EFI zakładało, że pierwsza partycja to boot, ale w moim przypadku pierwszą jest zamiana, a także powinna to być FAT, a nie coś niemożliwego do ... sens, wciąż jestem całkowicie zagubiony bez pojęcia. [EDYCJA: teraz mam wskazówkę ... pomiń trochę w celu aktualizacji]
A teraz, kiedy klikam naprawę na dysku rozruchowym, pojawia się pytanie o coś innego. Ostatnim razem błąd został ukryty pod oknem i musiałem odciągnąć drugiego, aby go zobaczyć. Tym razem główne okno zniknęło, a nowe okno mówi:
GPT detected. You may want to retry after creating a
BIOS-Boot partition (>1Mo, flag). Do you want to continue?
Więc kliknąłem tak i powiedziałem, że naprawiono pomyślnie, i utworzyłem kolejną pastę: http://paste.ubuntu.com/966862/
Ale nadal mam czarny ekran z migającym kursorem.
Teraz moją teorią jest to, że boot został nadpisany przez beztłuszczową rzecz nie będącą EFI, która jest po prostu grubowskim kodem, który wcześniej byłby w sektorach 0-63. Na szczęście natrafiłem na bardzo jasne stwierdzenie na tej stronie, które prawdopodobnie zakończyło moje zrozumienie, co to wszystko oznacza. A potem, kiedy to odkryłem, Jeremy opublikował odpowiedź, która, jeśli jest prawdziwa, potwierdza, że jest to brakująca koncepcja klucza. http://blog.psych0tik.net/2011/08/grub-embedding-blocklists-and-bios_grub-partitions/
Pytania:
Co się dzieje? Dlaczego grub nie powinien się uruchomić? Dlaczego mówi „nie znaleziono pliku”?
Dlaczego Grub nie chce instalować bez tego ustawienia, które ustawiłem z parted (które nie zostało ustawione przez instalator Ubuntu)? Myślałem, że wszystko, co potrzebne do zainstalowania, to osobny / boot, który nie znajduje się w LVM ani w programowej macierzy RAID, ponieważ mój root jest w RAID, a tablica partycji to GPT.
W jaki sposób instalator CD Ubuntu instaluje go bez tego problemu i bez ustawienia bios_grub?
Zastanowiłbym się również nad wykorzystaniem EFI. Jeśli jest to dobry pomysł i istnieje standardowy sposób, aby go skonfigurować, zawsze jestem gotów uczyć się nowych rzeczy.
Najszybszą odpowiedzią, która sprawiłaby mi radość, nawet bez odpowiedzi na wszystkie moje pytania, byłby zestaw poleceń, które mogłem uruchomić z ratunkowej płyty CD, aby naprawić bootloader w taki sam sposób, jak zrobiła to instalacyjna płyta CD. Byłoby również bardzo miło, gdybym mógł uruchomić je z uruchomionym systemem, zamiast z CD.