Live manual

Live Systems


<< previous toc next >>

Podręcznik Systemów Live

O tym podręczniku

O tym podręczniku

1. O tym podręczniku

1.1 Dla niecierpliwych
1.2 Definicje
1.3 Autorzy
1.4 Wnoszenie wkładu do tego dokumentu
1.4.1 Nanoszenie zmian
1.4.2 Tłumaczenie

O Live Systems Project

2. O Live Systems Project

2.1 Motywacja
2.1.1 Co jest nie tak w moim dotychczasowym systemie live?
2.1.2 Czemu tworzyć nasz własny system live?
2.2 Filozofia
2.2.1 Tylko niezmienione pakiety z działu Debian "main"
2.2.2 Bez konfiguracji pakietów systemu live
2.3 Kontakt

Użytkownik

Instalacja

3. Instalacja

3.1 Wymagania
3.2 Instalowanie live-build
3.2.1 Z repozytorium Debiana
3.2.2 Ze źródła
3.2.3 Ze zrzutów deweloperskich
3.3 Instalowanie live-boot i live-config
3.3.1 Z repozytorium Debiana
3.3.2 Ze źródła
3.3.3 Ze zrzutów deweloperskich

Podstawy

4. Podstawy

4.1 Co to jest system live?
4.2 Pobieranie prekompilowanych obrazów
4.3 Using the web live image builder
4.3.1 Używanie i przestrogi dotyczące Web buildera
4.4 Pierwsze kroki: budowanie obrazu ISO-hybrydy
4.5 Korzystanie z hybrydowego obrazu ISO live
4.5.1 Wypalanie obrazu ISO na fizycznym nośniku
4.5.2 Kopiowanie obrazu ISO-hybrydy na nośnik USB
4.5.3 Wykorzystanie przestrzeni pozostałej na nośniku USB
4.5.4 Uruchamianie nośnika live
4.6 Używanie wirtualnej maszyny do testowania
4.6.1 Testowanie obrazu ISO z użyciem QEMU
4.6.2 Testowanie obrazu ISO z użyciem VirtualBox'a
4.7 Budowanie i używanie obrazu HDD
4.8 Budowanie obrazu netboot
4.8.1 Serwer DHCP
4.8.2 Serwer TFTP
4.8.3 Serwer NFS
4.8.4 Netboot testing HowTo
4.8.5 Qemu
4.9 Webbooting
4.9.1 Getting the webboot files
4.9.2 Uruchamianie obrazów webboot

Przegląd narzędzi

5. Przegląd narzędzi

5.1 Pakiet live-build
5.1.1 Polecenie lb config
5.2 Wcięcia
5.2.1 Polecenie lb build
5.2.2 Polecenie lb clean
5.3 Pakiet live-boot
5.4 Pakiet live-config

Zarządzanie konfiguracją

6. Zarządzanie konfiguracją

6.1 Radzenie sobie ze zmianami konfiguracji
6.1.1 Czemu używać automatycznych skryptów? Co one robią?
6.1.2 Użyj przykładowych automatycznych skryptów
6.2 Klonowanie konfiguracji opublikowanej przez Git

Dostosowywanie zawartości

7. Opis dostosowywania

7.1 Konfiguracja podczas kompilacji vs. podczas uruchamiania systemu
7.2 Etapy kompilacji
7.3 Uzupełnienie lb config plikami
7.4 Zadania dostosowywania

Dostosowywanie instalacji pakietów

8. Dostosowywanie instalacji pakietów

