1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
|
:B~ Dostosowywanie zdarzeń podczas uruchamiania systemu
1~customizing-run-time-behaviours 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.
2~ 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}#live-chroot-local-includes, 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}#:
code{
LIVE_USER_DEFAULT_GROUPS="audio cdrom dip floppy video plugdev netdev powerdev scanner bluetooth fuse"
}code
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:
code{
$ lb config --bootappend-live "boot=live components username=live-user"
}code
Jednym z możliwych sposobów zmiany domyślnego hasła jest użycie
odpowiedniego haka, jak opisano w {Haki podczas uruchamiania
systemu}#boot-time-hooks. 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/}#
2~customizing-locale-and-language Ustawianie lokalizacji i języka
Podczas uruchamiania systemu live, język jest definiowany przez dwa etapy:
_* generowanie plików lokalizacji
_* ustawienie konfiguracji klawiatury
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.
code{
$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8"
}code
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.:
code{
$ 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
}code
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:
code{
$ lb config --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch"
}code
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:
code{
$ lb config --bootappend-live \
"boot=live components locales=fr_FR.UTF-8 keyboard-layouts=fr keyboard-variants=bepo keyboard-model=tm2030usb"
}code
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:
code{
$ lb config --bootappend-live \
"boot=live components keyboard-layouts=us,us keyboard-variants=,dvorak"
}code
2~persistence 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:
_* partycja, identyfikowana po nazwie GPT.
_* system plików, identyfikowany po etykiecie.
_* plik obrazu zlokalizowany na każdym obsługiwanym systemie plików (nawet
na partycji NTFS innego systemu), identyfikowany po nazwie pliku.
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}#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.:
code{
# mkfs.ext4 -L persistence /dev/sdb1
}code
Zobacz również {Wykorzystanie przestrzeni pozostałej na nośniku
USB}#using-usb-extra-space.
Jeśli masz już partycję na urządzeniu, można po prostu zmienić jego etykietę
używając następującego polecenia:
code{
# tune2fs -L persistence /dev/sdb1 # for ext2,3,4 filesystems
}code
Oto przykład, jak stworzyć plik obrazu opartego na ext4 do zastosowania z
opcją persistance:
code{
$ dd if=/dev/null of=persistence bs=1 count=0 seek=1G # for a 1GB sized image file
$ /sbin/mkfs.ext4 -F persistence
}code
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:
code{
# cp persistence /
# mount -t ext4 /persistence /mnt
}code
Następnie utwórz plik #{persistence.conf}# dodając zawartość i odmontowując
plik obrazu.
code{
# echo "/usr union" >> /mnt/persistence.conf
# umount /mnt
}code
Teraz uruchom ponownie i wybierz nośnik live, a następnie uruchom dodając
parametr startowy "persistence".
3~persistence-conf 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:
code{
# 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
}code
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.
3~ 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.
3~ Using persistence with encryption
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:
code{
# apt-get install cryptsetup
}code
Aby zainstalować /{cryptsetup}/ na twoim systemie live dodaj go do listy
pakietów:
code{
$ lb config
$ echo "cryptsetup" > config/package-lists/encryption.list.chroot
}code
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:
code{
$ lb config --bootappend-live "boot=live components persistence persistence-encryption=luks"
}code
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:
code{
# cryptsetup --verify-passphrase luksFormat /dev/sdc2
}code
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:
code{
# cryptsetup luksOpen /dev/sdc2 live
}code
Następnym krokiem jest wypełnienie urządzenia zerami przed utworzeniem
systemu plików:
code{
# dd if=/dev/zero of=/dev/mapper/live
}code
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.
code{
# mkfs.ext4 -L persistence /dev/mapper/live
}code
Aby kontynuować naszą konfigurację, musimy zamontować urządzenie, na
przykład w #{/mnt}#.
code{
# mount /dev/mapper/live /mnt
}code
I stwórz plik #{persistence.conf}# w katalogu głównym partycji. To jest, jak
wyjaśniono wyżej, absolutnie konieczne. Zobacz {Plik
persistence.conf}#persistence-conf.
code{
# echo "/ union" > /mnt/persistence.conf
}code
Potem odmontuj punkt montowania:
code{
# umount /mnt
}code
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:
code{
# cryptsetup luksClose live
}code
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}#copying-iso-hybrid-to-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.
|