Narzędzia do modyfikowania zmiennych UEFI w Windows / Linux?

12

Mam maszynę DELL, która używa Phoenix SecureCore Tiano jako UEFI / BIOS Jednak nie można jej całkowicie skonfigurować, ponieważ jej powłoka i menu UEFI są ukryte w konfiguracji BIOS.

Zastanawiam się, czy były narzędzia, które mogą modyfikować ustawienia UEFI (takie jak pozycje rozruchowe) w trybie użytkownika? takie jak „efibootmgr” w systemie Linux.

btw, ponieważ nie można go konfigurować, myślę, że proces rozruchu jest w trybie starszym, więc to znaczy, że systemy operacyjne nie mogą wykryć UEFI, prawda?

więc taki jest paradoks: muszę uruchomić system w trybie innym niż starszy, aby umożliwić narzędziom UEFI modyfikowanie elementów rozruchowych w trybie użytkownika? ale muszę włączyć narzędzia UEFI, aby najpierw zmodyfikować elementy rozruchowe, aby umożliwić rozruch starszego typu?

kamień
źródło
właśnie odkryłem, że zmienne efi przechowywane w nvram, może ten link pomaga: wikileaks.org/ciav7p1/cms/page_26968084.html
marstone

Odpowiedzi:

3

Implementacje EFI muszą zapewniać sposób kontrolowania trybu rozruchu (EFI vs. BIOS), z wyjątkiem oczywiście tylko implementacji EFI bez obsługi BIOS. Jednak zbyt często oprogramowanie układowe daje użytkownikowi niewielką kontrolę nad sprawą lub jej brak; zamiast tego oprogramowanie układowe próbuje określić prawidłowy tryb rozruchu na podstawie stanu dysku twardego - na przykład może użyć trybu EFI, jeśli zostanie wykryty GPT, i trybu BIOS, jeśli zostanie znaleziony MBR; lub może użyć trybu EFI, jeśli zostanie znaleziona partycja systemowa EFI (ESP), a tryb BIOS, jeśli nie. Być może będziesz w stanie znaleźć wskazówkę dotyczącą tego, co robi twoje oprogramowanie układowe, czytając instrukcję. Jeśli nie, będziesz musiał po prostu eksperymentować.

Podczas uruchamiania nośnika wymiennego reguły mogą się różnić, ale często można go rzucić we właściwym kierunku, zapewniając tylko jeden tryb rozruchu. Może to wymagać ponownego masteringu płyty CD lub (łatwiej) starannego wyboru płyty CD. Jeśli próbujesz wymusić rozruch w trybie EFI, mój rEFInd , a w szczególności jego bootowalna wersja CD, może być pomocny; uruchamia się tylko w trybie EFI i zgodnie z konfiguracją będzie działał jako menedżer rozruchu dla innych rozruchów opartych na EFI, ale nie uruchomi się w trybie BIOS.

Rod Smith
źródło
dzięki! Kiedy dzielę HD na partycję w trybie MBR, działa zgodnie z oczekiwaniami. jednak jeśli używam trybu GPT, bez względu na to, czy jest ESP, czy nie, po prostu nie uruchomi się i wyświetli się komunikat o błędzie: „Nie znaleziono systemu operacyjnego”. Komunikat o błędzie / błąd składni z pewnością pochodzi z samego BIOS-u po tym, jak przebudowałem ROM BIOS-u (nie z żadnego bootloadera ani rekordu rozruchowego), więc po prostu nie mogę przekazać kontroli rozruchu w trybie GPT.
marstone
Niektóre systemy oparte na EFI uruchomią się w trybie BIOS tylko wtedy, gdy wykryją partycję MBR z ustawioną flagą „boot” (aka „active”). Na dysku GPT wymaga to ustawienia tej flagi na partycji ochronnej 0xEE w MBR. Możesz użyć do tego narzędzia takiego jak fdisk Linuksa (użyj opcji „a”). Czy nie używać rozchylone, GParted lub inne narzędzia libparted opartych to zrobić; na dysku GPT nie dają żadnej kontroli nad tym, co znajduje się w MBR , a „flaga rozruchowa” zostanie zastosowana do partycji GPT , co oznacza, że ​​ustawia kod typu na kod partycji systemowej EFI (ESP) .
Rod Smith
2

