sobota, 24 października 2015

Jak zrobić bootowalny pendrive z Linuksem/BSD

W sieci jest mnóstwo artykułów o tym, jak robić bootowalne pendrivy z Linuksami - na ogół są to tutoriale do narzędzi pokroju UNetbootin. Problem w tym, że od długiego czasu te narzędzia nie są potrzebne - z mojego doświadczenia robią więcej złego niż dobrego.
Od długiego już czasu specjalne narzędzia nie są po prostu potrzebne. Praktycznie wszystkie "wielkie" dystrybuje publikują obrazy ISO w tzw "formacie hybrydowym" - znaczy to, że plik ISO jest równocześnie obrazem bootowalnej płyty CD/DVD jak i obrazem bootowalnego pendrive (tada!).

Czy mój ISO jest hybrydowy?

Jak sprawdzić, czy plik ISO jest hybrydowy? Prosto: trzeba podejrzeć sam początek pliku jakimś "podglądaczem" szesnastkowym - dobry będzie nawet podgląd przez F3 w TotalCommenderze czy Midnight Commanderze. Jeżeli obraz jest nie-hybrydowy, to początek pliku zawiera same zera. Jeżeli obraz jest hybrydowy, to na początku pliku będą jakieś "śmieci", w szczególności bajty 510 i 511 (licząc od 0) zawierać będą bajty odpowiednio 0x55 i 0xAA (tak, tak, identyfikator MBR na dysku twardym)
Na dzień dzisiejszy hybrydowe ISO mają między innymi najnowsze wydania następujących dystrybucji:

  • Debian
  • wszystkie oficjalne odmiany Ubuntu,
  • Fedora,
  • Arch,
  • CentOS,
  • Elementary,
  • Gentoo,
  • Mint,
  • OpenSUSE,
  • Qubes,
  • Sabayon,
  • Scientific Linux
  • wiele, wiele innych (sprawdziłem te co mam :) )
Systemy BSD (m.in FreeBSD, OpenBSD, Dragonfly, NetBSD) mają na ogół osobny plik do nagrania na pendrive. Na ogół jest jasno oznaczony, że to nie ISO - ma rozszerzenie IMG albo FS. Jeżeli chodzi o samo nagranie na pena, traktujemy je jak obraz hybrydowy - następny punkt się do nich jak najbardziej stosuje.

Mam hybrydowe ISO bądź obraz pendrive. Co robić, jak żyć?

Jeżli jesteś szczęśliwym posiadaczem hybrydowego ISO, masz bardzo ułatwione zadanie. Wystarczy, że nagrasz obraz sektor-za-sektorem na pena i będzie działać. Oczywiście nagranie takie bezpowrotnie morduje poprzednią zawarość pendrive'a!

Linux

Posiadacze Linuksa mają ułatwione zadanie, gdyż wszystkie potrzebne narzędzia mają w systemie:

  1. Podłącz pendrive do komputera, przeloguj się na konto roota i wywołaj polecenie fdisk -l | egrep '^D.sk /dev/sd'. Powinieneś dostać listę wszystkich nośników (fizycznych ale i czasami wirtualnych) wraz z ich pojemnościami, np.
    Disk /dev/sdx: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
    Disk /dev/sdy: 1.4 TiB, 1500301910016 bytes, 2930277168 sectors
    Disk /dev/sdz: 1.9 GiB, 1977614336 bytes, 3862528 sectors
    
    Tutaj na przykład pendrive jest ostatni.
  2. Znajdź oznaczenie swojego pendrive'a (na podstawie pojemności, w dodatku powinien być jednym z ostatnich urządzeń o oznaczeniu /dev/sd...). Na przykład może to być /dev/sdz (u ciebie na 99.999% będzie inne)
  3. Rozpocznij kopiowanie obrazu poleceniem dd if=/ścieżka/do/pliku.iso of=/dev/sdTwójPendrive.
  4. Profit!