Które polecenia przekonwertować instalację systemu Ubuntu BIOS na EFI / UEFI bez naprawy rozruchu na sprzęcie z jednym uruchomieniem?

35

Przypadkowa instalacja w trybie BIOS

Mam 64-bitowy sprzęt Intel z narzędziem konfiguracyjnym UEFI. Ubuntu 14.04.1 LTS został zainstalowany jako jedyny system operacyjny na jedynym podłączonym dysku. Przypadkowo Ubuntu został zainstalowany w trybie BIOS / CSM / starszym.

Konwertuj na UEFI

Podczas gdy później poznajemy UEFI, celem jest zmiana istniejącej instalacji Ubuntu na (szybszy) rozruch poprzez EFI / UEFI. Nadal chcę wyświetlać jakieś menu - 2 sekundy - menu rozruchu, które pozwala mi wejść do narzędzia konfiguracji UEFI. Dlatego myślę, że muszę użyć Grub (nie mogę użyć kodu rozruchowego EFI), a obsługa GOP wymaga Grub w wersji 1.99 lub wyższej . Ponownie partycjonowałem dysk za pomocą Live CD i wstawiłem partycję 200 MiB EFI na początku napędu i oznaczyłem tę partycję sformatowaną w formacie fat16 jako identyfikator id 0xEF.

Przed:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Po:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

Proszę nie naprawiać rozruchu

Wiki społeczności Ubuntu sugeruje użycie naprawy rozruchu do Konwersji Ubuntu do trybu EFI . Nie chcę używać GUI ani instalować żadnych dodatkowych pakietów i nie chcę, aby jakiekolwiek dane zostały przypadkowo wysłane na pastebin.com, a ponieważ chcę wiedzieć, co dokładnie zostanie zmienione, nie chcę użyj naprawy rozruchu .

Pod maską

Próbując dowiedzieć się, co faktycznie robi naprawa rozruchu, znalazłem ten fragment:

Boot-Repair skonwertuje instalację BIOS do UEFI poprzez odinstalowanie grub-pc i zainstalowanie grub-efi, jeśli gpt jest podzielony na partycje.

źródło: http://ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

Porównanie instalacji w trybie UEFI

Czysta instalacja Ubuntu 14.04.1 w trybie UEFI tworzy partycję EFI 512 MiB Fat32. Że partycja zawiera jeden katalog /EFI/ubuntu, zawierający 4 pliki: grub.cfg, grubx64.efi, MokManager.efii shimx64.efi. Grub.cfg zawiera:

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuid wskazuje na UUID partycji instalacyjnej Linuxa, w tym porównaniu instalacja UEFI Linux jest zainstalowany na partycji / dev / sda2 (w porównaniu z sda1 w trybie BIOS) .

Nie znaleziono potencjalnych problemów z oprogramowaniem układowym Asrock

Nadal wyłączony CSM w oprogramowaniu układowym i korzystanie z czystej instalacji Ubuntu w trybie UEFI. Zmiana rozmiaru partycji EFI 512 MiB na 200 MiB przy użyciu Live CD gpartedpowoduje, że formatowanie zmienia się z FAT32 na FAT16. Oprogramowanie układowe Asrock P1.50 (niepoprawnie nazwane BIOS przez AMI w komunikacie rozruchowym „Data BIOS”) nadal może się uruchomić w trybie UEFI Ubuntu: UEFI + FAT16 = ok .
Konwersja tabeli partycji z GPT na MBR (msdos) przy użyciu tej samej komendy terminalu Live CD gdiski jej komend r g p wpowoduje także uruchomienie systemu Ubuntu z systemem UEFI na dysku partycjonowanym MBR: UEFI + MBR = ok .

Pytanie

Czy to oznacza, że ​​jedyne polecenia, które muszę wykonać - ze starszej instalacji Ubuntu iw tej kolejności - to:

# apt-get install grub-efi
# apt-get remove grub-pc

? A może trzeba zrobić więcej?

