Zabawy z Ubuntu. Część pierwsza: O LiveCD, które nie mieszka na płycie. 13


Cykl „Zabaw z Ubuntu”, rozpoczynający się niniejszym artykułem, ma na celu pokazanie rzeczy oczywistych – tak bardzo oczywistych, że nie zdajemy sobie z nich sprawy. Wszystko opiera się o elastyczność Linuksa – brak jedynej słusznej drogi do celu. Nie przeczytamy tu sensu stricto technicznych pojęć służących samym sobie 😉 nie będziemy dręczyli się dogłębnymi wyjaśnieniami, czasem uprościmy definicje, czasem użyjemy częściowo nietrafnych pojęć, a wszystko po to, by maksymalnie upraszczając teorię skupić się na praktyce.
Praca z Linuksem – praca z Ubuntu może być zabawą! Bawmy się więc!

Jakiś czas temu czytaliśmy i słyszeliśmy dużo o „Ubuntu na USB”. Niestety musimy się rozczarować – nie ma w nich nic magicznego. Ubuntu na USB nie zostało „wynalezione”, a sam proces został bardzo dokładnie udokumentowany znacznie wcześniej. Dlaczego więc poniższy artykuł omawia to po raz kolejny? Nie! Nie dla „wtórności, od której bolą zęby”. W moim zamierzeniu ma on stać się podstawą dla kolejnych części „Zabaw z Ubuntu”, w których będziemy „grzebali” w obrazach initrd, zainstalujemy bootloader (grub) na płycie CD, przenośnej pamięci typu „pendrive”, czy też instalowali „ręcznie” Ubuntu na pustych partycjach (albo i w katalogach), z użyciem płyty LiveCD oraz bez żadnych płyt. Wreszcie przygotujemy własną wersję LiveCD *buntu, bez użycia żadnych dodatkowych programów typu UCK.

LiveCD

Prawie każda szanująca się dystrybucja Linuksa może być uruchomiona z płyty LiveCD. Dla jednych jest to opcja, a inne, tak jak Ubuntu (i wszelkie *buntu), rozpowszechniane są w tej właśnie formie. Nie ma sensu opisywać zalet czy wad płyt LiveCD, skupmy się zatem na tym, czym taka płyta jest. Bez obaw – nie musimy znać jej w 100%. Na początek ograniczmy się do 4 informacji:

  • Płyta zawiera program rozruchowy (bootloader) wraz z plikami konfiguracyjnymi
  • Płyta zawiera serce systemu – jądro, które uruchamiane jest przez bootloader
  • Płyta zawiera obraz initrd (pomijając szczegóły, pewien system plików, można powiedzieć: małą dystrybucję systemu, która po wczytaniu do pamięci odpowiada za zamontowanie właściwego systemu plików i dalszy rozruch systemu)
  • Płyta zawiera obraz systemu plików (skompresowany, aby zajmował mniej miejsca) z wszelkimi programami, bibliotekami, danymi, które dostępne są po uruchomieniu systemu.

Powyższe punkty pokazują dodatkowo w jakiej kolejności nasz komputer „sięga” po konkretne elementy.

Uwaga. Testowanie procedur (zaleceń/czegokolwiek) z tej, jak i kolejnych części „cyklu” może nieść pewne ryzyko dla Twojego systemu/danych – niezbyt dokładnie cytując fragment strony WWW gry Danger from the Deep: komputer może wypić Twoje mleko, czy ukraść Ci kota 😉
Zostałeś ostrzeżony/Zostałaś ostrzeżona!

Uruchomienie komputera w sesji LiveCD bez płyty