Zwalniam tylko moje narzędzie, jeśli ktoś jest zainteresowany. Edytuje zmienną UEFI w systemie Windows.

https://gist.github.com/Zibri/19f9838ffd12349bb2c6c3afddc9388f/

Zaktualizowano 25.02.2020 do wersji 1.2.
Nie wymaga połączenia z Internetem.
Całkowita liczba wirusów zgłasza 6 (fałszywie dodatnie) powyżej 96, ponieważ kod jest zaciemniony.

Zibri
źródło
NIE JEST. Program jest kompresowany i chroniony, a niektóre antywirusy dają fałszywy wynik pozytywny. To nie jest wirus.
Zibri,
W przypadku flagerów: ten program jest nieco niepokojący w Virustotal, ale wydaje się, że jest to wykrywanie ogólne i wykrywanie „potencjalnie niechcianego programu”. Możliwe, że z powodu tego, co robi ten program, trafił do pakietów złośliwego oprogramowania, ale dopóki ktoś nie będzie mógł zaoferować bezpośredniego dowodu, że jest to złośliwe oprogramowanie, odpowiedź jest na razie w porządku.
Mokubai
Nie wydałem kodu źródłowego i utrudniłem inżynierii wstecznej jedynie „opóźnić” lub „ograniczyć” dokładnie rozprzestrzenianie się złośliwego oprogramowania na podstawie mojego „prostego” kodu. Zastanawiam się nad udostępnieniem źródła, nie jest to tajemnicą, po prostu nie chciałem być główną przyczyną przyszłego złośliwego oprogramowania opartego na interfejsie uefi.
Zibri
Edycja: zaktualizowano dzisiaj do wersji 1.1.
Zibri
Zaktualizowano do wersji 1.2
Zibri,
1

Właśnie kupiłem Dell XPS 17 (l702x) i jestem zainteresowany wielokrotnym uruchamianiem różnych systemów operacyjnych. Jeśli to, co zrozumiałem, jest prawidłowe, Dell ma jakąś formę zablokowanego „BIOS” Phoenix SecureCore Tiano UEFI. Z tego, co przeczytałem, UEFI nie jest bezpośrednio użyteczny (być może poprzez ukryte menu itp., Co może wymagać modyfikacji systemu BIOS).

Wydaje się możliwe używanie / uzyskiwanie dostępu do powłoki EFI kompatybilnej z Phoenix przy użyciu pakietów open source (BSD) TianoCore edk2 / ShellPkg (źródło) i edk2 / ShellBinPkg (binarne) ( GIT Repo ).

Polecam nowszy ShellBinPkg , używając profilu „pełnej powłoki” UEFI Shell 2.0 (obsługuje większość poleceń). Możesz również odbudować niestandardową powłokę za pomocą ShellPkg (kompilacja samodzielna lub dołączyć ją do pakietu OVMF w celu wygenerowania wersji x64) - Włączenie powłoki UEFI w dystrybucji systemu Linux .

Plik binarny powłoki [U] EFI jest kompilowany tak, aby działał niezależnie od oprogramowania układowego. Można to przetestować, umieszczając powłokę w systemie plików FAT32 (pamięć USB, partycja dysku twardego), której nazwa została zmieniona na, /efi/boot/bootx64.efia następnie uruchomiona z systemu BIOS [UEFI].

Tekst pomocy dla powłoki jest dostępny po wpisaniu help utilname. Samo użycie helptworzy listę wszystkich dostępnych poleceń powłoki.

