Kategorie | Howto, Linux

  

Uruchamianie obrazów ISO z pendrive (multiboot)

Opublikowano 27 grudnia 2012 przez Franek

Wydaje mi się, że wypalanie obrazów ISO na krążkach CD/DVD już od jakiegoś czasu stało się passé. Wprawdzie istnieją wyjątki, ale czy ktoś jeszcze wypala krążki po to aby przetestować nowe wydanie jakiejś dystrybucji, czy zainstalować system?

Linux-pendriveDo takich wyjątków należy między innymi brak możliwości bootowania z USB w opcjach BIOSU w starszych komputerach, ale i na to jest rada, rozie opisał ostatnio jak uruchomić komputer z USB, gdy BIOS nie ma opcji bootowanie z USB. Szkoda, że nie znałem tego rozwiązania kilka lat temu, dzisiaj już coraz trudniej spotkać takie komputery, rozwiązanie jednak jak najbardziej przydatne.

Uruchamianie systemu z pendrive ma co najmniej kilka zalet w porównaniu z bootowaniem z płyty. Odczyt danych z pendrive jest szybszy, cichy (nie słychać szumu wirującego krążka w napędzie), na pendrive można również mieć system plików z zapisem. Krążki CDR szczególnie te tańsze mają małą trwałość, rysują się i są mniej wygodne i praktyczne niż pendrive.

Dzisiejszy wpis ma na celu pokazać jak przygotować pendrive z zainstalowanym GRUB, rozwiązanie to pozwala na bootowanie obrazów ISO bez ich instalacji, czy rozpakowywania.

W poniższym HOWTO założono, że pendrive identyfikowany jest jako /dev/sdX1. Na różnych systemach i zależnie od ilości podłączonych dysków X będzie zastąpione literą b, c, d i tak dalej. Aby sprawdzić jak identyfikowany jest pendrive można posłużyć się poleceniem fdisk -l wydanym z poziomu superusera. Należy zwrócić na to uwagę bo pomyłka na tym polu może skutkować niemożnością uruchomienia systemu na komputerze, albo utratą danych.

Krok 1: pendrive powinien wyposażony być w system plików FAT32, można to sobie wyklikać w GParted, albo użyć polecenia:
# mkfs.vfat -n multiboot /dev/sdX1

Krok 2: po formatowaniu należy zamontować urządzenie i przejść do jego punktu montowania, oraz utworzyć tam dwa nowe foldery:
$ cd PUNKT_MONTOWANIA
$ mkdir boot iso

Krok 3: teraz pora na instalację GRUBA w głównym rekordzie startowym (MBR):
# grub-install --force --no-floppy --boot-directory=PUNKT_MONTOWANIA/boot /dev/sdX

Krok 4: teraz pora na pobranie obrazów ISO interesujących nas dystrybucji, których możliwość uruchamiania z pendrive jest nam potrzebna, obrazy należy umieścić w folderze iso na pendrive. W przykładzie posłużono się następującymi dystrybucjami:

  • TAILS – The Amnesic Incognito Live System – bazująca na Debianie dystrybucja wyposażona w narządzia zapewniające bezpieczeństwo i anonimowość.
  • GParted Live CD – graficzny edytor i konfigurator dysków i partycji.
  • Debian GNU/Linux – instalatory Debiana w wersji 32 i 64 bitowej.
  • Tiny Core – minimalistyczna dsytrybucja Linuxa.
  • Darik’s Boot and Nuke (DBAN) – narzędzie do bezpiecznego usuwania danych z dysków.
  • Memtest86+ – znany i ceniony program do testowania pamięci RAM.

Można posłużyć się każdą inna dystrybucją, należy jednak odpowiednio zmodyfikować plik konfiguracyjny GRUB.

Krok 5: teraz w katalogu boot na pendrive należy utworzyć plik konfiguracyjny GRUBA o nazwie grub.cfg, oraz odpowiednio go zmodyfikować w zależności jakie systemy zamierzamy uruchamiać:

# Config for GNU GRand Unified Bootloader (GRUB)
# /boot/grub/grub.cfg

# Timeout for menu
#set timeout=30

# Default boot entry
#set default=0

