Bootowalny pendrive lub karta pamięci

Wyobraźmy sobie taką sytuacje że chcemy zainstalować jakąś dystrybucje Linuksową i popsuła się nagrywarka albo w ogóle nie ma napędu w komputerze którym chcemy zainstalować system.
Nie ma co płakać, bo do tego celu można wykorzystać pendrive lub jeżeli mamy wbudowany w komputerze czytnik kart.

Jest kilka narzędzi które pozwolą uczynić naszego pendrive bootowalnym.
Ja wybrałem syslinux który jest nie tylko na Linuksa ale również na Windowsa.
Dzięki temu sposób instalacji będzie bardzo podobny dla obu systemów.

Z strony należy pobrać syslinux-3.86.zip. Syslinux 3.86 to aktualnie najnowsza stabilna wersja.
Rozpakowujemy archiwum w wygodne dla nas miejsce, na przykład:
Windows C:\syslinux-3.86\ Linux /home/user/syslinux-3.86

Moją ofiarą padła dystrybucja PCLinuxOS z LXDE mini, obraz zajmuje 410MB
Zaś nośnik którego użyłem to karta Memory Stick PRO Duo 512MB

Należy sformatować kartę pamięci czy też pendrive na system plików FAT bądź też FAT32. Na Linuksie można użyć do tego celu fdisk albo gParted ale trzeba pamiętać aby partycja była bootowalna trzeba ustawić flagę boot.
Gdy mamy sformatowaną pamięć należy zainstalować bootloadera. Aby to uczynić udajemy się do:
Windows Uruchamiamy wiersz poleceń i wpisujemy cd C:\syslinux-3.86\win32 następnie syslinux -m -a -f -d / G: Przy czym G to litera dysku więc u ciebie może być inna. Linux Uruchamiamy terminal i wpisujemy cd /home/user/syslinux-3.86/linux następnie ./syslinux -f -d / /dev/sdb1 Przy czym /dev/sdb1 to ścieżka do czytnika czy też pendrive i może się u ciebie różnić.

Komendy użyte w syslinux to:
-m instaluje bootloadera na sektor MBR
-a aktywuje partycję tak aby była wykrywalna dla biosu jako partycja bootowalna
-f wymusza instalacje, nie potrzebne ale na wszelki wypadek można użyć
-d ścieżka do pliku syslinux.cfg w naszym przypadku jest to / czyli bezpośrednio na pamięć

Gdy została przygotowana pamięć to teraz można zabrać się za nasz system.
Posiadany obraz iso należy wypakować, ja użyłem do tego 7zip.
Z wypakowanych plików kopiujemy następujące pliki na nasz nośnik.
livecd.sqfs isolinux\isolinux.cfg isolinux\vmlinuz isolinux\initrd.gz isolinux\back.jpg

Następnie zmieniamy nazwę isolinux.cfg na syslinux.cfg a plik back.jpg konwertujemy na format png
Kolejne pliki jakie będą nam potrzebne to.
syslinux-3.86\com32\menu\vesamenu.c32 syslinux-3.86\memdisk\memdisk


Gdy posiadamy już wszystkie pliki pora na konfiguracje.
Otwieramy syslinux.cfg ulubionym edytorem i naszym oczom powinno ukazać się coś takiego.
default LiveCD prompt 1 timeout 90 ui gfxboot.com bootlogo label LiveCD kernel vmlinuz append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent label LiveCD - No Boot Splash kernel vmlinuz append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose label Video safe mode - VESA kernel vmlinuz append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent vesa label Safe boot kernel vmlinuz append livecd=livecd initrd=initrd.gz root=/dev/rd/3 acpi=off vga=normal keyb=us noapic nolapic nopinit vesa label Console kernel vmlinuz append livecd=livecd 3 initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent label Copy to RAM kernel vmlinuz append livecd=livecd copy2ram initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose label Media Check kernel vmlinuz append livecd=livecd md5sum initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose

Zmieniamy "default LiveCD" na "default vesamenu.c32", następnie wartość "prompt 1" na "prompt 0" i usuwamy "ui gfxboot.com bootlogo" a na jego miejsce dodajemy
menu resolution 800 600 menu background back.png menu vshift 11 menu color title 1;37;40 #ffffff #00000000 none menu color unsel 37;40 #90ffffff #00000000 none menu color sel 37;47 #00000000 #ffffff none menu color border 37;40 #ffffff #00000000 none menu title PCLinuxOS LXDE 2010 mini

Tak powinno to wszystko wyglądać, aby lepiej zrozumieć konfiguracje dodałem komentarze.
#wczytuje moduł o nazwie vesamenu.c32 który jest odpowiedzialny za wyświetlanie menu w trybie vesa co daje nam możliwość użycia jako tła tapety default vesamenu.c32 #Wartość ustawiona na 0 nie wyświetla wiersza poleceń boot: co skraca czas oczekiwania na menu prompt 0 #czas jaki mamy na wybór liczony w sekundach, przy czym wartość 100 nie oznacza 100 sekund a 10 timeout 100 #ustawia rozdzielczość naszego menu tak aby pasował pod nasze tło menu resolution 800 600 #nazwa naszego tła które jest w formacje png o wymiarach 800 600, Jeżeli plik będzie miał większą rozdzielczość niż nasze menu tło będzie czarne menu background back.png #przesuwa menu w dół tak aby nie zlewało się z tłem na którym jest logo menu vshift 11 #aby zrozumieć o co chodzi z ustawianiem kolorów należy udać się do syslinux-3.86\doc\menu.txt jest tam wiele komend używanych w pliku konfiguracyjnym. #ustawia kolor tytułu menu menu color title 1;37;40 #ffffff #00000000 none #ustawia kolor menu menu color unsel 37;40 #90ffffff #00000000 none #ustawia kolor zaznaczonej pozycji w menu menu color sel 37;47 #00000000 #ffffff none #ustawia kolor ramki otaczającej menu menu color border 37;40 #ffffff #00000000 none #tytuł menu menu title PCLinuxOS LXDE 2010 mini #wyświetla pozycje o nazwie LiveCD w menu label LiveCD #ładuje jądro vmlinuz (Linux) kernel vmlinuz #parametry odpowiedzialne za uruchomienie systemu PCLinuxOS append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent label LiveCD - No Boot Splash kernel vmlinuz append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose label Video safe mode - VESA kernel vmlinuz append livecd=livecd initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent vesa label Safe boot kernel vmlinuz append livecd=livecd initrd=initrd.gz root=/dev/rd/3 acpi=off vga=normal keyb=us noapic nolapic nopinit vesa label Console kernel vmlinuz append livecd=livecd 3 initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=silent label Copy to RAM kernel vmlinuz append livecd=livecd copy2ram initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose label Media Check kernel vmlinuz append livecd=livecd md5sum initrd=initrd.gz root=/dev/rd/3 apci=on vga=788 keyb=us splash=verbose

Jeżeli po uruchomieniu menu pokażą się jakieś dziwne znaki pomiędzy wyrazami zamiast spacji to należy w tych miejscach usunąć i jeszcze raz wstawić spacje

No dobrze mamy już gotowe PCLOS LiveCD z takimi samymi opcjami i z podobnym nieco wyglądem menu, ale co jeżeli chcemy czegoś więcej, na przykład mieć możliwość uruchomienia obrazu iso z FreeDOS bądź też innego iso z przydatnymi narzędziami.

Wystarczy na samym końcu pliku konfiguracyjnego dodać
#wyświetla pozycje o nazwie Norton Ghost w menu label Norton Ghost #jądro odpowiedzialne za wczytanie iso kernel memdisk #obraz iso w tym przypadku przygotowany prze zemnie FreeDOS z Norton Ghost initrd ghost.iso #parametry odpowiedzialne za uruchomienie obrazu czyli iso i raw który jest odpowiedzialny za metodę dostępu do pamięci append iso raw

Ale trzeba pamiętać że im większy obraz iso tym dużej inicjuje się jego wczytanie a w przypadku PCLinuxOS uruchomienie LiveCD z takiego obrazu było nie możliwe z powodu błędów które wystąpiły podczas rozruchu sytemu.

Można również uruchomić obraz dysku z zainstalowanym systemem w formacie img
O to przykład.
label jakiś tam system kernel memdisk initrd obraz.img append raw