8.1 Źródła pakietu
8.1.1 Dystrybucja, działy archiwum i tryb
8.1.2 Serwery lustrzane dystrybucji
8.1.3 Serwery lustrzane dystrybucji używane podczas budowania obrazu
8.1.4 Serwery lustrzane dystrybucji użyte podczas uruchomienia
8.1.5 Dodatkowe repozytoria
8.2 Wybieranie pakietów do instalacji
8.2.1 Lista pakietów
8.2.2 Używanie metapakietów
8.2.3 Lokalna lista pakietów
8.2.4 Lokalna lista pakietów binarnych
8.2.5 Wygenerowana lista pakietów
8.2.6 Używanie instrukcji warunkowych w listach pakietów.
8.2.7 Usuwanie pakietu podczas instalacji
8.2.8 Pulpit i zadania językowe
8.2.9 Rodzaj jądra i wersja
8.2.10 Niestandardowe jądra
8.3 Instalowanie zmodyfikowanych pakietów lub pakietów innych firm
8.3.1 Używanie packages.chrootdo instalacji niestandardowych pakietów
8.3.2 Używanie repozytoriium APT aby zainstalować niestandarkowe pakiety
8.3.3 Niestandardowe pakiety i APT
8.4 Konfigurowanie APT podczas kompilacji
8.4.1 Wybieranie apt lub aptitude
8.4.2 Używanie serwera proxy z APT
8.4.3 Podkręcanie APT celu zaoszczędzenia miejsca
8.4.4 Przekazywanie opcji do apt lub aptitude
8.4.5 Pinning APT

Dostosowywanie zawartości

9. Dostosowywanie zawartości

9.1 Uwzględnianie
9.1.1 Lokalnie uwzględniane w chroot/live
9.1.2 Lokalnie uwzględniane dane binarne
9.2 Haki
9.2.1 Lokalne haki chroot/live
9.2.2 Haki podczas uruchamiania
9.2.3 Lokalne haki binarne
9.3 Wstępne ustawienie pytań Debconfa (Preseeding)

Dostosowywanie zdarzeń podczas uruchamiania systemu

10. Dostosowywanie zdarzeń podczas uruchamiania systemu

10.1 Personalizacja użytkownika live
10.2 Ustawianie lokalizacji i języka
10.3 Persistence
10.3.1 Plik persistence.conf
10.3.2 Używanie więcej niż jednego magazynu persistence
10.3.3 Using persistence with encryption

Dostosowywanie obrazu binarnego

11. Dostosowywanie obrazu binarnego

11.1 Programy ładujące (ang. Bootloadery)
11.2 Metadane ISO

Dostosowywanie Instalatora Debiana

12. Dostosowywanie Instalatora Debiana

12.1 Typy Instalatora Debiana
12.2 Dostosowywanie Instalatora Debiana przez preseeding
12.3 Dostosowywanie zawartości Instalatora Debiana

Projekt

Wnoszenie wkładu do tego projektu

13. Wnoszenie wkładu do tego projektu

13.1 Wprowadzanie zmian

Zgłaszanie błędów

14. Zgłaszanie błędów

14.1 Znane problemy
14.2 Przebuduj od zera
14.3 Używaj aktualnych pakietów
14.4 Zbierz potrzebne informacje
14.5 Wyizoluj prawdopodobną wadę, jeśli to możliwe
14.6 Wybierz odpowiedni pakiet dla którego zgłaszasz błąd
14.6.1 W czasie budowania podczas ładowania początkowego (bootstrapping)
14.6.2 W czasie budowania podczas instalacji pakietów
14.6.3 W czasie uruchamiania
14.6.4 W czasie gdy system jest już uruchomiony
14.7 Spróbuj wykonać parę kroków
14.8 Gdzie zgłaszać błędy

Styl Kodowania

15. Styl Kodowania

15.1 Kompatybilność
15.2 Wcięcia
15.3 Zawijanie
15.4 Zmienne
15.5 Różne

Procedury

16. Procedury

16.1 Główne wydanie
16.2 Wydanie Docelowe
16.2.1 Ostatnie Wydanie Docelowe Debiana
16.2.2 Szablon obwieszczenia dla wydania docelowego

Repozytorium Git

17. Repozytorium Git

17.1 Obsługa wielu repozytoriów

Przykłady

Przykłady

18. Przykłady

18.1 Używanie przykładów
18.2 Samouczek 1: Domyślny obraz
18.3 Samouczek 2: Narzędzie przeglądarka
18.4 Samouczek 3: Spersonalizowany obraz
18.4.1 Pierwsza zmiana
18.4.2 Druga zmiana
18.5 Kiosk-klient serwera VNC
18.6 Bazowy obraz dla nośnika USB z 128MB pamięci.
18.7 Pulpit GNOME w lokalnym języku oraz instalator

Dodatek

Przewodnik redakcyjny

