Jak zainstalować dwie niezależne instalacje Ubuntu na jednym dysku twardym z UEFI?

8

Ze względów bezpieczeństwa chciałbym zainstalować dodatkowy całkowicie niezależny system operacyjny na komputerze z jednym dyskiem twardym za pomocą UEFI. Obie instalacje powinny mieć możliwość korzystania z różnych partycji kryptograficznych LUKS jako urządzenia głównego (LVM na szczycie kryptografii) i muszą mieć możliwość korzystania z własnych jąder.

Posiadanie podwójnego rozruchu z dwoma różnymi systemami operacyjnymi nie jest wielkim problemem. Ubuntu i Fedora nie będą przeszkadzać i mogą współużytkować partycję systemową EFI, ale dwie instalacje Ubuntu będą ze sobą walczyć, ponieważ chcą, aby obie instalowały swoją instancję Grub w tej samej lokalizacji EFI.

  • Czy istnieje sposób na zmianę Ubuntu w celu zainstalowania Gruba w innym miejscu niż /boot/efi/EFI/ubuntupodczas instalacji? Potrzebuję trwałego sposobu, aby aktualizacje pakietów i aktualizacje jądra / gruba nadal instalowały się w tej ścieżce. Podobnie jak w przypadku instalacji Grub Grubego Fedory /boot/efi/EFI/fedora. Nie mogę znaleźć tej opcji konfiguracji w Grub. Gdybym mógł, moje menu rozruchowe Dell UEFI pozwoliłoby mi wybrać system operacyjny do załadowania. Być może brakuje mi tutaj kleju między efibootmgr i grub-efi.

  • Alternatywnie, czy byłoby możliwe użycie pojedynczej instalacji Grub z jednej z dwóch instalacji Ubuntu i czy automatycznie wykryje właściwe ustawienia rozruchu? To znaczy, wiem, os-proberże znajdzie drugą /bootpartycję z jądrem, ale skąd może znać właściwe parametry rozruchowe dla tego systemu operacyjnego (np. Wolumin LVM w zablokowanym woluminie kryptograficznym jako główny system plików)? Rozumiem, że potrafi to z nieszyfrowanymi instalacjami z jedną partycją, ale nie może się równać /bootz odpowiadającym im głównym systemem plików, prawda? I jest całkowicie niemożliwe, jeśli jest zaszyfrowane. Wymagałoby to wielu ręcznych poprawek plików konfiguracyjnych grub. Nie podoba mi się również ta opcja pojedynczej konfiguracji bootloadera, dzięki czemu oba systemy operacyjne są w pewnym stopniu mniej odizolowane.

Nawiasem mówiąc, nie mam nic przeciwko instalacji ekspertów tekstowych na serwerze. Również niektóre niestandardowe konfiguracje, o ile nie muszę powtarzać kroków dla każdej aktualizacji jądra / Gruba.

gertvdijk
źródło

Odpowiedzi:

6

Mam dwie sugestie ...

Opcja nr 1: Oddzielne ESP

Pod EFI moduł ładujący znajduje się na „ partycji systemowej EFI(ESP). Umieszczam słowo „the” w cudzysłowie, ponieważ nie ma reguły, która mówi, że jesteś ograniczony do jednego ESP. Jeśli utworzysz dwa ESP na dysku twardym, możesz użyć jednego z nich do pierwszej instalacji, a drugiego do drugiej instalacji. Powinno to działać dość płynnie, chociaż będziesz musiał ręcznie utworzyć partycje (używając opcji „Coś innego” podczas instalacji), przynajmniej dla drugiej instalacji Ubuntu.

