„Partycja rozruchowa EFI” i „biosgrub”

21

Po co mi to? Zainstalowałem Ubuntu w systemie innym niż UEFI (główny rekord rozruchowy) i zainstalowałem Ubuntu bez „biosgrub” i działa dobrze, a innym razem jestem proszony o utworzenie partycji „biosgrub”. Nie mam pojęcia, dlaczego czasami tego potrzebuję, a innych nie (oba były w tym samym systemie).

To samo dzieje się, gdy używam UEFI (GUID Partition Table). Jedyną różnicą jest to, że poproszono mnie o utworzenie partycji rozruchowej EFI, ale tak jak w przypadku biosgrub, czasami jestem proszony o to, a czasem nie jestem proszony o to.

W przypadku mojej bieżącej instalacji zostałem poproszony o jej wykonanie, ale nie zrobiłem tego i mój system jest w porządku. Nie ma zmian w systemie, tym samym sprzęcie, BIOS-ie itp. Czy ktoś mógłby rzucić na to światło?

GhostMotleyX
źródło
2
Musisz być konsekwentny podczas uruchamiania. Tylko jeśli w trybie rozruchowym UEFI potrzebujesz partycji efi i tylko w trybie rozruchowym BIOS z partycją gpt będziesz potrzebować partycji bios_grub. Jeśli używasz UEFI, ale uruchom Boot-Repair w trybie BIOS i spróbuj zainstalować grub w trybie BIOS, poprosi cię o utworzenie partycji bios_grub.
oldfred

Odpowiedzi:

34

Istnieją cztery warunki (BIOS vs. EFI i MBR vs. GPT), ale dwa z nich mają identyczne potrzeby (a jeden z nich jest niezwykle rzadki):

  • Na tradycyjnym komputerze z BIOS-em i tradycyjną tablicą partycji MBR, wykonywalny kod GRUB-a rozprzestrzenia się jak spaghetti rzucane przez dziecko. Niektóre z nich znajdują się w sekcji kodu rozruchowego MBR, niektóre w sektorach post-MBR, które są oficjalnie nieprzydzielone, a niektóre z nich znajdują się na /bootpartycji Linux . To prawdziwy bałagan i działa tylko dlatego, że programiści mieli dosłownie dziesięciolecia, aby stworzyć sprytne hacki i wypracować (prawie) wszystkie załamania.
  • Na tradycyjnym komputerze opartym na systemie BIOS z nową tabelą partycji GUID (GPT) kod GRUB jest podobny do tego w poprzednim przypadku; sektory bezpośrednio po MBR nie są jednak nieprzydzielone; są używane przez sam GPT. GPT nie oferuje analogicznego miejsca na przejęcie GRUB-a, więc programiści GRUB-a zdecydowali się na partycję rozruchową systemu BIOS (którą GPart utworzył i oznaczył partedza pomocą bios_grubflagi), aby przechowywać kod, który byłby zapisywany w sektorach post-MBR na dysku MBR. Jest to w rzeczywistości bezpieczniejsze i czystsze niż podejście MBR, ponieważ służy do ochrony kodu GRUB przed innymi programami, które mogą próbować wykorzystać to nieprzydzielone miejsce.
  • Na komputerze z nowszym EFI niż BIOSem moduły ładujące nie są przechowywane w MBR, w oficjalnie nieprzydzielonych sektorach post-MBR ani w partycjach rozruchowych BIOS; zamiast tego programy ładujące znajdują się jako zwykłe pliki na partycji FAT znanej jako EFI System Partition (ESP) . ( Mylące jest to, że instalatory Debiana i Ubuntu odnoszą się do ESP pod nazwą „partycja rozruchowa EFI”, ale ta nazwa jest niestandardowa. GParted i partedidentyfikuje ESP jako mający „bootflag ”, chociaż terminologia ta oznacza coś zupełnie innego na dyskach MBR.) ESP może istnieć na dysku GPT lub dysku MBR, ale ten pierwszy jest znacznie bardziej powszechny na komputerach opartych na EFI. Podejście EFI jest znacznie bezpieczniejsze i znacznie bardziej elastyczny niż podejście BIOS, ponieważ nie ukrywa surowego kodu w dziwnych miejscach; programy ładujące znajdują się w plikach, podobnie jak programy na poziomie systemu operacyjnego. Ułatwia to ich identyfikację i manipulację. (OTOH, EFI przechowuje również dane na modułach ładujących w NVRAM, co powoduje drugi punkt awarii w procesie rozruchu. Nowość EFI oznacza również, że nie jest tak dobrze przetestowany, co odpowiada za szereg problemów specyficznych dla EFI).