Gdy mamy już przygotowany nasz LiveCD bez CD należy w biosie ustawić USB HDD dla pendrive lub USB KEY dla czytnika kar pamięci jako pierwszy napęd z którego ma próbować uruchomić nasz bootloader.

A oto efekt pracy
To jest oryginalny splash screen z LiveCD który używa modułu gfxboot który wizualnie daje lepsze efekty w skład którego mogą wchodzić animacje.

Grafika

A to jest podróbka którą zrobiłem nie powala ale wygląda przyzwoicie.
Grafika

Co ciekawe użyty w PCLinuxOS bootloader to isolinux który jest jednym z narzędzi syslinux. Próbowałem użyć modułu gfxboot w syslinux ale przy próbie ładowania pliku bootlogo zostałem poinformowany że plik jest za duży. Może kiedyś uda mi się znaleźć rozwiązanie tego problemu.

Żeby dowiedzieć się więcej o możliwościach syslinux polecam zajrzeć na Wiki Syslinux i do katalogu syslinux-3.86\doc

Jeżeli jest jakiś błąd, bądź coś jest niezrozumiałego to proszę pisać.
Krytyka NIE mile widziana :) 

windows linux porady

Komentarze (19)

avatar | 22.06.2010 11:23
Ciekawy wpis. Mam pytanie - czy tak przygotowany live bedzie pamiętał ustawienia (tapeta, nowe programy etc.) czy zachowywał będzie się jak Live - czyli po restarcie - default?
avatar | 22.06.2010 11:54
Też jestem ciekaw jak wygląda kwestia zapamiętywania zmian...
avatar | 22.06.2010 12:06
No fajny temat, ale mogłeś umieści chociaż Jakąś wzmiankę o unetbootin (nawet czcionką 6 :P) dostępnym tutaj: http://unetbootin.sourceforge.net/. Który bardziej nadaje się da początkujących albo totalnych laików. Bo powiedzmy sobie szczerze twój opis jest dla trochę bardziej zaawansowanych :).
avatar | 22.06.2010 12:07
Z tego co kiedyś przyuważyłem to w Slax Linux kwestię zapisywania stanu sesji rozwiązano poprzez dodanie jakieś opcji do kernela ale trzeba to sprawdzić. Natomiast np. Puppy Linux tworzy sobie plik z założonym systemem plików, jeśli dobrze kojarzę ext2 i na nim zapisuje sobie stan systemu co ok. 10 minut i zapewne można by to ustawić jakoś w Cronie. Trzeba by było podpatrzeć rozwiązanie z Puppiego ;)

Pozdrawiam!

PS. "Nie" z czasownikami pisze się rozdzielnie, więc powinno być "Nie ma co płakać..." ;)
avatar | 22.06.2010 12:18
Nie zapamiętuje ustawień. Można to zrobić remasterując livecd i stworzyć użytkownika który miałby swój katalog na pendrive. W tedy też można ustawić aby automatycznie logował się ten użytkownik.

Unetbootin to jedna z możliwości jak i grub albo grub4dos

Jeden problem można rozwiązać czasem na wiele sposobów, zwłaszcza jeżeli chodzi o Linuksa :)
avatar | 22.06.2010 12:27
Ustawienia użytkownika (tapeta, motyw itp) to jedno, możliwość zapamiętania zainstalowanych aplikacji to drugie :)
avatar | 22.06.2010 12:47
To jest livecd i nawet niema możliwości żadnego zapisu na nośniku bo traktuje go jak cd.
Jeżeli ktoś ma wystarczająco dużo pamięci to może zainstalować system tak jakby instalował go na zwyczajnym dysku.
avatar | 22.06.2010 13:18
Dobry wpis. Wytłumaczona najtrudniejsza (przynajmniej dla mnie:) droga do utworzenia LiveUSB.