# Menu Colours
set menu_color_normal=white/black
set menu_color_highlight=white/green

# Boot ISOs

menuentry "TAILS - The Amnesic Incognito Live System" {
    set iso="/iso/tails-i386-0.15.iso"
    loopback loop $iso
    linux (loop)/live/vmlinuz boot=live config live-media=removable nopersistent noprompt quiet timezone=America/Toronto block.events_dfl_poll_msecs=1000 splash nox11autologin module=Tails findiso=$iso quiet_
    initrd (loop)/live/initrd.img
}

menuentry "GParted Live CD" {
    set iso="/iso/gparted-live-0.14.0-1.iso"
    loopback loop $iso
    linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt ip=frommedia toram=filesystem.squashfs findiso=$iso
    initrd (loop)/live/initrd.img
}

menuentry "Debian Wheezy AMD64 Installer" {
    set iso="/iso/debian-installer-wheezy-amd64-mini.iso"
    loopback loop $iso
    linux (loop)/linux
    initrd (loop)/initrd.gz
}

menuentry "Debian Wheezy i386 Installer" {
    set iso="/iso/debian-installer-wheezy-i386-mini.iso"
    loopback loop $iso
    linux (loop)/linux
    initrd (loop)/initrd.gz
}

# Starting with v4.4rc3 it is now possible to load the embedded extensions inside an iso image file.
# See http://forum.tinycorelinux.net/index.php/topic,12786.msg69982.html#msg69982
menuentry "Tiny Core" {
    set iso="/iso/TinyCore-current.iso"
    loopback loop $iso
    linux (loop)/boot/vmlinuz cde waitusb=5 iso=/mnt/sdb1$iso
    initrd (loop)/boot/core.gz
}
menuentry "Darik's Boot and Nuke (DBAN)" {
    set iso="/iso/dban-2.2.7_i586.iso"
    loopback loop $iso
    linux (loop)/DBAN.BZI nuke="dwipe"
}

menuentry "Memtest86+" {
    linux16 /boot/memtest86+-4.20.bin
}

To wszystko, po zapisaniu zmian można już uruchamiać komputer z tak przygotowanego pendrive.

Autor: Daniel Wayne Armstrong – opublikowano za jego zgodą.

  