Jednym z problemów związanych z tym podejściem jest to, że chociaż specyfikacja EFI wyraźnie stwierdza, że ​​możesz utworzyć tyle ESP, ile chcesz, niektóre oprogramowanie może się przez to pomylić. Jednym z widocznych przykładów tego jest instalator Windows, przynajmniej przez Windows 7 (nie wiem o Windows 8 lub nowszym); gdy instalator systemu Windows 7 widzi dysk z dwoma ESP, odpryskuje i robi dziwne rzeczy. IIRC, nie kończy poprawnie instalacji. Można sobie wyobrazić, że narzędzia do naprawy systemu Windows miałyby ten sam problem. Jeśli nie uruchamiasz systemu Windows w tym systemie, nie powinno to stanowić problemu. Jeśli podczas uruchamiania systemu Windows powinieneś po prostu zdawać sobie sprawę z problemu, ponieważ możesz łatwo go rozwiązać, tymczasowo zmieniając kod typu ESP (ów) innych niż Windows, jeśli napotkasz problemy. Należy pamiętać, że system Windows uruchomi się dobrze na dysku z wieloma ESP; to tylko instalator dusi się na takich dyskach.

Innym problemem jest sposób przełączania się między dwiema dystrybucjami. Konieczne może być dostosowanie jednego lub obu ustawień GRUB instalacji przy użyciu narzędzia takiego jak GRUB Customizer. Inną (ale nie niekompatybilną) opcją byłoby użycie własnego menedżera rozruchowego oprogramowania wewnętrznego do przełączania się między dwiema instalacjami GRUB-a i użycie każdej z nich do uruchomienia tylko własnej wersji Ubuntu.

Opcja # 2: Porzuć GRUB (lub przynajmniej narzędzia GRUB Ubuntu)

Problem z GRUB-em związany z twoją sytuacją polega na tym, że masz dwie instalacje i narzędzia konserwacyjne GRUB-a mogą się pomylić przez tę konfigurację. Ta obserwacja prowadzi do oczywistego rozwiązania, że ​​po prostu nie powinieneś używać tych narzędzi. Istnieje kilka innych programów ładujących EFI dla systemu Linux, z których większość jest łatwiejsza w obsłudze niż GRUB. Możesz skonfigurować ELILO, SYSLINUX, łataną wersję GRUB Fedory, Gummiboot lub rEFInd i zarządzać obiema instalacjami ręcznie. W rzeczywistości, ponieważ funkcja REFInd wykrywa jądra przy każdym uruchomieniu, funkcja REFInd powinna być prawie bezobsługowa po skonfigurowaniu. Alternatywnie, ale w podobnym stylu, możesz ręcznie edytować grub.cfgplik, aby robić to, co chcesz, zamiast polegać na skryptach instalacyjnych GRUB.

Oprócz rEFInd, wszystkie te narzędzia będą wymagać wprowadzenia zmian w konfiguracji przy każdej aktualizacji jądra, co będzie przeciągnięciem. Pojawia się również pytanie, kiedy i jak zainstalować dodatkowy program rozruchowy. Prawdopodobnie odłożyłbym go do czasu drugiej instalacji Ubuntu, ponieważ każda instalacja zarejestruje własną kopię GRUB-a jako domyślnego modułu ładującego i chcesz zastąpić tę domyślną.

Zauważ również, że żadne z tych narzędzi nie może odczytać jądra z zaszyfrowanego systemu plików lub z LVM, więc musisz mieć osobną niezaszyfrowaną /bootpartycję dla każdej instalacji Ubuntu. W ten sposób większość instrukcji, które widziałem, mówi o konfigurowaniu zaszyfrowanej instalacji Ubuntu, więc prawdopodobnie nie jest to wielka sprawa, chyba że chcesz grać na „krwawej krawędzi” szyfrowania dysku.

Niektóre moduły ładujące EFI mają dodatkowe określone wymagania dotyczące partycjonowania lub systemu plików. Przede wszystkim ELILO, SYSLINUX i gummiboot wymagają, aby jądro znajdowało się na partycji FAT, a ESP działa w tym celu najlepiej. Możesz to zrobić, instalując ESP w /boot, ale jest to niepewne rozwiązanie w Ubuntu, ponieważ niektóre aktualizacje pakietów wymagają dowiązań symbolicznych. Będziesz miał również problem z zrobieniem tego z dwiema osobnymi instalacjami Ubuntu, ponieważ obie próbowałyby ubiegać się o te same pliki. (W tym przypadku „ESP” naprawdę oznacza „partycję, z której uruchomiono moduł ładujący”, więc w tym przypadku możesz mieć tylko jedną ESP.) GRUB Legacy i rEFInd są bardziej elastyczni w tej kwestii.