Wspomnę też o Linux Live USB Creator (LiLi USB Creator), który pozwala na utworzenie bootowalnego pendrive z opcją zapisywania danych.
http://www.linuxliveusb.com/
http://www.linuxliveusb.com/en/faq/34/68-persistent-do-not-do.html
avatar | 22.06.2010 13:20
Instalowałem już kilka dystrybucji Linuksowych na zewnętrznym nośniku tak jakbym instalował normalnie na dysku przez instalator który dana dystrybucja posiadała. Nawet można to zrobić z Windowsem XP ale trzeba trochę pozmieniać w ustawieniach instalatora bo inaczej zainstalowany system się nie uruchomi.

Najlepszy do takich zabaw jest dysk 2.5 cala w kieszeni USB nawet nie czuje się różnicy w działaniu.
avatar | 22.06.2010 13:46
Pomyliłem się odnośnie możliwości zapisania danych na pamięci na której został uruchomiony livecd. Jednak można zapisywać dowolne dane bo nie traktuje pamięci flash jako cd ale i tak nie zmienia to faktu ze livecd to livecd i ma ograniczone możliwości :)
avatar | 22.06.2010 17:04
Ciekawy artykuł, trzeba wypróbować ten „boot loader“, sprawdzałem jest już domyślnie zainstalowany w Moim PCLOS. Jakiś czas wcześniej próbowałem za pomocą Unetbootina, uruchomić najnowsze wersje PCLinusOS-a i nie udało się odpalić z Flasha musiałem obraz ISO wypalić na płytę. Po za tym PCLinuxOS LXDE to Mój ulubiony Linux - is very vast
Pozdrawiam.
avatar | 22.06.2010 17:24
Ja to rozwiązałem inaczej. Po prostu zainstalowałem Ubuntu na Pendrive. Można to zrobić bardzo łatwo stosując maszynę wirtualną, np. virtualbox. Tworzymy maszynę na Linuksa, ale nie montujemy żadnego dysku twardego tylko podłączamy pendrive (uwaga, Virtualbox w wersji Open Source nie obsługuje USB, dlatego trzeba tą "zwykłą" wersję.) Instalator Linuxa będzie widział pamięć przenośną jako dysk. Reszta wygląda jak zwykła instalacja. Finalnie wyłączamy maszynę wirtualną i próbujemy odpalić system z Pena. Wszystko śmiga jak trzeba, zapamiętuje ustawienia i zainstalowane programy.
avatar | 22.06.2010 19:10
@Chomik

Po co kombinować z maszyną skoro Ubuntu umożliwia instalację Ubuntu na pendrajwie przy pomocy USB Disk Creator? Przy pomocy tego narzędzia można przekopiować Ubuntu i ustawić pamięć dla systemu właśnie na zapisywanie zmian. Wszystko to można dodatkowo zrobić w trybie LiveCD.

Instalować systemu na pendrajwie też nie ma sensu, zajedzie się go, chyba że katalog tymczasowy stworzy się jako tmpfs i obejdzie się bez swapa.

Pozdrawiam!
avatar | 22.06.2010 21:17
Metod jak zwykle jest wiele. Swap'a możesz również zrobić na pendrajwie, wystarczy na nim stworzyć takową partycję (linux-swap).
avatar | 22.06.2010 23:42
Mi właśnie chodziło o to żeby nie tworzyć swapa na pendrajwie, bo po co go niszczyć ;)

Pozdrawiam!
avatar | 23.06.2010 7:07
Nie zniszczyć, tylko szybciej zużyć :) Zresztą bez swapa da się zyć. A jak ktoś chce mieć pełnowartościowego Linuksa w kieszenie to musi pójść na ustępstwo.
Ale tutaj TestamenT miał rację, że do takich eksperymentów to najlepiej przenośny HDD :)
avatar
MrZenitek (niezalogowany)
| 23.06.2010 16:08
Artykuł ciekawy ale czy nie prościej zrobić tak jak pisze na tej stronie http://www.pendrivelinux.com/
avatar | 23.06.2010 16:20
Mi na USB nie działa żadna dystrybucja Linuksa oprócz Ubuntu i pochodnych, tylko Ubuntu startuje, reszta wysypuje błędy... Nie ważne jakim sposobem :/
avatar | 23.06.2010 18:27
@MrZenitek (niezalogowany) tu nie chodzi o prostotę ale o wiedzę którą można zdobyć i wykorzystać na przykład do stworzenia czegoś na wzór Hiren's BootCD
Dodaj komentarz