GhostMotleyX, twój komentarz do odpowiedzi LiveWireBT stwierdził, że „najlepszym” sposobem instalacji jest BIOS / MBR. Jest to oczywiście subiektywne, ale nie zgadzam się z tą oceną. Podejście BIOS / MBR jest najmniej bezpieczne i najbardziejniezdarny z trzech podejść, które właśnie przedstawiłem. Podejście EFI jest najbezpieczniejszym i najbardziej elastycznym podejściem. Podejrzewam, że wiesz, że wymagane są oddzielne partycje dla podejść GRUB / GPT i EFI, ale to nie jest wielka sprawa. Poza konfigurowaniem systemu lub konserwacją partycji, partycje te będą dla ciebie prawie niewidoczne i dadzą ci dużą elastyczność. W przeciwieństwie do MBR, GPT nie ogranicza się do czterech podstawowych partycji, więc nie musisz gromadzić podstawowych partycji jak krasnolud gromadzący swoje złoto.

Rod Smith
źródło
Dziękujemy wszystkim, którzy odpowiedzieli, bardzo pomocne informacje; zwłaszcza Rod Smith.
GhostMotleyX
Więc w systemie rozruchowym EFI nadal potrzebujesz tylko jednej małej partycji? Sektor MBR-boot-sektor i zawartość EF02partycji gdisk (lub odpowiednik) mogą być przechowywane w plikach na partycji systemowej EFI w formacie FAT (z typem gdisk EF00)?
Peter Cordes
Peter, tak, to w zasadzie poprawne; Programy ładujące EFI to pliki przechowywane w ESP, a nie w sektorach rozruchowych dysku lub partycji.
Rod Smith
Co jeśli chciałbym obsługiwać zarówno rozruch UEFI, jak i BIOS? Czy miałbym wtedy dwie kopie gruba, jedną w drugiej, EFI System Partitiona drugą w BIOS boot partition?
Hello World,
Witaj świecie, potrzebujesz jednego trybu EFI i jednego modułu ładującego BIOS. Nie muszą oba być GRUB. W rzeczywistości zalecam, aby przynajmniej jeden z nich nie był, ponieważ może to być dość mylące. Taka konfiguracja nie ma jednak sensu w przypadku uruchamiania jednego systemu operacyjnego. Może to być konieczne w przypadku niektórych scenariuszy podwójnego rozruchu - powiedzmy, jeśli jeden system operacyjny nie ma modułu ładującego w trybie EFI, a drugi musi z jakiegoś powodu uruchamiać się w trybie EFI (powiedzmy, jeśli jest to system Windows, a dysk ma ponad 2 TB, więc potrzebujesz GPT do obsługi pełnego rozmiaru).
Rod Smith,
7

Należy utworzyć partycję biosgrub na dysku partycjonowanym GPT podczas konfigurowania starszego rozruchu lub partycję rozruchową EFI (dla dysku partycjonowanego GPT lub MBR) podczas konfigurowania rozruchu UEFI.

  • GRUB wymaga partycji rozruchowej systemu BIOS (2 MiB, brak systemu plików, EF02kod typu w gdisk lub flaga bios_grub w GNU Parted) w systemach BIOS, aby osadzić swój core.imgplik z powodu braku luki po osadzeniu MBR w dyskach GPT . [...]

https://wiki.archlinux.org/index.php/GPT#Bootloader_Support

