Napisz bootowalną aktualizację systemu BIOS .ISO na pamięć USB

14

Lenovo dystrybuuje aktualizacje systemu BIOS jako pliki .iso ( przykład ), które mają zostać wypalone na płycie CD i uruchomione. Nagrywanie na płytę CD działało i uruchamiało się poprawnie, ale teraz chcę zamiast tego użyć pamięci USB (ponieważ nie ufam napędowi CD), jak utworzyć tę pamięć USB za pomocą Ubuntu?

Istnieje wiele samouczków wyjaśniających, w jaki sposób tworzyć rozruchowe pamięci USB z systemów ISO opartych na systemie Linux (przy użyciu UNetbootin i podobnych, tworzą pliki związane z systemem Linux w katalogu głównym pamięci USB) oraz z narzędzi opartych na systemie Windows (z FreeDOS i podobnymi). Uważam, że nie ma tu rozwiązań, ponieważ plik ISO aktualizacji systemu BIOS nie jest oparty na systemie Linux ani na systemie DOS (podłączenie ISO nie pokazuje żadnego znanego systemu plików)

Nicolas Raoul
źródło
1
Czy próbowałeś zrzucić zawartość ISO na USB? Aby to zrobić, wykonaj następujące polecenie: # dd if=/path/to/iso of=/dev/yourusb bs=4M. OSTRZEŻENIE : Twoje USB zostanie USUNIĘTE . Proszę również dokładnie sprawdzić ścieżkę do twojego napędu USB
Arch użytkownik
@Archuser: Działa to tylko wtedy, gdy obrazy ISO zostały stworzone, aby można było uruchomić system w tej konkretnej konfiguracji. Zwykłych rozruchowych obrazów ISO nie można w ten sposób uruchomić.
David Foerster
Upewnij się, że wywołujesz „sudo sync” dwa razy po komendzie dd. w przeciwnym razie jądro może nie zsynchronizować zapisanych danych z pamięci podręcznej jądra na dysku.
Matthias,

Odpowiedzi:

16

Znalazłem rozwiązanie tego problemu na http://positon.org/lenovo-thinkpad-bios-update-with-linux-and-usb .

Najpierw przekonwertuj isoobraz do imgpliku:

sudo apt-get install genisoimage
geteltorito -o bios.img gruj09us.iso

Następnie skopiuj na klucz USB:

sudo fdisk -l /dev/sdb  # double check that the device is right
sudo dd if=bios.img of=/dev/sdb #Will Erase the drive!! 

To powiedziawszy, myślę, że powinieneś najpierw spróbować, czy dobrze się uruchamia, jeśli po prostu napiszesz .iso za pomocą ogólnego narzędzia, jak zwykle. (Pod warunkiem, że potrzebuje trochę danych wejściowych i nie uruchamia się automatycznie w BIOSie podczas uruchamiania.) Ostatnie dwa razy instalowałem Linuksa, nie korzystałem z zalecanego narzędzia. (Zrobiłem bootowalny USB dla 15.04 za pomocą SUSE Studio Image Writer, ponieważ Unetbootin wielokrotnie go popsuł. To działało dobrze.)

jetpackneedsrepair
źródło
1
Po zaktualizowaniu systemu BIOS przywróć pamięć USB do pełnej pojemności za pomocą: # dd count=1 bs=512 if=/dev/zero of=/dev/sdbi sformatuj pamięć USB później
Arch użytkownik
To się udało! Nie jestem pewien, co to jest eltorito, ale to rozwiązało problem.
Nicolas Raoul,
2
Dla rekordów: ISO składa się z pustego katalogu głównego i ukrytego obrazu rozruchowego systemu BIOS, który jest emulowanym dyskiem twardym. geteltorito znajduje obraz dysku, czytając katalog rozruchowy El Torito. Następnie uczy się rozmiaru obrazu z tabeli partycji MBR na obrazie. Na koniec wyodrębnia obraz do pliku docelowego. Uruchamia się z pamięci USB tylko dlatego, że całe potrzebne oprogramowanie znajduje się na emulowanym dysku twardym. Bardzo osobliwa sytuacja.
Thomas Schmitt,
Próbowałem tego, ale nie udało mi się go uruchomić dla Lenovo T510. Zdecydowanie złapałem bootowalny BIOS, ale kiedy wypalił się na USB, nic tam nie było (czy to normalne?). Kiedy próbowałem uruchomić system, komunikat o błędzie informował, że nie ma systemu operacyjnego? Jakieś pomysły??
shaneonabike 31.01.16
sprawdź również ten link: ubuntuforums.org/showthread.php?t=1852425 i thinkwiki.org/wiki/…
TiloBunt
2

