Live manual

test @ sisudoc.org

sisu

[ document manifest ]

<< previous toc next >>

Podręcznik Systemów Live

Dostosowywanie zdarzeń podczas uruchamiania systemu

10. Dostosowywanie zdarzeń podczas uruchamiania systemu

Cała konfiguracja, która odbywa się w czasie pracy systemu jest wykonywana przez live-config. Oto niektóre z najbardziej popularnych opcji live-config, którymi mogą być zainteresowani użytkownicy. Pełną listę wszystkich możliwości można znaleźć w podręczniku man pakietu live-config.

10.1 Personalizacja użytkownika live

Jednym ważnym czynnikiem jest to, że użytkownik jest tworzony przez live-boot w czasie startu systemu, a nie live-build w czasie kompilacji. To wpływa nie tylko, na to gdzie materiały dotyczące użytkownika live są wprowadzone w kompilacji, jak to opisano w Uwzględnianie lokalne Live/chroot, ale również na wszelkie grupyi uprawnienia związane z użytkownikiem live.

Można określić dodatkowe grupy, do których użytkownik live będzie należeć korzystając z jednej z możliwości, aby skonfigurować live-config. Na przykład, aby dodać użytkownika live do grupy fuse, można dodać następujący plik w config/includes.chroot/etc/live/config/user-setup.conf:

LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"

lub użyj live-config.user-default-groups=audio,cdrom,dip,floppy,video,plugdev,netdev,powerdev,scanner,bluetooth,fuse jako parametru startowego.

Możliwe jest również, aby zmienić domyślną nazwę użytkownika "user" i domyślne hasło "live". Jeśli chcesz to zrobić, z jakiegokolwiek powodu, można to łatwo osiągnąć w następujący sposób:

Aby zmienić domyślną nazwę użytkownika należy po prostu określić ją w konfiguracji:

$ lb config --bootappend-live "boot=live components username=live-user"

Jednym z możliwych sposobów zmiany domyślnego hasła jest użycie odpowiedniego haka, jak opisano w Haki podczas uruchamiania systemu. W tym celu można użyć haka "passwd" z /usr/share/doc/live-config/examples/hooks, przedrostkiem jest odpowiednio (np. 2000-passwd), należy go dodać do config/includes.chroot/lib/live/config/

10.2 Ustawianie lokalizacji i języka

Podczas uruchamiania systemu live, język jest definiowany przez dwa etapy:

Domyślne ustawieniem lokalnym podczas budowania systemu live jest locales=en_US.UTF-8. Aby określić ustawienia regionalne, które powinny być wygenerowane, użyj parametru locales w opcji --bootappend-live polecenia lb config, np.

$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8"

Wiele lokalizacji może być określone w postaci listy rozdzielonej przecinkami.

Parametr ten, jak również parametr konfiguracyjny klawiatury jak wskazano poniżej, może być również używany w linii poleceń jądra. Można określić ustawienia regionalne poprzez language_country (w tym przypadku używane jest kodowanie domyślne) lub pełnej nazwy z kodowaniem language_country.encoding. Lista obsługiwanych lokalizacji i kodowań można znaleźć w /usr/share/i18n/SUPPORTED.

Zarówno konfiguracja konsoli i klawiatury X wykonywana jest przez live-config przy pomocy pakietu console-setup. Aby je skonfigurować, ustaw parametry startowe keyboard-layouts, keyboard-variants, keyboard-options i keyboard-model przez opcję --bootappend-live. Prawidłowe wartośći opcje można znaleźć w /usr/share/X11/xkb/rules/base.lst. Aby znaleźć układy i warianty klawiatury dla danego języka, spróbuj wyszukać nazwę w języku angielskim i/lub kraj, gdzie mówi się danym językiem, np.:

$ egrep -i '(^!|german.*switzerland)' /usr/share/X11/xkb/rules/base.lst
! model
! layout
   ch              German (Switzerland)
! variant
   legacy          ch: German (Switzerland, legacy)
   de_nodeadkeys   ch: German (Switzerland, eliminate dead keys)
   de_sundeadkeys  ch: German (Switzerland, Sun dead keys)
   de_mac          ch: German (Switzerland, Macintosh)
! option

Należy pamiętać, że każdy wariant wymienia układ, którego dotyczy w opisie.

Często tylko układ klawiatury musi być skonfigurowany. Na przykład, aby uzyskać listę plików lokalizacyjnych dla niemieckiego i szwajcarskiego niemieckiego układu klawiatury w systemie X użyj:

$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch"

Jednak dla bardzo konkretnych przypadków użycia, można dodać inne parametry. Na przykład, aby ustawić francusko języczny system z układem klawiatury French-Dvorak (zwany Bepo) na klawiaturze typu USB TypeMatrix EZ-Reach 2030, użyj:

$ lb config --bootappend-live \
     "boot=live components locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-variants=bepo keyboard-model=tm2030usb"

Wiele wartości oddzielonych przecinkami może być przypisane do każdego z parametrów keyboard-*, z wyjątkiem keyboard-model, który przyjmuje tylko jedną wartość. Proszę przejrzeć podręcznik man keyboard(5) aby uzyskać więcej szczegółów i przykładów zmiennych XKBMODEL, XKBLAYOUT, XKBVARIANT i XKBOPTIONS. Jeśli podano wiele keyboard-variants (ang warianty klawiatury), będą one dopasowane jeden do drugiego przez wartość keyboard-layouts (patrz opcja setxkbmap(1) -variant). Puste wartości są dozwolone; na przykład aby zdefiniować dwa układy, domyślny US QWERTY oraz drugi US Dvorak, zastosuj:

$ lb config --bootappend-live \
     "boot=live components keyboard-layouts=us,us keyboard-variants=,dvorak"

10.3 Persistence

Odmianą Live CD jest preinstalowany system, który uruchamia się z nośników tylko do odczytu, takich jak cdrom, gdzie operacje zapisu i modyfikacje nie przetrwają restartów sprzętowych hosta, na którym jest uruchomiony.

System live jest uogólnieniem tego paradygmatu, a tym samym wspiera media inne prócz płyt CD; ale dalej jako jego domyślne zachowanie, należy uważać operacje tylko do odczytu a wszekie zmiany, w czasie działania są tracone podczas zamykania systemu.

'Persistence' (ang. trwałość) to wspólna nazwa dla różnych rodzajów rozwiązań dla zapisania niektórych lub wszystkich danych między restartami podczas używania i wprowadzania zmian do systemu. Aby zrozumieć, jak to działa to przydatna była by wiedza, że nawet wtedy, gdy system jest uruchamiany i działa z nośnika tylko do odczytu, to modyfikacje plików i katalogów są zapisywane na zapisywalnych nośnikach, typowo dysk RAM (tmpfs) a dane w pamięci RAM nie przetrwają restartu.

Dane przechowywane na tym ramdysku powinny być przechowywane na zapisywalnym trwałym nośniku takim jak lokalny dysk, lokalny udział sieciowy lub nawet na sesji wielosesyjnego dysku CD-RW/DVD-RW. Wszystkie te nośniki są obsługiwane w systemach live na różne sposoby i wszystkie, oprócz ostatniej wymagają specjalnego parametru startowego określonego w czasie startu systemu: persistence.

Jeśli ustawiony jest parametr startowy persistence (a nopersistence nie jest ustawiony), lokalne nośniki (np. dyski twarde, napędy USB) będą przeszukane w celu znalezienia woluminów trwałości podczas startu systemu. Możliwe jest ograniczenie, jakiego typu woluminy trwałości będą wykorzystane przez określenie pewnych parametrów startowych opisanych w podręczniku man live-boot(7). Wolumin trwałości może być każdym z wymienionych:

Etykietą dla woluminu musi być persistence, ale będzie ignorowane, dopóki nie będzie zawarty w katalogu głównym plik o nazwie persistence.conf, który jest używany by pełni dostosować wolumin persistence, to znaczy, że wskazuje się w nim katalogi, w których chcesz zapisać na woluminie zmiany przy restarcie. Zobacz Plik persistence.conf, aby uzyskać więcej szczegółów.

Oto kilka przykładów, jak przygotować wolumin, aby mógł być on użyty z opcją persistence. Może to być, na przykład, partycja ext4 na dysku twardym lub na nośniku wymiennym stworzona przez, np.:

# mkfs.ext4 -L persistence /dev/sdb1

Zobacz również Wykorzystanie przestrzeni pozostałej na nośniku USB.

Jeśli masz już partycję na urządzeniu, można po prostu zmienić jego etykietę używając następującego polecenia:

# tune2fs -L persistence /dev/sdb1 # for ext2,3,4 filesystems

Oto przykład, jak stworzyć plik obrazu opartego na ext4 do zastosowania z opcją persistance:

$ dd if=/dev/null of=persistence bs=1 count=0 seek=1G # for a 1GB sized image file
$ /sbin/mkfs.ext4 -F persistence

Po utworzeniu pliku obrazu, na przykład, aby sprawić by katalog /usr był prwały, ale tylko zapisywał zmiany wprowadzone w tym katalogu, a nie całą zawartość /usr, można użyć opcji "union". Jeśli plik obrazu znajduje się w katalogu domowym, należy skopiować go do katalogu głównego systemu plików na dysku twardym i zamontować go w /mnt w następujący sposób:

# cp persistence /
# mount -t ext4 /persistence /mnt

Następnie utwórz plik persistence.conf dodając zawartość i odmontowując plik obrazu.

# echo "/usr union" >> /mnt/persistence.conf
# umount /mnt

Teraz uruchom ponownie i wybierz nośnik live, a następnie uruchom dodając parametr startowy "persistence".

10.3.1 Plik persistence.conf

Partycję z etykietą persistence należy skonfigurować za pomocą pliku persistence.conf, aby dowolne katalogi stały się trwałe. Ten plik, znajdujący się w głównym katalogu systemu plików partycji, kontroluje które katalogi są trwałe i w jaki sposób.

To jak niestandardowe wierzchnie zamontowania są skonfigurowane jest opisane w szczegółach w podręczniku man persistence.conf(5), ale ten prosty przykład powinien być wystarczający dla większości zastosowań. Powiedzmy, że chcemy, aby nasz katalog domowy i cache APT było trwałe w pamięci podręcznej systemu plików ext4 na partycji /dev/sdb1:

# mkfs.ext4 -L persistence /dev/sdb1
# mount -t ext4 /dev/sdb1 /mnt
# echo "/home" >> /mnt/persistence.conf
# echo "/var/cache/apt" >> /mnt/persistence.conf
# umount /mnt

Następnie uruchamiamy ponownie komputer. Podczas pierwszego uruchomienia zawartość /home i /var/cache/apt zostanie skopiowana do woluminu trwałości i od tej pory wszystkie zmiany w tych katalogach będą przechowywane na tym woluminie. Należy pamiętać, że wszelkie ścieżki wymienione w pliku persistence.conf nie mogą zawierać spacji lub specjalnych komponentów ścieżki: . i .. . Ponadto, ani /lib, /lib/live (lub którykolwiek z jego podkatalogów) ani / nie może zostać utrwalony za pomocą własnych punktów montowania. Jako obejście tego ograniczenia można dodać / union do pliku persistence.conf w celu osiągnięcia pełnej trwałości.

10.3.2 Używanie więcej niż jednego magazynu persistence

Istnieją różne sposoby korzystania z wielu magazynów trwałości (ang. persistence) dla różnych zastosowań. Na przykład, przy używanie kilku magazynów w tym samym czasie lub wybranie tylko jednego, spośród różnych, do bardzo specyficznych zastosowań.

Kilka różnych niestandardowych woluminów-nakładek (z własnymi plikami persistence.conf) może być używane w tym samym czasie, ale jeżeli kilka woluminów tworzy ten sam katalog trwałym, będzie używany tylko jeden z nich. Jeśli jakieś dwa punty montowania są "zagnieżdżone" (np. jeden jest podkatalogiem drugiego) to katalog parent (ang. rodzic) zostanie zamontowany przed katalogiem child (ang. dziecko) tak że jeden punkt montowania nie będzie ukryty przed innym. Zagnieżdżone niestandardowe woluminy są problematyczne, jeżeli są wymienione w tym samym pliku persistence.conf. Zobacz podręcznik man persistence.conf(5), jak radzić sobie z tym przypadkiem, jeśli naprawdę potrzebujesz (Wskazówka: zazwyczaj nie potrzebujesz).

Jednym z możliwych przypadków użycia: Jeśli chcesz przechowywać dane użytkownika np. /home i dane superużytkownika tj. /root na różnych partycjach, utwórz dwie partycje z etykietą persistence i dodaj plik persistence.conf} na każdą z nich, tak #{# echo "/home" > persistence.conf na pierwszej partycji, przez co będzą zapisywane pliki użytkownika i # echo "/root" > persistence.conf na drugiej partycji, która będzie przechowywać pliki superużytkownika. Wreszcie, należy użyć parametru startowego persistence.

Jeśli użytkownik będzie potrzebował wiele magazynów trwałości tego samego typu dla różnych miejsc lub dla celów testowych, takich jak magazyny private i ​​#{work}# parametr startowy persistence-label użyty w połączeniu z parametrem persistence pozwoli na wiele unikatowych magazynów trwałości. Przykładem może być, jeśli użytkownik chciałby użyć partycji trwałości oznaczonej private dla prywatnych danych, takich jak zakładki w przeglądarce lub innych typów danych, to mógłby użyć parametrów startowych:#{persistence}# persistence-label=private. A do przechowywania danych związanych z pracą, takich jak dokumenty, projekty badawcze lub inne rodzaje, mógłby skorzystać z parametrów startowych: persistence persistence-label=work.