Jeśli wszystko jest jasne, zajmijmy się procesem uruchomienia płyty LiveCD z dysku twardego. Zrozumienie tego procesu pozwoli nam „pobawić się Ubuntu” w bardziej zaawansowany sposób. Test przeprowadzimy przy użyciu płyty LiveCD *buntu 7.10. Wcześniejsze wersje posiadały inaczej skonstruowany skrypt casper dostępny w obrazie initrd, który odpowiada za odnalezienie pliku filesystem.squashfs, przez co nie mogą być bezpośrednio wykorzystane!
Ponieważ nie chcemy ingerować w system plików naszego dysku, określmy, co będzie nam potrzebne na początek:

  • Komputer zdolny do uruchomienia się z płyty LiveCD (oczywiście nie musi zawierać napędu CD-ROM/DVD, jeśli zamierzamy skorzystać z obrazu płyty)
  • Płyta lub obraz płyty LiveCD.
  • Bootloader (grub) – zainstalowany i skonfigurowany.

Jeśli jesteś użytkownikiem systemu *buntu prawdopodobnie wszystkie powyższe wymagania są już spełnione, zatem do dzieła:

  • Na prawie dowolną* partycję (do katalogu głównego) na dysku twardym skopiujemy katalogi casper oraz .disk z płyty LiveCD. W rzeczywistości w katalogu /casper musi znajdować się tylko jeden plik: filesystem.squashfs. Pliki vmlinuz oraz initrd.gz mogą znajdować się gdziekolwiek, byle pozostały osiągalne dla programu rozruchowego grub. Pozostałe pliki z owego katalogu w ogóle nie są nam potrzebne!

    * obsługiwane systemy plików to vfat, iso9660, udf, ext2, ext3 oraz w pewnym stopniu ntfs. Ten ostatni wymaga dodatkowego zabiegu – jądro (vmlinuz) oraz system plików ramdysku (initrd.gz) muszą znaleźć się na dowolnym obsługiwanym w pełni przez grub systemie plików.
    W części drugiej cyklu dowiemy się, w jaki sposób do listy powyższych systemów plików „dołączyć” choćby ReiserFS.

  • Zapamiętaj na jaką partycję kopiujesz ów katalog (np. że jest to /dev/sda5)
  • Uruchom ponownie komputer, a gdy pojawi się menu programu rozruchowego grub wciśnij przycisk c aby przejść do linii komend.
  • W linii komend wpisz:

    root (hd0,4) # dla /dev/sda5, (hd0,0) dla /dev/sda1, itd
    kernel=/casper/vmlinuz boot=casper
    initrd=/casper/initrd.gz
    boot

    # jeśli jądro lub initrd zostało skopiowane w inne miejsce, należy odpowiednio zmodyfikować ścieżki. Zamiast powyższej procedury możemy wtedy użyć podobnej do poniższej:

    kernel=(hd0,4)/katalog/vmlinuz boot=casper
    initrd=(hd0,4)/katalog/initrd.gz

  • Jeśli nie popełniliśmy żadnej pomyłki, nasze LiveCD uśmiechnie się do nas uruchomione z dysku twardego.

    Powyższe uruchamia jądro zapisane w katalogu /casper. Dodatkowa informacja boot=casper powoduje, iż „bootowanie” odbędzie się w specjalnym „trybie” casper. W skrócie obraz systemu initrd.gz po załadowaniu „postara się” odszukać obraz systemu plików poszukując na dysku/płycie pliku /casper/*.squashfs, /casper/*.ext2, lub /casper/*.dir

„Odkryliśmy” właśnie, że Ubuntu możemy uruchomić z prawie dowolnego nośnika danych, w tym choćby pamięci USB (pendrive). Pewną niedogodnością dla nas jest oczywiście wymóg, aby plik zawierający skompresowany system plików systemu docelowego znajdował się w katalogu casper, a ten w katalogu głównym partycji. Możemy oczywiście wspomóc się linkami symbolicznymi i umieścić wspomniane dane gdziekolwiek! Nie jest to zbyt niewygodne, a przy tym nieuciążliwe, jednak w kolejnej części pozbędziemy się tej małej niedogodności wprowadzając „udoskonalenia” do domyślnego „ramdysku” initrd.

Instalacja Ubuntu bez użycia instalatora

Potrafimy już uruchomić komputer w sesji LiveCD bez płyty, a czy możemy „zainstalować” Ubuntu z LiveCD bez instalatora? Oczywiście! I choć może brzmieć to przerażająco, to jednak sama procedura jest wyjątkowo prosta i wymaga zaledwie kilku poleceń w konsoli!
Nasz „magiczny” obraz systemu plików zapisany na płycie jest dokładnie tym, czym go nazywamy. Jeśli skopiujemy jego zawartość na dysk, to 95% procesu instalacji *buntu mamy już za sobą! Zróbmy więc to:

  • Tworzymy punkt montowania oraz montujemy skompresowany system plików:

    sudo mkdir /media/squash
    sudo mount -o loop /media/cdrom0/casper/filesystem.squashfs /media/squash # /media/cdrom zastępujemy miejscem gdzie zamontowana jest płyta LiveCD/jej obraz.

  • Kopiujemy zawartość obrazu na partycję docelową (w przykładzie /dev/sda5 zamontowanej do /media/sda5):

    sudo cp -a /media/squash/. /media/sda5

  • Kosmetyka w środowisku chroot:

    sudo chroot /media/sda5 /bin/bash
    adduser nazwa_użytkownika
    gpasswd -a nazwa_użytkownika admin

    wciskamy ctrl+d aby opuścić środowisko chroot.
    Pozostało nam jeszcze poprawić 4 pliki:

    sudo gedit /media/sda5/etc/sudoers
    dopisujemy tam następującą linię:
    %admin ALL=(ALL) ALL

    Prawidłowo należałoby do edycji pliku sudoers użyć polecenia visudo w środowisku chroot, jednak gedit również nadaje się do tego wyśmienicie 😉

    sudo gedit /media/sda5/etc/hostname

    w którym powinien znaleźć się jeden wyraz określający nazwę naszego komputera (hosta)

    sudo gedit /media/sda5/etc/hosts

    którego zawartość uzupełniamy następująco:

    127.0.0.1 nazwa_komputera_ustalona_w_poprzednim_kroku

    natomiast plik /media/sda5/fstab musimy uzupełnić treścią podobną do poniższej:


    # proc
    proc /proc proc defaults 0 0
    # partycja root
    /dev/sda5 / ext3 defaults 0 1
    # partycja wymiany (swap)
    /dev/sda2 none swap sw 0 0
    # cdrom/dvd
    /dev/hda /media/cdrom0 udf,iso9660 user,noauto 0 0

    Jeśli planujemy umieścić /home na innej partycji, powinniśmy ową partycję wcześniej zamontować do przykładowego /media/sda5/home oraz dodać odpowiedni wpis do pliku fstab.
    Tak przygotowany system jest już gotowy do uruchomienia. Pozostało kilka nieścisłości – brak nam języka polskiego. Pozostało wiele innych pakietów językowych, które instalator usunąłby automatycznie. Nasz użytkownik powinien dodatkowo znaleźć się w grupach audio, video, cdrom itd. jednak bardzo łatwo możemy wykonać to z poziomu narzędzi administracyjnych naszego systemu po uruchomieniu, lub też skorzystać ze znanego już nam polecenia gpasswd oraz nieśmiertelnego apt-get!

Czas na wielką próbę 😉 naszego „dzieła”. Aby wygodnie uruchamiać system możemy zasilić plik /boot/grub/menu.lst naszego gruba wpisem podobnym do tego:

title Ubuntu
root (hd0,4)
kernel /boot/vmlinuz-2.6.22-14-generic root=/dev/sda5 ro locale=pl_PL
initrd /boot/initrd.img-2.6.22-14-generic.bak

lub też po załadowaniu się listy systemów przejść do konsoli gruba wciskając c, a następnie wydać ciąg poleceń:

root (hd0,4)
kernel /boot/vmlinuz-2.6.22-14-generic root=/dev/sda5 ro locale=pl_PL
initrd /boot/initrd.img-2.6.22-14-generic.bak

Gratulacje! Udało się! Teraz z uśmiechem na ustach pomyśl o tych terabajtach transferu, które zostały wygenerowane, gdy pobierano wersję alternate, ponieważ komputer nie uruchamiał się poprawnie z płyty LiveCD 😉

Już niedługo część druga: Zabawy z Ubuntu. initrd i grub w służbie użytkownika.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

13 komentarzy do “Zabawy z Ubuntu. Część pierwsza: O LiveCD, które nie mieszka na płycie.

  • RooToor

    . Noooo w koncu Ubuntu śmiga z „poza CD”. Ciekawe, czy „w koncu” dopracuja sie cheatcode. Czy ktos zna powody dla ktorych „nowy” Kanotix uzywa jadra-Ubuntu? Aha, czekam niecierpliwie na kolejne art. Pochwalam trud autora…

  • Niedzwiedz

    Jak coś mi się podoba to lubię się tego poczepiać :]

    Kilka słów wyjaśniających np. co oznaczają polecenia wydawane, jaka jest struktura plików, które mieliśmy edytować (czyli fstab, sudoers itd.) czy (i chyba przede wszystkim)
    [quote post=”702″]Tak przygotowany system jest już gotowy do uruchomienia. Pozostało kilka nieścisłości – brak nam języka polskiego. Pozostało wiele innych pakietów językowych, które instalator usunąłby automatycznie. Nasz użytkownik powinien dodatkowo znaleźć się w grupach audio, video, cdrom itd. jednak bardzo łatwo możemy wykonać to z poziomu narzędzi administracyjnych naszego systemu po uruchomieniu, lub też skorzystać ze znanego już nam polecenia gpasswd oraz nieśmiertelnego apt-get![/quote]
    Tu ewidentnie brakuje rozwinięcia fragmentu. Owszem, mogę sobie sprawdzić w jakich grupach ma być użytkownik itd. Ale jeśli te informacje by się znalazły w tekście to mniej obeznanym w Linuksie byłoby łatwiej, a wyjaśnienie „jeśli zrobisz to i to to się stanie tamto i owamto z tego i takiego powodu” zachęci do własnych prób „A co będzie jeśli /to i to/ zamienię na /to i pstro/?”, a chyba o to chodzi, prawda? 😉

    Bo to mi przypomina podejście windowsowe – zrób tak jak Ci mówimy i nie myśl o tym czemu i jak to działa; wy wiemy lepiej, a Ty się tym nie interesuj.

    Jak bym poszukał to jeszcze pewnie czegoś bym się przyczepił 🙂 Generalnie uważam tekst za bardzo dobry i, co najważniejsze, ciekawy 🙂 Czekam z niecierpliwością na dalszą część, a jeśli Autor szuka „betatestera” swoich tekstów to obiecuję się mocno czepiać 😉 😛 Kontakt: michal (kopeczka) belka (na) gmail (kropeczka) com

  • soltys_83 Autor wpisu

    Niedzwiedz, jak najbardziej masz rację. Z tym, że tych nieścisłości jest więcej i omówienie wszystkiego w jednym tekście spowodowało by, że stał by się on bardzo długi 😉 W kolejnych częściach będziemy jeszcze „ręcznie instalowali” Ubuntu – prawie do obrzydzenia 😉 W pierwszej części miało pojawić się „działające minimum” i skupiłem się właśnie na tym….

    ps. Poprawiłem twój adres e-mail na trochę mniej zrozumiały dla botów 😉

  • Thorin

    Mam takie małe pytanko co do uruchamiania LiveCD z dysku. Otóż kiedy odpalam LiveCD z cd-romu to muszę wybrać aby uruchamiał się w bezpiecznym trybie graficznym (w zwykłym trybie zamiast pulpitu dostaję jakąś kaszankę). I stąd moje pytanie jak wymusić bezpieczny tryb graficzny na opalanej LiveCD z dysku. Jak sprawdziłem na normalnie uruchamianym LiveCD to można zobaczyć tam linie poleceń innych opcji i tam jest coś takiego „orcevesa initrd=/casper/initrd.gz quiet splash –„. Jak się domyślam ta końcówka „quiet splash –” nie ma nic do gadania, więc ważne jest to „orcevesa”. Próbowałem odpalić LiveCD w różnych miejscach dopisując to „orcevesa” ale i tak dostaje kaszane (znaczy korzysta z domyślnych sterów do grafy). Jak ktoś wie jak i gdzie to dopisać to będę wdzięczny 🙂

  • soltys_83 Autor wpisu

    to nie było orcevesa, ale forcevesa. Nie widzę powodów, dlaczego nie miało by to zadziałać dla Ubuntu „odpalanego” z dysku, czy czegokolwiek innego.

  • Niggazzz

    Bardzo fajny poradnik, a jak zainstalowac ubuntu z dysku twardego majac jedynie windowsa, a nie majac wczesniej na dysku GRUB’a?? Bo usunalem partycje linuksowa i grub poszedl sie pasc. Zostal mi jedynie windowsowy bootloader.

  • soltys_83 Autor wpisu

    Jest instalator dla Windows. Nie wiem jak działa, w życiu nie widziałem go na oczy…. Kiedyś był programik dla DOS (działający również w Windows 9x), zdaje się nazywał się loadlin…. jak jest teraz nie mam zielonego pojęcia….

  • Xaweryz

    Chciałbym, zgłosić że montowanie squashfs w ten sposób:
    sudo mount -o loop /media/cdrom0/casper/filesystem.squashfs /media/squash
    nie zawsze działa i zdarzyło mi się że musiałem zamontować tak:
    sudo mount -t squashfs -o loop /media/cdrom0/casper/filesystem.squashfs /media/squash

    Inaczej domagał mi się abym podał mu typ filesystemu czyli -t squashfs

  • mariusz

    Witam wszystkich a w szczegolności autora. Walczę z LiveCD od około 2 miesięcy. Chcę zrobić coś odwrotnego i przygotować płytę LIVECD na ktrej miałbym użytkownikow, pozabezpieczane profile aby nie uruchamiali niepotrzebnych programow. Głownie używam UCK. Niestety wersji 7.10 nie mogę podłączyć do UCK gdyż wywala błąd. W wersji 7.04 jak założę użytkownika podczas startu środowiska graficznego rownież wyskakuje błąd iż system został zmodyfikowany. Profile użytkownika nie działają tak jak w wersji działającej na dysku (używałem KioskTool). Czy ktoś z kolegow może bawił się w przygotowanie takiej płyty. Zadaniem płyty ma być stanowisko biurowe (edytor tekstu, arkusz kalkulacyjny i program do nagrywania płyt) oraz możliwość drukowania.

  • Sławek

    Wiem, że artykuł jest stary. Zastanawia mnie jedna rzecz. Czy bylibyśmy w stanie uruchomić normalny instalator ze środowiska Chroot? Wiadomo, że pliki kopiowane przez instalator nie znajdują się w przestrzni widzianej przez uruchamiane programy(są na zdekompresowanym obrazie sqashfs, a my widzimy system aufs lub unionfs, czyli de facto połączenie tego z ramdyskiem). Jest więc to możliwe?? Ktoś może mieć obraz livecd, a nie mieć czytnika/nagrywarki.

  • kamill

    Próbowałem to zrobić z 9.04. Niestety po tych zabiegach u mnie nie pojawia się w /boot ani plik initrd ani vmlinuz. Są skróty w głównym katalogu, ale plików właściwych brak.