Live manual Debian Live

# Debian Live Manual

# Przykłady

803

# 16. Przykłady

804

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.

805

16.1 Używanie przykładów

806

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.

807

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:

808

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

809

16.2 Samouczek 1: Domyślny obraz

810

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

811

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.

812

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

813

$ mkdir samouczek1 ; cd samouczek1 ; lb config

814

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.

815

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

816

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

817

Assuming all goes well, after a while, the current directory will contain `live-image-amd64.hybrid.iso`. This ISO hybrid image can be booted directly in a virtual machine as described in Testing an ISO image with Qemu and Testing an ISO image with VirtualBox, or else imaged onto optical media or a USB flash device as described in Burning an ISO image to a physical medium and Copying an ISO hybrid image to a USB stick, respectively.

818

16.3 Samouczek 2: Narzędzie przeglądarka

819

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

820

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.

821

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

822

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.

823

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

824

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

825

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

826

16.4 Samouczek 3: Spersonalizowany obraz

827

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.

828

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ą.

829

16.4.1 Pierwsza zmiana

830

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

831

Edtuj `auto/config` tak, aby zawierał:

832

#!/bin/sh
lb config noauto \
--distribution stable \
"${@}"

833

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

834

$ lb config

835

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

836

$ echo "task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

837

First, `--distribution stable` ensures that ⌠stable} is used instead of the default {testing⌡. Second, we have added spice-vdagent for easier testing the image in qemu. And finally, we have added an initial favourite package: hexchat.

838

A teraz, zbuduj obraz:

839

# lb build

840

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`.

841

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:

842

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

843

16.4.2 Druga zmiana

844

In this revision, we're going to clean up from the first build, replace the smplayer package with vlc package, rebuild, test and commit.

845

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.

846

# lb clean

847

Now install the vlc package before the lxde package chooses between smplayer, vlc and mplayer-gui in our local package list in `config/package-lists/my.list.chroot`:

848

$ echo "vlc task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

849

Zbuduj ponownie:

850

# lb build

851

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

852

$ git commit -a -m "Replacing smplayer with vlc."

853

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.

854

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.

855

16.5 Kiosk-klient serwera VNC

856

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

857

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.

858

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

859

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.

860

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

861

$ apt-cache depends live-config live-boot

862

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:

863

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

864

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`:

865

$ 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

866

Zbuduj obraz:

867

# lb build

868

Korzystaj.

869

16.6 A minimal image for a 512MB USB key

870

Use case: Create a default image with some components removed in order to fit on a 512MB USB key with a little space left over to use as you see fit.

871

When optimizing an image to fit a certain media size, you need to understand the tradeoffs you are making between size and functionality. In this example, we trim only so much as to make room for additional material within a 512MB media size, but without doing anything to destroy the integrity of the packages contained within, such as the purging of locale data via the localepurge package, or other such "intrusive" optimizations. Of particular note, we use `--debootstrap-options` to create a minimal system from scratch and `--binary image hdd` to create an image that can be copied to a USB key.

872

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

873

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

874

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

875

Additionally, you'll want to have network access, so another two recommended packages need to be re-added:

876

$ echo "ifupdown isc-dhcp-client" >> config/package-lists/recommends.list.chroot

877

Teraz, zbuduj obraz w typowy sposób:

878

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

879

On the author's system at the time of writing this, the above configuration produced a 298MiB image. This compares favourably with the 380MiB image produced by the default configuration in Tutorial 1, when `--binary-image hdd` is added.

880

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.

881

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 277MiB. 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.

882

16.7 Pulpit GNOME w lokalnym języku oraz instalator

883

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

884

We want to make an iso-hybrid image using our preferred desktop, in this case GNOME, containing all of the same packages that would be installed by the standard Debian installer for GNOME.

885

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:

886

# apt-get install dctrl-tools tasksel-data

887

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

888

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

889

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

890

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

891

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:

892

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
--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

893

Note that we have included the debian-installer-launcher package to launch the installer from the live desktop.