LiveWireBT
źródło
1
Dzięki, myślę, że teraz rozumiem; jeśli instaluję Ubuntu spoza UEFI na dysku MBR, nie będę potrzebował biosgrub. Jeśli zainstaluję Ubuntu w UEFI na dysku GPT, muszę utworzyć partycję EFI. I wtedy niespójność występowała, gdy instalowałem Ubuntu non-UEFI na dysku GPT, a także UEFI z MBR. Więc najlepszym sposobem teoretycznie na zainstalowanie Ubuntu jest Non-UEFI z tablicą partycji MBR lub UEFI z tablicą partycji GPT.
GhostMotleyX
@GhostMotleyX To prawda.
LiveWireBT,
nawet 1MiB to więcej niż wystarcza. Chciałbym umieścić go przed pierwszą „normalną” partycją dopasowaną do 1MiB, jak wyjaśniłem w ostatnim akapicie en.wikipedia.org/wiki/BIOS_boot_partition#Overview (który właśnie edytowałem). Nie zdecydowałem, czy wolę użyć sortpolecenia gdisk do zmiany numeracji partycji w kolejności od sektora startowego, czy też chcę pozostawić go jako sdc4lub w / e. Prawdopodobnie sortowanie jest mniej dziwne, więc moje partycje gruba zawsze będą sdX1.
Peter Cordes
3

Podam jeszcze jeden punkt / motyw do posiadania zarówno EFI, jak i BIOS-u grub.

Pamięć USB do uruchamiania pętli Live SystemRescueCD.iso z Grub2.

Czemu? Prosta odpowiedź: uruchomi się na wielu komputerach, niektóre mają UEFI, niektóre mają tylko 32-bitowy stary BIOS itp.

Prawdziwie złożony motyw: w miarę możliwości korzystaj z zaawansowanego sprzętu (UEFI).

Przykład użycia na żywo:

  • Pamięć USB (sformatowana w trybie GPT) z czterema partycjami
  • Pierwsza partycja (widoczna z Windows 7 i nowszych) na NTFS z resztą wielkości pamięci USB
  • Druga partycja dla plików Grub2 i SystemRescueCD.iso z co najmniej 1GiB (lepiej, jeśli 2GiB, aby można było przenosić dwie wersje SystemRescueCD.iso w tym samym czasie, tylko do testowania nowej wersji przed zastąpieniem starej), zwykle używam systemu plików Ext4 dla tego
  • Trzecia partycja dla EFI (którą Windows nazywa ESP) sformatowana jako Fat32 z co najmniej 512 MB (widziałem niektóre komputery, które przy mniejszym użyciu nie pokazują pamięci USB jako nośnika startowego)
  • Czwarta partycja dla BIOS_Grub (bez formatu, ale wyczyszczona po utworzeniu)

Jedna ważna rzecz: widziałem 8GiB LG USB stric (jeden własny), który nie chce być wymieniony na fizycznym rozruchu komputera PC UEFI, jeśli partycje nie są wyrównane do cylindrów, ale można je zobaczyć na innych komputerach UEFI, a także na VirtualBOX z uruchomieniem UEFI tryb aktywowany ... podczas podziału na partycje, jeśli jest wyrównany do MiB, zużywa całą przestrzeń, nie ma końca niepodzielonego miejsca 1MiB na końcu, ale po wyrównaniu do cylindrów nie jest używana ostatnia niekompletna MiB ... jeśli wykonuję partycjonowanie MiB mając to na uwadze (innymi słowy robię ręczne wyrównywanie cylindrów) to działa, ale jak mówię, wciąż jest wyrównywane cylindrycznie (robię to ręcznie, zamiast pozwolić narzędziu do partycjonowania zrobić to za ciebie).

Jak zdobyć tak świetną pamięć USB do odzyskiwania (ma dwie sztuczki):

  1. Wyrównaj partycje do cylindrów (lepsza kompatybilność, aby po prostu wyrównać do MiB)
  2. Wykonaj grub-install --target = i386-pc, a następnie wykonaj inny grub-install --target = x86_64-efi na tej samej partycji grub, więc używasz tylko jednego grub.cfg dla obu trybów uruchamiania

Jak to uruchamia:

  • a) bootowanie ze starego BIOSu, załaduje MBR, następnie Stage2 gruba z BIOS_grub partycji, następnie core.img z partycji Grub2
  • b) bootowanie z kompatybilnego z UEFI, załaduje plik .efi z partycji ESP
  • odczytywany jest grub.cfg (jeśli istnieje na partycji grub2)
  • następnie wyświetli się menu grub2
  • następnie wybieram bootowanie z pętli SystemRescueCD.iso (z parametrem dochace), ustawiłem dwie opcje ustawione na grub.cfg, jedną na 32-bitową, jedną na 64-bitową (mam naprawdę cztery opcje, ponieważ ustawiłem na dwa parametry dostartx na boot bezpośrednio z GUI).
  • po uruchomieniu mogę wysunąć pamięć USB (cały Live Linux jest w ramdrive dzięki takiemu docache), nie trzeba wpisywać żadnych poleceń, pendrive nie jest montowany (ponownie dzięki parametrowi docache).