Uwaga: Jeśli nie można uruchomić powłoki UEFI bezpośrednio z oprogramowania układowego, utwórz pendrive FAT32 USB z plikiem Shell.efi skopiowanym jako (USB) /efi/boot/bootx64.efi. To urządzenie USB powinno pojawić się w menu uruchamiania oprogramowania układowego. Uruchomienie tej opcji uruchomi dla ciebie powłokę UEFI Shell. - Arch Linux przyjmuje UEFI

Big Rich
źródło
to wspaniale. kupiłem ten sam model l702x ;-) wypróbuję go jutro! ukryte menu jest nadal możliwe do odblokowania, o ile wiem. btw, czy masz skompilowany plik bootx64.efi i już testowałeś na swoim XPS?
marstone
ShellBinPkg to skompilowany plik binarny powłoki UEFI, powinieneś być w stanie po prostu zmienić jego nazwę i umieścić w odpowiednim katalogu. Próbowałem i nie działało to dla mnie, ale nie sądzę, że jest to jedyna dostępna powłoka (jestem też w tym nowa). Ten post wydaje się oferować pobieranie powłoki, które powinno współpracować z Phoenix SecureCore Tiano (patrz rozmowa.ridikulus.rat-> cfr). Poinformuj nas, jak sobie radzisz.
Big Rich
Próbowałem umieścić plik efi z powyższego postu na /efi/boot/bootx64.efi, jednak mój dysk USB uruchomił się normalnie do gruba (jest już bootowalny); następnie sformatowałem dysk u do trybu HDD i otrzymałem błąd „Usuń dyski lub inne nośniki ...”. Następnie przeszukałem szesnastkowo ten sektor po sektorze na moim dysku, nie istniał. wiadomość musi pochodzić z Tiano BIOS L702x. coś nie tak z moimi operacjami?
marstone
@marstone, przepraszam, ale sam jestem nowicjuszem, jeśli chodzi o te elementy UEFI (jestem w porządku z moim Google-fu ;-)). Byłem zajęty gdzie indziej, jak tylko będę miał trochę czasu, spróbuję tego sam i dam znać, jak sobie radzę. Na zdrowie, bogaty.
Big Rich
Mimo że Dell wydał teraz bios z włączonym UEFI ( A19 ), „capitankasar” podczas przeglądu notebooka opublikował 2x zmodyfikowane biozy A18 ( uefi , uefi + nvida gpu ), dotyczą one podkręcania UEFI, NVidia i prędkości wentylatorów itp. (Niektóre z tych funkcji może również istnieć w oficjalnej wersji Dell, sam tego nie potwierdziłem). Jak zawsze, używaj na własne ryzyko ;-)
Big Rich
0

W moich eksperymentach stwierdziłem, co następuje:

Jeśli chcesz użyć klucza USB do wielokrotnego rozruchu U / EFI, MUSISZ:

  1. całkowicie wyczyść wszystkie partycje / wyczyść dysk;
  2. przekonwertować na GPT;
  3. utwórz partycję podstawową i sformatuj ją jako Fat32;
  4. utwórz katalog o nazwie EFI (bez rozróżniania wielkości liter) w katalogu głównym dysku;
  5. utwórz podkatalog w poprzednim katalogu o nazwie boot (bez rozróżniania wielkości liter)
  6. umieść tam żądany plik .efi i zmień jego nazwę, aby pasował do architektury systemu: bootx64.efi, jeśli x64, bootia32.efi, jeśli x86 lub bootaa64.efi, jeśli ARM64.

Wypróbowałem to na ekranie dotykowym Dell Inspiron 5437 i działało idealnie.

I ostatnia rzecz: jeśli plik .efi nie jest podpisany cyfrowym podpisem Microsoftu, musi wyłączyć tylko bezpieczny tryb rozruchu w ustawieniach FW. Pozostaw włączony tryb rozruchowy UEFI i szybki rozruch.

Do testów znajdź klucz wielokrotnego rozruchu komputera OEM przed zainstalowaniem go na stałe i wybierz uefi: <your usb key>z wyświetlonej listy.

Thiago Postio
źródło