Jak powiedział użytkownik Arch w komentarzach, najprostszym sposobem na zapisanie rozruchowego ISO na dysku USB jest ddobraz na dysku.

Pierwszy potrójny sprawdź, do którego urządzenia blokowego jest aktualnie przypisany dysk USB:

lsblk

Niż ddobraz na dysk USB. Na przykład, jeśli twój dysk USB jest mapowany na /dev/sdb:

sudo dd if=/path/to/image of=/dev/sdb bs=8M && sync

Różne rozmiary bloków zwykle działają inaczej, jednak zwykle większy rozmiar bloku działa lepiej niż mniejszy rozmiar bloku; blok o wielkości 8M powinien wystarczyć, aby proces przebiegał z pełną prędkością.

Jeśli chcesz monitorować postęp procesu, zainstaluj pv:

sudo apt-get update && sudo apt-get install pv

I zamiast tego uruchom to polecenie:

pv /path/to/image | sudo dd of=/dev/sdb bs=8M && sync
kos
źródło
2
Musisz dodać && sync do dd
ps95
@ prakharsingh95 Dobra uwaga. Dzięki
Kos,
2
Skopiowane ISO na nośniku USB jest uruchamiane przez BIOS tylko wtedy, gdy ISO zaczyna się od MBR. Jest to dodatkowa funkcja zwana zwykle „izohybrydem”. Wszystkie główne dystrybucje Linuksa mają instalowane ISO w ten sposób. Ale Lenovo ISO nie ma MBR, tylko katalog rozruchowy El Torito do rozruchu przez BIOS z CD / DVD / BD. Niemniej jednak ma wszystkie potrzebne elementy w ukrytym obrazie rozruchowym, zaczynając od bloku ISO 27, który emuluje dysk twardy.
Thomas Schmitt,
0

Na wypadek, gdyby ktoś nadal szukał odpowiedzi.

Samo rozwiązanie powyżej nie wystarczyło dla mojego Lenovo E470, który obsługuje UEFI. Narzędzie do aktualizacji systemu BIOS po prostu nie uruchamia się z pamięci USB.

Należy odczytać plik README odpowiadający plikowi aktualizacji systemu BIOS.

Po ponownym uruchomieniu naciśnij klawisz Enter, aby przerwać normalne uruchamianie, a po wejściu do konfiguracji systemu BIOS:

...
-> 7. W „UEFI / Legacy Boot” upewnij się, że wybrano „Tylko UEFI”.
   8. Wybierz „Boot” z menu. Zanotuj bieżącą kolejność uruchamiania dla
      przywrócenie później, jeśli trzeba zmodyfikować listę rozruchową.
   9. W „Priorytetie rozruchu” upewnij się, że na urządzeniu znajduje się następujące urządzenie
      „ATA HDD0”.
      - „ATAPI CD0” (w przypadku korzystania z wewnętrznego napędu optycznego ThinkPad)
      - „USB CD” (w przypadku korzystania z napędu optycznego USB)
-> - „USB HDD” (dla mojej pamięci USB)

Po ponownym uruchomieniu powinieneś być w stanie uruchomić z ciebie „USB HDD”.

algo99
źródło
Lenovo wspomina o tym w swoim pliku README na stronie pobierania BIOS-u, ale dobrze jest przypomnieć ludziom.