Jak stworzyć hybrydowe USB na żywo

3

Mam komputer przenośny UEFI i Windows 8.1. Chcę utworzyć bootowalną pamięć USB linux, która może być użyta do rozruchu mojego starszego systemu BIOS lub nowszego systemu UEFI. W razie potrzeby mogę mieć dwie oddzielne kopie dystrybucji na żywo na różnych partycjach pamięci USB. Jakie są kroki, aby to osiągnąć?

Przeczytałem inne posty, które wydają się wskazywać, że jest to możliwe, ale żaden z nich nie pokazuje wyraźnie, jak to zrobić:

Jak stworzyć hybrydową partycję MBR / GPT na dysku USB?

Jest hybrydowym pendrive'em USB dla UEFI & amp; możliwy stary BIOS?

taz
źródło
Myślę, że dzieje się to automatycznie. UEFI szuka plików EFI, podczas gdy rozruch BIOS-u będzie szukał starszych plików.
TheWanderer
Mógłbym więc po prostu mieć pojedynczą partycję, która zawiera / EFI i / boot, i działałaby automatycznie z grubem w „starszym” BIOS-ie, podczas gdy [U] EFI uruchamiałoby się z poprawnej ścieżki EFI, ponieważ specyfikacje EFI wymagają, aby czytał Czy partycje MBR?
taz
Tak. Może uruchomić starsze wersje, ale nadal powinno dobrze zarządzać EFI.
TheWanderer
@taz to bardzo zależy od oprogramowania; ale mam pendrive USB o podobnej konfiguracji i działa na kilku komputerach; po prostu mój nie jest liveCD, nawet Linux nie GRUB.
AntoineL

Odpowiedzi:

4

Gdy poprosisz o wyraźną ilustrację, jak to zrobić, oto jest. Zakładam, że masz uruchomionego Linuksa na żywo.

  1. Podziel dysk USB na partycje

    Polecam narzędzie linii poleceń gdisk. Daje bardzo czyste wyniki. Alternatywnie możesz użyć gparted.

    1. Utwórz nową tabelę partycji. Użyj GPT z ochronnym MBR.

    2. Zdefiniuj następujące partycje:

      • (opcjonalnie) Partycja danych
      • Partycja Linuksa
      • Starsza partycja rozruchowa systemu BIOS (wystarczy 1 MB)
      • Partycja systemowa EFI (co najmniej 32 MB)
    3. Przykład: na moim dysku 64 GB wynik wygląda tak:

      Number  Start (sector)    End (sector)  Size       Code  Name
         1            2048       107632639   51.3 GiB    0700  DATA
         2       107632640       124411903   8.0 GiB     8300  Linux filesystem
         3       124411904       124413951   1024.0 KiB  EF02  BIOS boot partition
         4       124413952       124822453   199.5 MiB   EF00  EFI System
      
  2. Zainstaluj Linuksa na pamięci USB za pomocą dowolnej metody.

    Podczas tego procesu sformatuj partycję Linuksa za pomocą wybranego systemu plików ext4. Użyj tej partycji jako root /.
    Sformatuj partycję systemową EFI za pomocą FAT16.
    Partycja rozruchowa systemu BIOS pozostaje niesformatowana.

  3. Zainstaluj GRUB dwa razy

    W ostatnim kroku zainstaluj GRUB dla obu metod uruchamiania, uruchamiania w stylu UEFI i starszego uruchamiania BIOS.

    grub-install --target=x86_64-efi --removable /dev/sdx
    
    grub-install --target=i386-pc /dev/sdx
    

    Gdzie /dev/sdx to oczywiście pamięć USB.
    Że --removable jest ważne. Trzy godziny zajęło mi uświadomienie sobie, że potrzebuję go na wymiennym napędzie USB ...

    Jeśli zainstalujesz GRUB na pendrive z „zewnętrznego” (nie uruchamiając Linuksa z pamięci USB), musisz najpierw zainstalować partycję Linux. Może go zamontujesz /mnt. Następnie montujesz partycję systemu EFI na partycjach Linux /mnt/boot/efi informator. Posługiwać się --root=/mnt jako parametr dla grub-install. Tylko wtedy grub-install znajduje wszystkie niezbędne katalogi.

Gotowe.

W celu dalszego czytania:
Nie zdefiniowaliśmy partycji w MBR. Możesz więc zapytać, dlaczego działa na starszych komputerach z systemem BIOS. Pamiętaj, że zainstalowaliśmy GRUB w MBR. Podczas starszego procesu uruchamiania BIOS uruchamiany jest bootloader zapisany w MBR. To ładuje etap 1 GRUB, który następnie ładuje etap 2 ze starszej partycji rozruchowej BIOS. Ale obecnie GRUB nie wie nic o partycjach MBR lub w inny sposób. Z tego powodu informacje o pozycji partycji rozruchowej BIOS-u zostały osadzone w etapie 1. GRUB. W konsekwencji, jeśli partycja rozruchowa BIOS-u zostanie przeniesiona, należy ponownie zainstalować GRUB. Po załadowaniu GRUB stage 2, GRUB rozumie GPT i może kontynuować uruchamianie jądra Linux.

Hermann
źródło
Dzięki za przewodnik! Jest to naprawdę bardzo pomocne (ale jeszcze tego nie testowałem). Mam jednak problem z zainstalowaniem wersji efi dla grub, ponieważ jestem na maszynie tylko do bios. Dostaję tę wiadomość: grub-install: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.. Czy jest jakiś sposób, aby zmusić go do zainstalowania go bez konieczności uruchamiania przez efi?
starbeamrainbowlabs
Tak to mozliwe. Komunikat o błędzie wskazuje, że 64-bitowy wariant EFI instalatora grub nie jest obecny w aktualnie uruchomionym systemie. Na ubuntu musisz zainstalować grub-efi-amd64-bin. Ponadto możesz przeszukiwać indeks pakietów online o tym, jakie instalatory są w ogóle dostępne. Doświadczenie może się różnić w przypadku innych smaków Linuksa.
Hermann