Ważne jest, aby pamiętać, że każda z tych partycji, private i ​​#{work}#, także potrzebuje pliku persistence.conf. Podręcznik man pakietu live-boot zawiera więcej informacji o tym, jak korzystać z tych etykiet z zapisanymi nazwami.

10.4 Używanie opcji persistence z szyfrowaniem

Korzystanie z funkcji trwałości (ang. persistence) oznacza, że ​​niektóre poufne dane mogą zostać narażone na ryzyko. Zwłaszcza jeśli trwałe dane są przechowywane na urządzeniu przenośnym, takim jak pamięci USB lub zewnętrzne dyski twarde. To jest miejsce, gdzie przydatne staje się szyfrowanie. Nawet jeśli cała procedura może wydawać się skomplikowana, ze względu na liczbę kroków, które należy podjąć, to jest bardzo łatwo obsługiwać szyfrowane partycje z live-boot. Aby móc korzystać z luks, który jest obsługiwanym typem szyfrowania, musisz zainstalować cryptsetup zarówno na maszynie tworzenia zaszyfrowanych partycji, a także w systemie live, który będzie używał szyfrowanej trwałej partycji.

Aby zainstalować cryptsetup na twoim komputerze:

# apt-get install cryptsetup

Aby zainstalować cryptsetup na twoim systemie live dodaj go do listy pakietów:

$ lb config
$ echo "cryptsetup" > config/package-lists/encryption.list.chroot

Gdy Twoj system live posiada cryptsetup, to w zasadzie wystarczy, już tylko utworzyć nową partycję, zaszyfrować ją i uruchomić z parametrami persistence i persistence-encryption=luks. Mogliśmy już przewidzieć ten krok i dodać parametry startowe w czasie kompilacji przestrzegając następującej procedury:

$ lb config --bootappend-live "boot=live components persistence persistence-encryption=luks"

przejdzmy do szczegółów dla tych wszystkich, którzy nie są zaznajomieni z szyfrowaniem. W poniższym przykładzie mamy zamiar użyć partycji na dysku USB, która odpowiada /dev/sdc2. Należy zaznaczyć, że należy ustalić, która partycja jest jeden tą, którą masz zamiar używać w tym konkretnym przypadku.

Pierwszym krokiem jest podłączenie dysku USB i określenie, którym jest urządzeniem. Zalecaną metodą tworzenia listy urządzeń w live-manual jest ls -l /dev/disk/by-id. Następnie utworzymy nową partycję, a następnie zaszyfrujemy ją hasłem w następujący sposób:

# cryptsetup --verify-passphrase luksFormat /dev/sdc2

Następnie otwieramy partycję LUKS w wirtualnym elemencie odwzorowującym urządzenia /dev/mapper. Można tu użyć dowolnej nazww. Używamy live jako przykład:

# cryptsetup luksOpen /dev/sdc2 live

Następnym krokiem jest wypełnienie urządzenia zerami przed utworzeniem systemu plików:

# dd if=/dev/zero of=/dev/mapper/live

Teraz jesteśmy gotowi do stworzenia systemu plików. Warto zauważyć, że dodajemy etykietę persistence tak, aby urządzenie zotało zamontowane w jako persistence store (magazyn persistence) w czasie startu systemu.

# mkfs.ext4 -L persistence /dev/mapper/live

Aby kontynuować naszą konfigurację, musimy zamontować urządzenie, na przykład w /mnt.

# mount /dev/mapper/live /mnt

I stwórz plik persistence.conf w katalogu głównym partycji. To jest, jak wyjaśniono wyżej, absolutnie konieczne. Zobacz Plik persistence.conf.

# echo "/ union" > /mnt/persistence.conf

Potem odmontuj punkt montowania:

# umount /mnt

I opcjonalnie, choć może to być dobry sposób na zabezpieczenie danych, które właśnie dodaliśmy do partycji, możemy zamknąć urządzenie:

# cryptsetup luksClose live

Podsumujmy proces. Do tej pory stworzyliśmy system live z możliwością szyfrowania, który można skopiować na nośnik usb, jak wyjaśniono w kopiowaniu hybrydowego obrazu ISO na nośnik pamięci USB. Stworzyliśmy również zaszyfrowaną partycję, która może znajdować się na tym samym nośniku usb, aby można było go nosić ze sobą wszędzie i mamy skonfigurowaną zaszyfrowaną partycję, stosowaną jako magazyn persistence. Więc teraz, musimy tylko uruchomić system live. W czasie startu systemu, na live-boot poprosi nas o wpisanie hasła i zamontuje zaszyfrowaną partycję używaną przez opcję persistence.


[ document manifest ]

<< previous toc next >>