11 Comments For This Post

  1. rozie Says:

    Fajny wpis, niedawno zastanawiałem się nad zrobieniem takiego wynalazku (wiedziałem, że się da, ale wersja, którą kiedyś widziałem zakładała IIRC kopiowanie plików z obrazu i użycie syslinux). Niestety, przerwałeś w najciekawszym momencie, czyli jak sprawdzić, jakie opcje wybrać dla boot? No i warto by wspomnieć, co w przypadku aktualizacji pojedynczego pliku iso. Czy/kiedy trzeba aktualizować gruba? Na moje oko wystarczy zmiana ścieżki do pliku iso. No chyba, że te nieszczęsne opcje dla boot…

  2. Noname Says:

    Jeśli nie jesteś wtajemniczony w konfigurację GRUB-a, to odpuść sobie. No chyba, że jesteś przygotowany na wszystkie nerwy, próbuj. Jednak daję Ci gwarancję, że dodawanie ISO do GRUB-a jest mało przyjemne i często z tym mają problemy nawet bardzo zaawansowani ludzie. Są obrazy ISO, które łatwo dodaje się do GRUB-a, ale są też takie, które wymagają głowienia się, np. trzeba wpaść na to, że ISO trzeba najpierw wypakować i jeszcze pokombinować nad wpoisem do GRUB-a, ale są też takie, że za żadne skarby nie będą działać, ponieważ będziesz musiał kombinować, np. żeby instalator był wstanie widzieć ISO nie tylko z płyty CD, ale i z Pendrive itd.

  3. tydell Says:

    Mniej więcej rok temu zrobiłęm na potrzeby serwerowni pendrive z m.in. instalatorami i narzędziówkami w postaci ISO umieszczonymi na pendrive i uruchamianymi za pomocą gruba.
    Jedną z początkowych wersji grub.cfg można podejrzeć tu -> http://pastebin.com/5pM1n5b2

  4. Franek Says:

    Z pewnością się przyda, dzięki.

  5. Noname Says:

    Wszystko fajne, wszystko piękne, ale ta metoda jest dobra pod warunkiem, że działa. Jednak przeciętnemu Kowalskiemu często nie będzie działać, ponieważ często może nie wiedzieć jaki wpis do GRUB-a dodać, a po drugie może wydawać się, że robi dobrze to nie zadziała, prosty przykład: Debian Netinst wymaga przerobienia i podmiany kilku plików ISO, najnowsze wydania Fedory również (natomiast np. 14 wymagał rozpakowania obrazu ISO i odpowiedniego wpisu do GRUB-a), SUSE też wymaga podmiany plików. Jedyna dystrybucja, którą fajnie dodaje się pliku konfiguracyjnego GRUB jest Ubuntu – chociaż nie lubię jej za bardzo, tutaj procedura jest normalna i prosta do zrozumienia. Zamiast Twojej (autora, który wyraził Ci zgodę na przetłumaczenie tego wpisu) metody polecam użycie dd, cat lub ewentualnie programu do tego typu – prawdopodobieństwo, że będzie dobrze działać jest dużo większe.

  6. Franek Says:

    Same distra które były wybrane tutaj, świadczą raczej, że nie jest to metoda dla Kowalskiego. Chodziło tutaj też o multiboot, z pomocą dd, syslinux, unetbootin czy innego nie osiągniesz tego.

  7. Tymek Says:

    Hmm – słabszym ogniwem niż zaawansowanie użytkownika (człowieka można wszak wyszkolić) wydaje mi się kompatybilność i ograniczenia tej metody – nie zaglądałem do kodu gruba :) ale podejrzewam że tak można zrobić tylko z linuksem lub z "ISO" które po starcie nie potrzebuje mieć dostępu do samego siebie, tj wczytuje kilka megabajtów z ramu i tyle – wingrozy ani makówkOSa tak nie wybootujesz… w mojej opinii – chociaż zachęcam do testów i mam nadzieję że się mylę.

    Sam używam sprzętowego rozwiązania Virtual USB CD/DVD/BD ROM jednej firmy na 'ostatnią literę alfabetu' (mają dwie wersje: USB2.0 lub USB3.0), innych producentów ani produktów nie znalazłem ale zakochałem się w tym od pierwszego wejrzenia.

    Trafiłem tu też dzięki stronie Roziego – więc dodam jeszcze tylko, że spotkałem komputery które nie wspierają bootowania z pamięci USB-pendrive – ale za to bez problemu bootują z USB-cdrom :) więc nie mam problemu.

    P.S. Ten tekst nie miał na celu zwiększenie sprzedaży ani kryptoreklamy produktów firmy na ostatnią literę alfabetu (łacińskiego alfabetu!) – ma zachęcić jedynie do poszukiwań alternatyw a także przez to do zmniejszenia ceny produktu :). Nie jestem też zwolennikiem wingrozy ani makówki ale świat nie jest czarno biały – czasami jest też niebieski i srebrnoszary.

  8. schwarzgentoo Says:

    Zawsze można użyć unetbootin.
    Ale zamiast GRUB-a na USB wolę syslinux, grub wymaga identyfikatora partycji syslinux odpala z nośnika na którym się znajduje.

  9. Any Says:

    Wypalanie płyt nie tylko stało się passe, ale przede wszystkim wolne, niewygodne i niepewne. Ostatnio zainstalowałem Windowsa 8 z pendrive w zaledwie 10 minut :D

  10. Kamil Says:

    Dokładnie, wypalenie płyty szczególnie powyżej 2 Gb jest zajmuję trochę czasu. A jak wiadomo czas to pieniądz.

  11. rozie Says:

    Wydaje mi się, że czas tej samej ilości danych na płytę i pendrive jest zbliżony. Szczególnie dla większych ilości danych. Oczywiście zależy jaki pendrive jeszcze, ale tak typowo?

Leave a Reply

Polityka komentarzy

Wyszukiwane tagi: bootowanie z pendrive, Bootowanie, linux      
     
Green Dog Says

MiniBlog