Pro Backup
źródło
1
Nadal użyłbym naprawy rozruchu. Zakładasz, że musisz zainstalować pakiety ... Wierzę, że się mylisz. Zobacz: askubuntu.com/questions/226061/…
Rinzwind
@Rinzwind Nie mogę użyć naprawy rozruchu, ponieważ w bieżącej instalacji Ubuntu nie ma GUI (tylko konsola), a ubuntu-14.04.1-desktop-amd64.iso nie uruchamia się, gdy jest ustawiony jako pierwsze urządzenie rozruchowe UEFI USB w Asrocku H81 Pro BTC P1.50 Narzędzie konfiguracji UEFI.
Pro Backup
1
Boot-Repair to nie GUI, ale bash z jednym z dodatków, który czyni go bardziej podobnym do GUI. W nowszej wersji nazwy pakietów Ubuntu nieco się zmieniły, myślę, że teraz jest to grub-efi-amd64 lub grub-efi-amd64-podpisane. Być może chcą wydać 32-bitowy moduł ładujący UEFI, którego nazwa się zmieniła. Wersja Chroot, pamiętaj, że masz również zainstalowany grub i utwórz grub.cfg. askubuntu.com/questions/53578/…
oldfred
@oldfred Boot-Repair zależy od GUI: wykonanie apt-get install boot-repairtej instalacji serwera Ubuntu powoduje 245 MB GTK, podobnie jak zależności, które chce zainstalować boot-repair. A wykonywanie boot-repairkomend w tył kończy się niepowodzeniem. Aktualizacja nowszego nazewnictwa grub-efi była naprawdę pomocna.
Pro Backup
Jeśli jest to Asrock, upewnij się, że nie masz napędu ani napędu DVD podłączonego do portów Asmedia. Nie mają sterowników. Lepiej mieć dysk gpt podzielony na partycje tylko podczas uruchamiania w UEFI. rodsbooks.com/gdisk/hybrid.html
oldfred

Odpowiedzi:

40

Uruchom Live CD Ubuntu Linux (14.04) w trybie UEFI. W przypadku urządzenia rozruchowego USB wyłącz opcję „Fast Boot” w UEFI.

Otwórz okno terminala ( Ctrl+ Alt+ T)

Aby sprawdzić, czy faktycznie pracujesz w trybie UEFI, użyj tego polecenia bash:

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

Wynikowy wynik powinien wynosić:

UEFI

W przypadku gdy wyświetli się komunikat BIOS, uruchom ponownie oprogramowanie wewnętrzne i popraw preferencje urządzenia rozruchowego.

Aby wykonać konwersję systemu BIOS do EFI / UEFI, wprowadź następujące polecenia:

$ sudo mount /dev/sda1 /mnt
$ sudo mkdir -p /mnt/boot/efi
$ sudo mount /dev/sda3 /mnt/boot/efi
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ modprobe efivars
$ sudo chroot /mnt
# apt-get install grub-efi-amd64

The following extra packages will be installed:
  efibootmgr grub-efi-amd64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Pomimo zakończenia w komunikacie o błędzie:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

przy następnym restarcie widać już „ ubuntu ” w oprogramowaniu wbudowanym menu opcji rozruchu i uruchamia się na konsoli jak poprzednio, z wyjątkiem teraz uruchamiania w trybie efi:

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

W przypadku awarii może pomóc https://superuser.com/questions/376470/how-to-reinstall-grub2-efi .

Pro Backup
źródło
Pomogło mi to zaktualizować dysk twardy i przekonwertować go na GPT / UEFI / SecureBoot bez ponownej instalacji. Dziękuję Ci. Jedna uwaga: potrzebowałem grub-efi-amd64-signedpakietu, aby uniknąć bałaganu podczas wyłączania SecureBoot w moim systemie UEFI BIOS.
Robie Basak,
Jest teraz 2018 r. I ten problem z EFI nadal występuje. nawet efi boot jest zainstalowany, ale kończę w grub cli. Poddaję się Ubuntu.
Abhishek Dujari,
To działało dla mnie pod Ubuntu 19.10. Uruchomiłem Live USB za pomocą EFI i dodałem partycję 200 MB typu FAT32 dla EFI na końcu mojego dysku.
Joey Adams
1

To zadziałało również dla mnie z jedną małą zmianą. Mimo że sieć działała, nie mogłem znaleźć „apt-get install grub-efi-amd64”, aby znaleźć dowolny z serwerów pakietów.

Obejrzałem to, uruchamiając się po raz ostatni w trybie BIOS i instalując grub-efi-amd64.

Mógłbym wtedy wykonać opisane tutaj procedury z wyjątkiem pominięcia „apt-get install grub-efi-amd64”.

WallyZ
źródło
1

Mała korekta:

sudo apt-get install -y grub-efi-amd64
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do sudo mount -B /$d /mnt/$d; done
sudo modprobe efivars
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Gotowy.

Daniel Jean
źródło
Czy potrafisz wyjaśnić, dlaczego sugerujesz te zmiany w odpowiedzi PO? ………… Proszę nie odpowiadać w komentarzach; edytuj  swoją odpowiedź, aby była jaśniejsza i bardziej kompletna.
G-Man mówi „Przywróć Monikę”