Za pomocą tego kija mogę uruchomić stary komputer (jeśli pozwalają na rozruch z USB) na 32 bity lub również 64 bity (jeśli mają rozszerzenie etend na procesorze), ale uruchamianie w trybie BIOS.

Za pomocą tego kija mogę również uruchomić nowy komputer (jeśli pozwalają na rozruch z USB) w wersji 32-bitowej i 64-bitowej, ale uruchamianie w trybie UEFI (ach, tak, można uruchomić w trybie UEFI, a następnie po prostu uruchomić Linux Live SystemRescueCD w wersji 32-bitowej zarówno w trybie 64-bitowym).

Mam więc wszystko w jednym nośniku rozruchowym USB do odzyskiwania, zdolnym do rozruchu w pobliżu wszystkich komputerów, nowoczesnych lub starych (potrzebuję tylko obsługi rozruchu USB), bez względu na to, czy 32-bitowy czy 64-bitowy, BIOS lub UEFI itp. I mogę wybierz, co chcę uruchomić 32-bitowy lub 64-bitowy.

Co więcej, przetestowałem na komputerze, który odmawia instalacji systemu Windows 64-bitowego (stary procesor 32-bitowy), ale mogę uruchomić 64-bitowy system Linux Live (ponieważ na tym procesorze istnieje możliwość PAE).

Uwaga dodatkowa: taka pierwsza partycja jak NTFS służy do przechowywania danych, które mogą być współużytkowane z systemem Windows 7 i nowszym (XP nie zobaczy tego, ponieważ nie obsługuje partycjonowania GPT) ... musi to być pierwsza partycja, nie trzeba jej początkowo część dysku, może być gdziekolwiek chcesz, ale papka znajduje się jako pierwszy wpis na tablicy partycji, jest to spowodowane nienawistnym trybem Windows do montowania partycji na wymiennych, ma specjalnie zaprogramowany kod, aby uniknąć dostępu do więcej niż pierwszej partycji, więc nie można zamontować innych jednocześnie.

Dodatkowe dla partycji Windows i USB: Jeśli zamienisz pozycje partycji w tabeli partitiong, innymi słowy, umieścisz partycję, do której chcesz uzyskać dostęp, jako pierwszą w tabeli, system Windows pozwoli ci na dostęp do niej (jeśli jej format jest zrozumiały, fat32 i NTFS bezpośrednio, ext2 ze specjalnymi sterownikami itp.), ale pozwoli tylko na dostęp do tego, który znajduje się przy pierwszym wpisie tablicy partycji ... istnieje narzędzie (o nazwie BootICEx86.exe), które może wykonać taką pracę w systemie Windows nawet bez konieczności odłączania pamięci USB.

Super extra: są też pendrive'y (mam szczęście, że mam jeden, Sony 16GiB), które można nieco zmienić za pomocą specjalnych narzędzi (moje z narzędziem Lexara), więc wyglądają na Windows jako dysk twardy USB zamiast pamięci USB , po tej zmianie wszystkie okna pozwolą ci usuwać, tworzyć i zarządzać partycjami na nim, a także można zamontować więcej niż jedną w tym samym czasie, każda z własną literą.

Użytkownicy Linuksa nie przejmują się tym, ponieważ Linux postrzega to jako blokowe urządzenie z możliwością partycjonowania i nie implementuje specjalnego kodu blokującego montowanie partycji itp., Tak jak to ma system Windows.

Och, tak, te ostatnie akapity zostały napisane na wypadek, gdyby ktoś na M $ je przeczytał, więc ich twarz spada na podłogę, próbuję (nigdy tego nie dostanę, wiem, że to zagubiony cel), aby usunąć takie brzydki kod z systemu Windows i pozwala użytkownikom mieć partycje na pamięci USB w natywny sposób.

Claudio
źródło