19. Przewodnik redakcyjny

19.1 Wytyczne dla autorów
19.1.1 Funkcje językowe
19.1.2 Procedury
19.2 Wytyczne dla tłumaczy
19.2.1 Wskazówki tłumaczenia

Metadata

SiSU Metadata, document information

Podręcznik Systemów Live

Przykłady

18. Przykłady

W tym rozdziale omówiono przykłady budowania dla konkretnych przypadków użycia z systemów live. Jeśli jesteś nowy w budowaniu własnych obrazów systemów live, zaleca się najpierw zapoznanie z trzema kolejnymi samouczkami, a każdy z nich nauczy Cię nowych technik, które pomogą Ci używać i rozumieć pozostałe przykłady.

18.1 Używanie przykładów

Aby skorzystać z tych przykładów potrzebujesz systemu, który spełnia wymagania wymienione w wymaganiach i ma zainstalowane live-build, jak opisano w instalacji live-build.

Należy zauważyć, że, ze względu na zwięzłość, w tych przykładach nie określono lokalnego serwera używanego do kompilacji. Można znacznie przyspieszyć pobrań przypadku korzystania z lokalnego serwera lustrzanego. Można określić te opcje podczas korzystania z lb config, jak opisano w Serwery lustrzane dystrybucji używane w czasie kompilacji lub dla większej wygody, ustawić domyślną opcję dla systemu kompilacji w /etc/live/build.conf. Wystarczy utworzyć ten plik, a w nim, ustawić odpowiednią zmienną LB_MIRROR_* dla preferowanego serwera lustrzanego. Wszystkie inne serwery lustrzane stosowane podczas kompilacji, będą domyślnie ustawione od tych wartości. Na przykład:

LB_MIRROR_BOOTSTRAP="http://mirror/debian/"
LB_MIRROR_CHROOT_SECURITY="http://mirror/debian-security/"
LB_MIRROR_CHROOT_BACKPORTS="http://mirror/debian-backports/"

18.2 Samouczek 1: Domyślny obraz

Przykład użycia: Stwórz pierwszy prosty obraz aby nauczyć się podstaw live-build.

