Szwajcarski nóż^Wpendrive oficerski

Szwajcarskie noże oficerskie słyną ze swej funkcjonalności. Odkąd zaczęto produkować wersje z wbudowaną pamięcią flash na USB zastanawiałem się, jak zapewnić oprogramowaniu zainstalowanemu na przenośnej pamięci równie dużą funkcjonalność.

PenDrive do zadań specjalnych

Plan minimum to możliwość uruchamiania z pamięci klucza USB przynajmniej:

Dodatkowo przydatna byłaby dystrybucja typu LiveCD (Debian Live?) oraz możliwość uruchamiania instalatora Debiana.

Przygotowanie pamięci

Przygotowanie dysku USB rozpoczynamy od usunięcia aktualnej tablicy partycji. W wyniku wykonania tego kroku dane na dysku nie będą już dostępne. Mój dysk jest w systemie widoczny jako /dev/sda.

# dd if=/dev/zero of=/dev/sda bs=512 count=1

Gdy tablica partycji jest już czysta, tworzymy partycję startową. W tym celu użyjemy programu mkdiskimage z pakietu syslinux-common. Użycie tego narzędzia pozwala na stworzenie dysku, który będzie można uruchamiać zarówno jako USB-HDD, jak i jako USB-ZIP. Partycja startowa będzie oznaczona numerem 2, dzięki czemu systemy Windows, nie będą jej używały.

# mkdiskimage -2 -z /dev/sda 1024

Ostatni parametr to wielkość partycji. W moim przypadku 1024, czyli największy rozmiar, który jest obsługiwany przez wszystkie systemy BIOS. Możemy stworzyć mniejszą partycję, jeśli mamy mniejszą pamięć flash. Stworzenie większej, może spowodować problemy z uruchamianiem systemu z tej partycji.

Instalacja GRUB-a

Kolejnym krokiem będzie instalacja GRUB4DOS. Po pobraniu i rozpakowaniu programu wydajemy, w katalogu z programem, polecenia:

# ./bootlace.com /dev/sda
# ./bootlace.com --floppy /dev/sda2

Aby dokończyć instalację, montujemy partycję /dev/sda2 i kopiujemy na nią plik grldr:

# mount /dev/sda2 /mnt
# cp grldr /mnt

Instalacja Ultimate Boot CD i Parted Magic OS

W tym przypadku ciężko mówić nawet o instalacji. Po prostu umieszczamy pliki ubcd.iso i pmagic-4.1.iso na nośniku (obok skopiowanego wcześniej grldr).

Łączenie elementów układanki w działającą całość

Pewnie już każdy zastanawia się jak to ma niby zadziałać? GRUB i obrazy ISO płyt CD!? Odpowiedź jest prosta: menu.lst.

Po rozpakowaniu GRUB4DOS otrzymamy plik menu.lst, w którym odnajdziemy m.in. takie wpisy:

title Parted Magic ISO
fallback 7
find --set-root /pmagic.iso
map /pmagic.iso (0xff) || map --mem /pmagic.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2

title Ultimate Boot CD ISO
fallback 8
find --set-root /ubcd.iso
map /ubcd.iso (0xff) || map --mem /ubcd.iso (0xff)
map --hook
chainloader (0xff)
savedefault --wait=2

Oto cała magia GRUB4DOS. Potrafi on załadować system z bootowalnego obrazu ISO.

Testowanie z pomocą QEMU

Aby przetestować działanie PenDrive-a bez konieczności restartowania komputera użyjemy QEMU. Po odmontowaniu systemu plików wydajemy polecenie:

$ qemu -monitor stdio -kernel-kqemu -m 1024 -hda /dev/sda

Użyte parametry włączają linię komend QEMU na konsoli, z której go uruchomiliśmy; 1024MB pamięci RAM w maszynie wirtualnej; oraz użycie kqemu również dla kodu jądra.

Plan minimum wykonany. Uruchamianie instalatora Debiana i dystrybucji Live jest bardziej skomplikowane, ale również możliwe.

Debian-Installer

Niestety ISO aktualnej wersji stabilnej (“Lenny“) nie potrafi wystartować w ten sposób, dlatego użyjemy hd-media/boot.img.gz dla i386 (lub amd64).

Plik ten należy poddać dekompresji i skopiować na PenDrive-a:

# gunzip boot.img.gz
# cp boot.img /mnt/debian-installer.img

Do menu.lst należy dodać następujący wpis:

title Debian-Installer
find --set-root /debian-installer.img || root (fd0)
map /debian-installer.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1

Oprócz hd-media/boot.img.gz na nośniku potrzebne jest jeszcze zwykłe ISO instalatora Debiana. Można wybrać dowolny obraz z dostępnych (netinst, cd1 a nawet dvd1, jeśli mamy około 4GB wolnego miejsca). Obraz może znajdować się na innej partycji.

Debian Live

Instalacja Debian Live na PenDrive jest bardziej skomplikowana. Zaczynamy od wybrania “smaku” dystrybucji Live. Do wyboru mamy: Gnome, KDE, XFCE, LXDE, Rescue oraz standard.

Gdy pobraliśmy już plik ISO. Za pomocą mount -o loop lub Midnight Commandera kopiujemy plik live/filesystem.squashfs do katalogu live na dysku USB, a pozostałe pliki z płyty CD do jednego katalogu (np. /tmp/debian-live).

Z wszystkich plików (poza live/filesystem.squashfs!) tworzymy nowy plik ISO komendą:

mkisofs -o /tmp/debian-live.iso -J -l -cache-inodes -allow-multidot -no-emul-boot -boot-load-size 4 -boot-info-table -r -b isolinux/isolinux.bin -c isolinux/boot.cat -m isolinux/isolinux.bin /tmp/debian-live

Plik /tmp/debian-live.iso kopiujemy na PenDrive-a, a do menu.lst dodajemy następujący wpis:

title Debian Live
find --set-root /debian-live.iso || root (fd0)
map /debian-live.iso (0xff) || map --mem /debian-live.iso (0xff)
map --hook
chainloader (0xff)

Partycja “na dane” oraz ukrywanie partycji numer 2

Na koniec powinniśmy stworzyć partycję /dev/sda1 zajmującą całe pozostałe miejsce oraz nadać partycjom etykiety, aby łatwiej było je rozróżnić. Na koniec warto ukryć partycję /dev/sda1. Wszystkiego tego dokonamy uruchamiając komputer z… naszego PenDrive-a za pomocą Parted Magic OS.

Windows

W podobny sposób można z PenDrive-a uruchamiać obrazy płyt CD (BartPE) z Windows XP przygotowane programem PE Builder.

One thought on “Szwajcarski nóż^Wpendrive oficerski”

  1. There is about 80MB of free space on boot partition. You can put something there. xPUD is about 40MB and will add a simple and fast distribution with web browser and a media player, with a simple user interface on top.

    Download xpud-0.9.1-image from xpud.org and insert following lines to menu.lst.

    title xPUD
    find --set-root /xpud-0.9.1-image || root (fd0)
    kernel /xpud-0.9.1-image noisapnp lang=de quiet

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.