Moja rekomendacja

Osobiście użyłbym do tego rEFInd - ale utrzymując rEFInd, nie jestem do końca bezstronny. W rzeczywistości mam komputer, który uruchamia się między trzema instalacjami Ubuntu, a rEFInd przełącza się między nimi w porządku. Ten konkretny system nie używa szyfrowania, ale wątpię, czy spowoduje to jakieś nowe problemy z perspektywy rEFInd.

To powiedziawszy, osobne ESP również powinny działać dobrze, z zastrzeżeniem, że może być konieczne użycie GRUB Customizer, aby dostosować ustawienia co najmniej jednej z tych kopii GRUB.

Rod Smith
źródło
Bardzo dobre sugestie, dzięki! Jestem pewien, że masz rację co do tego, że według specyfikacji można mieć wiele ESP, ale wątpię, czy moja implementacja Dell Latitude UEFI również to obsługuje. Pozwala mi tylko przeglądać ścieżki według pojedynczych dysków. Muszę jednak spróbować.
gertvdijk
jeśli implementacja EFI firmy Dell jest tak zepsuta, że ​​nie może obsłużyć wielu ESP, powinieneś zwrócić ją do sklepu w celu uzyskania zwrotu pieniędzy. Poważnie; tego rodzaju zło wskazywałoby na taką okropność, że nie ufałbym oprogramowaniu sprzętowemu w wykonywaniu jego najbardziej podstawowych zadań. W praktyce nie sądzę, że byłoby tak źle; Nigdy nie słyszałem o EFI, który nie radzi sobie z wieloma ESP.
Rod Smith
1

Oto kroki, których użyłem do podwójnego rozruchu z dwoma systemami Ubuntu zaszyfrowanymi przez LUKS na jednym dysku twardym z UEFI przy użyciu opcji 2 zalecanej wcześniej przez Rod Smitha. Było to szczególnie z Ubuntu 18.04.1-desktop. Szyfrowanie katalogu domowego nie jest już podawane jako opcja podczas instalacji, ponieważ istnieją obawy dotyczące niezawodności i konserwacji eCryptfs. Zamiast tego zaleca się używanie LUKS, więc myślę, że to najlepsza opcja, aby mieć wielu użytkowników z zaszyfrowanymi partycjami domowymi.

    1. Uruchom do Live USB, pobierając plik ISO i używając Startup Disk Creator do sformatowania i skonfigurowania napędu USB.
    1. Użyj GParted, aby podzielić dysk na partycje. Zostało to oparte na zaleceniach pod adresem https://help.ubuntu.com/community/ManualFullSystemEncryption i przy użyciu niektórych wartości domyślnych ustawionych przez instalator Ubuntu przy wyborze szyfrowania dysku dla całego dysku.
      • Partycja systemowa EFI / 512MiB / FAT32 / boot, esp (flagi)
      • System rozruchowy # 1 / 732MiB / EXT4
      • System rozruchowy # 2 / 732MiB / EXT4
      • Dane zaszyfrowane # 1 / [żądany rozmiar] / wyczyszczone
      • Dane zaszyfrowane # 2 / [żądany rozmiar] / wyczyszczone
    1. Uruchom ponownie w Live USB
      • Zainstaluj Ubuntu
      • Wybierz preferencje instalacji
      • Wybierz „Coś innego” dla układu dysku partycji, aw ramach konfiguracji partycji dla instalacji:
        • Wybierz „EFI System Partition” jako bootloader w menu u dołu.
        • Wybierz „Data Encrypted # 1” i „fizyczne urządzenie do szyfrowania”, a następnie wprowadź frazę szyfrującą, która będzie używana dla partycji.
        • Wybierz nowo utworzoną partycję za pomocą EXT4 i zmień punkt montowania na „/”.
        • Wybierz „Boot System # 1” i ustaw punkt instalacji na „boot”.
      • Kontynuuj i zainstaluj
    1. Uruchom ponownie w nowej instalacji
      • Zainstaluj „refind” przez „apt-get install refind” i zainstaluj automatycznie na ESP, „partycji systemowej EFI”.
    1. Uruchom ponownie w Live USB
      • Powtórz kroki 3 i 4 dla partycji 2 Boot System i Data Encrypted # 2, instalując drugą instalację Ubuntu.
    1. Skonfiguruj i zaktualizuj każdą instalację zgodnie z potrzebami.