W tym samouczku, będziemy budować domyślny obraz live ISO-hybrid zawierający tylko pakiety podstawowe (bez Xorg'a) i kilka pakietów systemu live, jako pierwsze ćwiczenie w użyciu live-build.

Nie można tego zrobić łatwiej niż tak:

$ mkdir samouczek1 ; cd samouczek1 ; lb config

Zbadaj zawartość katalogu config/, jeśli chcesz. Zobaczysz tam konfiguracje przechowywane w szkieletowych katalogach, gotowe do dostosowywania lub, w tym przypadku, użyte natychmiast, aby zbudować domyślny obraz.

A teraz jako super-użytkownik, zbuduj obraz zapisując przy tym log podczas budowania używając tee.

# lb build 2>&1 | tee build.log

Zakładając, że wszystko poszło dobrze, po jakimś czasie, bieżący katalog będzie zawierał live-image-i386.hybrid.iso. Ten hybrydowy obraz ISO można uruchomić bezpośrednio na maszynie wirtualnej, jak opisano w Testowanie obrazu ISO z Qemu i Testowanie obrazu ISO z VirtualBox, lub jeszcze odpowiednio nagrany obraz na nośnikach optycznych lub urządzenia flash USB, w sposób opisany w Nagrywanie obrazu ISO na nośniku fizycznym i Kopiowanie hybrydowego obrazu ISO na nośnik USB.

18.3 Samouczek 2: Narzędzie przeglądarka

Przykład użycia: Stwórz obraz z przeglądarką internetową, ucząc się jak wprowadzać modyfikacje.

W tym samouczku, stworzymy obraz odpowiedni do wykorzystania jako narzędzie przeglądarki internetowej, służący jako wstęp do dostosowywania obrazów systemu live.

$ mkdir tutorial2
$ cd tutorial2
$ lb config
$ echo "task-lxde-desktop iceweasel" >> config/package-lists/my.list.chroot

Nasz wybór LXDE na tym przykładzie odzwierciedla nasze pragnienie, aby zapewnić minimalne środowisko pulpitu, ponieważ celem obrazu jest jednorazowy użytek, który mamy na myśli, czyli przeglądarka internetowa. Możemy pójść dalej i zapewnić domyślną konfigurację dla przeglądarki w config/includes.chroot/etc/iceweasel/profile/, lub dodatkowe pakiety wsparcia dla wyświetlania różnego rodzaju treści internetowych, ale pozostawiamy to jako ćwiczenie dla czytelnika.

Zbuduj ponownie obraz jako super-użytkownik, zachowując log jak to opisano w Samouczku 1:

# lb build 2>&1 | tee build.log

Jeszcze raz, zweryfikuj czy obraz jest OK i przetestuj go jak to opisano w Samouczku 1.

18.4 Samouczek 3: Spersonalizowany obraz

Przykład użycia: Stwórz projekt spersonalizowanego obrazu zawierającego twoje ulubione oprogramowanie tak abyś mógł go zabrać ze sobą gdziekolwiek pójdziesz i zapisujący sukcesywnie zmiany, kiedy tego potrzebujesz oraz zmiany w konfiguracji.

Ponieważ będziemy zmieniać nasz indywidualny obraz wprowadzając wiele zmian, chcemy, śledzić te zmiany, próbując rzeczy eksperymentalnych i ewentualnie przywracając je, jeśli coś nie wyjdzie, będziemy trzymać naszą konfigurację w popularnym systemie kontroli wersji git. Będziemy również wykorzystywać najlepsze praktyki autokonfiguracji poprzez skrypty auto jak opisano w Zarządzanie konfiguracją.

18.4.1 Pierwsza zmiana

$ mkdir -p samouczek3/auto
$ cp /usr/share/doc/live-build/examples/auto/* samouczek3/auto/
$ cd samouczek3

Edtuj auto/config tak, aby zawierał:

#!/bin/sh

lb config noauto \
     --architectures i386 \
     --linux-flavours 686-pae \
     "${@}"

Wykonaj lb config, aby wygenerować drzewo konfiguracyjne, używając właśnie utworzonego skryptu w auto/config:

$ lb config

Teraz uzupełnij swoją lokalną listę pakietów:

$ echo "task-lxde-desktop iceweasel xchat" >> config/package-lists/my.list.chroot

Po pierwsze, --architectures i386 zapewnia, że ​​w naszym systemie kompilacji amd64, możemy zbudować 32-bitową wersję odpowiednią do stosowania na większości maszyn. Po drugie, możemy użyć --linux-flavours 686-pae bo nie przewidujemy używania tego obrazu na dużo starszych systemach. Po trzecie, wybraliśmy metapakiet zadania lxde, który daje nam minimalny pulpit. I w końcu, dodaliśmy dwa wstępne ulubione pakiety: iceweasel i xchat.

A teraz, zbuduj obraz:

# lb build

Należy zauważyć, że w przeciwieństwie do dwóch pierwszych samouczków, nie musimy już wpisywać 2>&1 | tee build.log bo jest to obecnie zawarte w auto/build.

Po tym jak przetestowaliśmy obraz (jak to jest w Samouczku 1) i jesteśmy zadowoleni, że działa, to jest to czas, aby zainicjować nasze repozytorium git, dodając tylko automatyczne skrypty przed chwilą stworzone, a następnie dokonać pierwszych zmian:

$ git init
$ cp /usr/share/doc/live-build/examples/gitignore .gitignore
$ git add .
$ git commit -m "Initial import."

18.4.2 Druga zmiana

W tej zmianie, będziemy sprzątać nasz pierwszy zbudowany obrazu, dodawać pakiet vlc do naszej konfiguracji, budować ponownie, testować i potwierdzać zmiany.

Polecenie lb clean oczyści wszystkie wygenerowane pliki z poprzedniej kompilacji z wyjątkiem pamięci podręcznej (cache), co oszczędza konieczności ponownego pobierania pakietów. To gwarantuje, że kolejne polecenie lb build ponownie uruchomić wszystkie etapy regeneracji pliki z naszej nowej konfiguracji.

# lb clean

Teraz dołączpakiet vlc do naszej lokalnej listy pakietów w config/package-list/my.list.chroot:

$ echo vlc >> config/package-lists/my.list.chroot

Zbuduj ponownie:

# lb build

Przetestuj i jeżeli jesteś usatysfakcjonowany wprowadź następną zmianę:

$ git commit -a -m "Adding vlc media player."

Oczywiście, możliwe są bardziej skomplikowane zmiany w konfiguracji, prawdopodobnie dodające pliki w podkatalogach config/. Kiedy wprowadzasz nowe zmiany , tylko uważaj, aby nie edytować ręcznie lub zmieniać plików najwyższego poziomu w config zawierających zmienną LB_*, ponieważ są to także efekty budowania i są zawsze sprzątane przez lb clean i tworzone ponownie przez lb config przez odpowiednie automatyczne skrypty.

Doszliśmy do końca naszej serii samouczka. Chociaż możliwe jest o wiele więcej rodzajów personalizacji, nawet tylko za pomocą kilku funkcji pokazanych w tych prostych przykładach, może być stworzona niemal nieskończona różnorodność obrazów. Pozostałe przykłady w tym rozdziale obejmuje kilka innych przypadków użycia zaczerpnięte z zebranych doświadczeń użytkowników systemów live.

18.5 Kiosk-klient serwera VNC

Przykład użycia: Stwórz obraz za pomocą live-build, który podczas uruchamiania, łączy się automatycznie z serwerem VNC.

Stwórz katalog kompilacji i stwórz wewnątrz szkielet folderów konfiguracji, wyłączając zalecane, aby utworzyć minimalny system. A następnie utwórz dwie początkowe listy pakietów: pierwszą wygenerowaną ze skryptu dostarczonego przez live-build o nazwie Pakiety (patrz Wygenerowane listy pakietów), a drugą uwzględniającą pakiety xorg, gdm3, metacity i xvnc4viewer.

$ mkdir vnc-kiosk-client
$ cd vnc-kiosk-client
$ lb config -a i386 -k 686-pae --apt-recommends false
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
$ echo "xorg gdm3 metacity xvnc4viewer" > config/package-lists/my.list.chroot

Jak wyjaśniono w Podkręcanie APT, w celu zaoszczędzenia miejsca może trzeba ponownie dodać niektóre polecane pakiety do prawidłowej pracy obrazu.

Najprostszym sposobem na wypisane listy rekomendowanych pakietów jest u życie apt-cache. Na przykład:

$ apt-cache depends live-config live-boot

W tym przykładzie okazało się, że musimy ponownie objąć kilka pakietów zalecanych przez live-config i live-boot: user-setup do funkcji autologowania i sudo jako istotnego przy zamykaniu systemu programu. Poza tym, może być przydatne, również dodanie live-tools, aby móc skopiować obraz systemu do pamięci RAM i eject, aby ewentualnie wysunąć nośnik live. Tak więc:

$ echo "live-tools user-setup sudo eject" > config/package-lists/recommends.list.chroot

Po tym, stwórz katalog /etc/skel w config/includes.chroot i ​​umieść tam własny .xsession dla domyślnego użytkownika, który będzie uruchamiał metacity i xvncviewer, podłączając się do portu 5901 na serwerze w 192.168.1.2:

$ mkdir -p config/includes.chroot/etc/skel
$ cat > config/includes.chroot/etc/skel/.xsession << EOF
#!/bin/sh

/usr/bin/metacity &
/usr/bin/xvncviewer 192.168.1.2:1

exit
EOF

Zbuduj obraz:

# lb build

Korzystaj.

18.6 Bazowy obraz dla nośnika USB z 128MB pamięci.

Przykład użycia: Stwórz domyślny obraz z usuniętymi niektórymi komponentami tak, aby zmieścił się on na nośniku USB z 128MB pamięci z pozostawieniem niewielkiej przestrzeni do wykorzystania według potrzeb.

Przy optymalizacji obrazu, aby dopasować go do określonego rozmiaru nośnika, musisz dokonać pewnych kompromisów między rozmiarem a funkcjonalnością. W tym przykładzie, przytniemy tylko tyle, aby zrobić miejsce dla dodatkowego materiału medialnego w rozmiarze 128MB, ale robienia czegokolwiek, co mogłoby zniszczyć integralność zawartych pakietów, np. czyszczenie danych ustawień regionalnych poprzez pakiet localepurge, lub inne tego typu inwazyjne optymalizacje. Szczególnie godne uwagi, jest użycie --debootstrap-options by stworzyć minimalny system od podstaw.

$ lb config --apt-indices false --apt-recommends false --debootstrap-options "--variant=minbase" --firmware-chroot false --memtest none

Aby uczynić by obraz pracował prawidłowo, musimy ponownie dodać przynajmniej dwa pakiety, które zostały pominięte przez opcję --apt-recommends false. Zobacz Podkręcanie APT w celu zaoszczędzenia miejsca

$ echo "user-setup sudo" > config/package-lists/recommends.list.chroot

Teraz, zbuduj obraz w typowy sposób:

# lb build 2>&1 | tee build.log

On the author's system at the time of writing this, the above configuration produced a 110MB image. This compares favourably with the 192MB image produced by the default configuration in Tutorial 1.

Leaving off APT's indices with --apt-indices false saves a fair amount of space, the tradeoff being that you need to do an apt-get update before using apt in the live system. Dropping recommended packages with --apt-recommends false saves some additional space, at the expense of omitting some packages you might otherwise expect to be there. --debootstrap-options "--variant=minbase" bootstraps a minimal system from the start. Not automatically including firmware packages with --firmware-chroot false saves some space too. And finally, --memtest none prevents the installation of a memory tester.

Note: A minimal system can also be achieved using hooks, like for example the stripped.hook.chroot hook found in /usr/share/doc/live-build/examples/hooks. It may shave off additional small amounts of space and produce an image of 91MB. However, it does so by removal of documentation and other files from packages installed on the system. This violates the integrity of those packages and that, as the comment header warns, may have unforeseen consequences. That is why using a minimal debootstrap is the recommended way of achieving this goal.

18.7 Pulpit GNOME w lokalnym języku oraz instalator

Przykład użycia: Stwórz obraz z pulpitem GNOME i lokalizacją dla Szwajcarii wraz z instalatorem.

Chcemy stworzyć obraz ISO-hybrydy dla architektury i386 z naszym preferowanym pulpitem, w tym przypadku GNOME, zawierającą wszystkie pakiety, które byłyby zainstalowane przez standardowy instalator Debiana dla GNOME.

Naszym początkowym problem jest odkrycie nazw odpowiednich zadań językowych. Obecnie, live-build nie może nam w tym pomóc. Chociaż możemy mieć szczęście i znaleźć to metodą prób i błędów, to jest narzędzie, grep-dctrl, które może być użyte do ustalenia to z opisów zadań w tasksel-data tak więc, aby przygotować się upewnij się, że masz obie te rzeczy:

# apt-get install dctrl-tools tasksel-data

Teraz możemy rozpocząć wyszukiwanie odpowiedniego zadania. najpierw:

$ grep-dctrl -FTest-lang de /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: german

Dzięki temu poleceniu dowiadujemy się, że zadanie nazywa się po prostu niemiecki (ang. german). Teraz, aby znaleźć podobne zadania:

$ grep-dctrl -FEnhances german /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: german-desktop
Task: german-kde-desktop

W czasie startu systemu będziemy generować lokalizację de_CH.UTF-8 i wybierać układ klawiatury ch. Teraz poskładajmy kawałki razem. Przypominamy sobie Korzystanie z metapakietów że metapakiety są poprzedzone przedrostkiem task-, po prostu określimy te parametry rozruchowe dotyczące języka, a następnie dodamy standardowe pakiety priorytetowe i wszystkie wykryte metapakiety zadań do naszej listy pakietów w następujący sposób:

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
     -a i386 \
     --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch" \
     --debian-installer live
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
$ echo task-gnome-desktop task-german task-german-desktop >> config/package-lists/desktop.list.chroot
$ echo debian-installer-launcher >> config/package-lists/installer.list.chroot

Note that we have included the debian-installer-launcher package to launch the installer from the live desktop. The 586 kernel flavour, which is currently necessary for the launcher to work properly, will be included by default.



<< previous toc next >>