brihoriq
źródło
1

Używam następującego podejścia z jednym ESP:

Utworzyłem dodatkowe programy ładujące dla każdego systemu operacyjnego

sudo grub-install --bootloader-id=ID

używając innego IDdla każdego systemu operacyjnego.

Przykład:

Mam zainstalowane Ubuntu 16.04 i Ubuntu 18.04. Uruchamiam Ubuntu 16.04 i uruchamiam

sudo grub-install --bootloader-id=Ubuntu1604

Następnie z bootowanego do Ubuntu 18.04 uruchamiam

sudo grub-install --bootloader-id=Ubuntu1804

W ustawieniach UEFI widzę nowe pozycje startowe z nazwiskami Ubuntu1604i Ubuntu1804i zmienić kolejność startową, aby ustawić jeden z nowych zapisów do pierwszego miejsca.

Widzę także foldery o tych nazwach w ESP.

Gdy aktualizacja systemu zostanie dostarczona z nową wersją gruba, ponownie zainstaluje nową instancję gruba w ubuntufolderze na ESP, nie wpłynie to na programy ładujące, które sam stworzyłem, ale muszę ponownie zmienić kolejność rozruchu ponieważ ubuntuwejście zostanie przesunięte na pierwsze miejsce w kolejności rozruchu.

Oto, co efibootmgr -vpokazuje moja konfiguracja:

~ $ efibootmgr -v
BootCurrent: 0001
Limit czasu: 0 sekund
BootOrder: 0001,0002,0004,0000,0003,0005
Boot0000 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Plik (\ EFI \ ubuntu \ shimx64.efi)
Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Plik (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Plik (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Plik (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Plik (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Plik (EFI \ Ubuntu \ grubx64.efi)
mook765
źródło
Nadal nie działało dla mnie. Zmieniam domyślne w / etc / default / grub na dystrybucję, tak jak GRUB_DISTRIBUTOR="Bionic_18_04"i ponowna instalacja grub używa tego jako domyślnego identyfikatora UEFI. Ale za każdym razem używa tylko /EFI/ubuntu/grub.cfg jako domyślnej lokalizacji do uruchamiania z nie nowego /EFI/bionic_18_04/grub.cfg.
oldfred
@oldfred Dla mnie to działa dobrze przez kilka lat z potrójnym uruchomieniem.
mook765,
Wypróbowałem twoje polecenie zamiast zmiany nazwy w / etc / default / grub. Nie miało znaczenia. UEFI jest ustawiony na domyślny nowy rozruch. Ale uruchomił się przy użyciu mojego / efi / ubuntu z domyślnym dyskiem Disco, zamiast grub w nowym folderze / EFI / ubuntu1804. Myślę, że to różnica nie jest gruba, ale nie UEFI.
oldfred
@oldfred Proszę spojrzeć na wyniki, efibootmgr -vktóre dodałem do mojej odpowiedzi. To działa. Możesz mieć dodatkowe zmiany, które ci to uniemożliwiają. To, co opisałem, jest jedyną rzeczą, którą robię, aby działało.
mook765,
Sprawdziłem efibootmgr -v i został ustawiony na nowy wpis, ale uruchomiłem gruba w / EFI / ubuntu. Mój ładuje system /EFI/ubuntu1804/shimx64.efi. Czy używasz grubx64.efi lub shimx64.efi, może to jest różnica? Mam Secure Boot off, ale domyślnie miga jako pierwszy wpis ubuntu1804. W pewnym momencie skończyło mi się tak wiele wpisów UEFI lub folderów w / EFI, że miałem problemy z uruchomieniem i musiałem użyć rEFInd na innym dysku do uruchomienia. Więc nie lubię teraz mieć zbyt wiele w folderze / EFI lub wpisach w UEFI.
oldfred