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
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
|
# SOME DESCRIPTIVE TITLE
# Copyright (C) YEAR Free Software Foundation, Inc.
# This file is distributed under the same license as the live-manual package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: live-manual 5.0~a2-1\n"
"POT-Creation-Date: 2015-08-23 11:04+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#. type: Plain text
#: en/live-manual.ssm:65 en/examples.ssi:2
msgid ":B~ Examples"
msgstr ""
#. type: Plain text
#: en/about_manual.ssi:92 en/about_manual.ssi:100 en/about_manual.ssi:108
#: en/about_manual.ssi:116 en/about_manual.ssi:124 en/about_manual.ssi:132
#: en/appendix_style-guide.ssi:124 en/appendix_style-guide.ssi:134
#: en/appendix_style-guide.ssi:144 en/appendix_style-guide.ssi:154
#: en/appendix_style-guide.ssi:164 en/appendix_style-guide.ssi:177
#: en/examples.ssi:14 en/examples.ssi:30 en/examples.ssi:40 en/examples.ssi:54
#: en/examples.ssi:67 en/examples.ssi:83 en/examples.ssi:93
#: en/examples.ssi:106 en/examples.ssi:114 en/examples.ssi:124
#: en/examples.ssi:134 en/examples.ssi:149 en/examples.ssi:157
#: en/examples.ssi:165 en/examples.ssi:173 en/examples.ssi:189
#: en/examples.ssi:203 en/examples.ssi:211 en/examples.ssi:219
#: en/examples.ssi:235 en/examples.ssi:249 en/examples.ssi:257
#: en/examples.ssi:265 en/examples.ssi:285 en/examples.ssi:293
#: en/examples.ssi:302 en/examples.ssi:312 en/project_bugs.ssi:62
#: en/project_coding-style.ssi:30 en/project_coding-style.ssi:40
#: en/project_coding-style.ssi:53 en/project_coding-style.ssi:63
#: en/project_coding-style.ssi:94 en/project_coding-style.ssi:102
#: en/project_coding-style.ssi:112 en/project_coding-style.ssi:123
#: en/project_contributing.ssi:34 en/project_contributing.ssi:45
#: en/project_contributing.ssi:59 en/project_contributing.ssi:68
#: en/project_contributing.ssi:79 en/project_contributing.ssi:87
#: en/project_git.ssi:8 en/project_git.ssi:16 en/project_git.ssi:24
#: en/project_git.ssi:34 en/project_git.ssi:44 en/project_git.ssi:56
#: en/project_procedures.ssi:39 en/project_procedures.ssi:51
#: en/user_basics.ssi:50 en/user_basics.ssi:58 en/user_basics.ssi:68
#: en/user_basics.ssi:86 en/user_basics.ssi:100 en/user_basics.ssi:113
#: en/user_basics.ssi:121 en/user_basics.ssi:159 en/user_basics.ssi:167
#: en/user_basics.ssi:179 en/user_basics.ssi:190 en/user_basics.ssi:198
#: en/user_basics.ssi:210 en/user_basics.ssi:218 en/user_basics.ssi:226
#: en/user_basics.ssi:238 en/user_basics.ssi:250 en/user_basics.ssi:260
#: en/user_basics.ssi:270 en/user_basics.ssi:288 en/user_basics.ssi:319
#: en/user_basics.ssi:335 en/user_basics.ssi:343 en/user_basics.ssi:363
#: en/user_basics.ssi:390 en/user_basics.ssi:406
#: en/user_customization-binary.ssi:18 en/user_customization-contents.ssi:24
#: en/user_customization-contents.ssi:33 en/user_customization-contents.ssi:51
#: en/user_customization-installer.ssi:32
#: en/user_customization-installer.ssi:44
#: en/user_customization-packages.ssi:14 en/user_customization-packages.ssi:22
#: en/user_customization-packages.ssi:40 en/user_customization-packages.ssi:53
#: en/user_customization-packages.ssi:67 en/user_customization-packages.ssi:95
#: en/user_customization-packages.ssi:106
#: en/user_customization-packages.ssi:114
#: en/user_customization-packages.ssi:138
#: en/user_customization-packages.ssi:151
#: en/user_customization-packages.ssi:161
#: en/user_customization-packages.ssi:171
#: en/user_customization-packages.ssi:195
#: en/user_customization-packages.ssi:211
#: en/user_customization-packages.ssi:290
#: en/user_customization-packages.ssi:302
#: en/user_customization-packages.ssi:312
#: en/user_customization-packages.ssi:326
#: en/user_customization-packages.ssi:342
#: en/user_customization-packages.ssi:359 en/user_customization-runtime.ssi:14
#: en/user_customization-runtime.ssi:26 en/user_customization-runtime.ssi:44
#: en/user_customization-runtime.ssi:56 en/user_customization-runtime.ssi:75
#: en/user_customization-runtime.ssi:83 en/user_customization-runtime.ssi:92
#: en/user_customization-runtime.ssi:121 en/user_customization-runtime.ssi:131
#: en/user_customization-runtime.ssi:139 en/user_customization-runtime.ssi:148
#: en/user_customization-runtime.ssi:157 en/user_customization-runtime.ssi:172
#: en/user_customization-runtime.ssi:202 en/user_customization-runtime.ssi:210
#: en/user_customization-runtime.ssi:219 en/user_customization-runtime.ssi:229
#: en/user_customization-runtime.ssi:237 en/user_customization-runtime.ssi:245
#: en/user_customization-runtime.ssi:253 en/user_customization-runtime.ssi:261
#: en/user_customization-runtime.ssi:269 en/user_customization-runtime.ssi:277
#: en/user_customization-runtime.ssi:285 en/user_installation.ssi:38
#: en/user_installation.ssi:48 en/user_installation.ssi:56
#: en/user_installation.ssi:66 en/user_installation.ssi:74
#: en/user_installation.ssi:82 en/user_installation.ssi:106
#: en/user_installation.ssi:121 en/user_installation.ssi:134
#: en/user_managing_a_configuration.ssi:22
#: en/user_managing_a_configuration.ssi:32
#: en/user_managing_a_configuration.ssi:55
#: en/user_managing_a_configuration.ssi:67
#: en/user_managing_a_configuration.ssi:76 en/user_overview.ssi:34
#: en/user_overview.ssi:47 en/user_overview.ssi:55
msgid "code{"
msgstr ""
#. type: Plain text
#: en/about_manual.ssi:96 en/about_manual.ssi:104 en/about_manual.ssi:112
#: en/about_manual.ssi:120 en/about_manual.ssi:128 en/about_manual.ssi:136
#: en/appendix_style-guide.ssi:128 en/appendix_style-guide.ssi:138
#: en/appendix_style-guide.ssi:148 en/appendix_style-guide.ssi:158
#: en/appendix_style-guide.ssi:173 en/appendix_style-guide.ssi:182
#: en/examples.ssi:20 en/examples.ssi:34 en/examples.ssi:44 en/examples.ssi:61
#: en/examples.ssi:71 en/examples.ssi:89 en/examples.ssi:102
#: en/examples.ssi:110 en/examples.ssi:118 en/examples.ssi:128
#: en/examples.ssi:141 en/examples.ssi:153 en/examples.ssi:161
#: en/examples.ssi:169 en/examples.ssi:177 en/examples.ssi:197
#: en/examples.ssi:207 en/examples.ssi:215 en/examples.ssi:231
#: en/examples.ssi:239 en/examples.ssi:253 en/examples.ssi:261
#: en/examples.ssi:269 en/examples.ssi:289 en/examples.ssi:298
#: en/examples.ssi:308 en/examples.ssi:324 en/project_bugs.ssi:66
#: en/project_coding-style.ssi:36 en/project_coding-style.ssi:47
#: en/project_coding-style.ssi:59 en/project_coding-style.ssi:70
#: en/project_coding-style.ssi:98 en/project_coding-style.ssi:106
#: en/project_coding-style.ssi:119 en/project_coding-style.ssi:130
#: en/project_contributing.ssi:41 en/project_contributing.ssi:55
#: en/project_contributing.ssi:64 en/project_contributing.ssi:73
#: en/project_contributing.ssi:83 en/project_contributing.ssi:90
#: en/project_git.ssi:12 en/project_git.ssi:20 en/project_git.ssi:28
#: en/project_git.ssi:38 en/project_git.ssi:48 en/project_git.ssi:60
#: en/project_procedures.ssi:47 en/project_procedures.ssi:92
#: en/user_basics.ssi:54 en/user_basics.ssi:62 en/user_basics.ssi:72
#: en/user_basics.ssi:91 en/user_basics.ssi:105 en/user_basics.ssi:117
#: en/user_basics.ssi:125 en/user_basics.ssi:163 en/user_basics.ssi:171
#: en/user_basics.ssi:184 en/user_basics.ssi:194 en/user_basics.ssi:202
#: en/user_basics.ssi:214 en/user_basics.ssi:222 en/user_basics.ssi:230
#: en/user_basics.ssi:242 en/user_basics.ssi:254 en/user_basics.ssi:264
#: en/user_basics.ssi:274 en/user_basics.ssi:311 en/user_basics.ssi:323
#: en/user_basics.ssi:339 en/user_basics.ssi:347 en/user_basics.ssi:374
#: en/user_basics.ssi:394 en/user_basics.ssi:410
#: en/user_customization-binary.ssi:25 en/user_customization-contents.ssi:29
#: en/user_customization-contents.ssi:43 en/user_customization-contents.ssi:55
#: en/user_customization-installer.ssi:38
#: en/user_customization-installer.ssi:49
#: en/user_customization-packages.ssi:18 en/user_customization-packages.ssi:26
#: en/user_customization-packages.ssi:45 en/user_customization-packages.ssi:59
#: en/user_customization-packages.ssi:71
#: en/user_customization-packages.ssi:100
#: en/user_customization-packages.ssi:110
#: en/user_customization-packages.ssi:118
#: en/user_customization-packages.ssi:143
#: en/user_customization-packages.ssi:157
#: en/user_customization-packages.ssi:167
#: en/user_customization-packages.ssi:177
#: en/user_customization-packages.ssi:201
#: en/user_customization-packages.ssi:216
#: en/user_customization-packages.ssi:294
#: en/user_customization-packages.ssi:306
#: en/user_customization-packages.ssi:316
#: en/user_customization-packages.ssi:330
#: en/user_customization-packages.ssi:355
#: en/user_customization-packages.ssi:364 en/user_customization-runtime.ssi:18
#: en/user_customization-runtime.ssi:30 en/user_customization-runtime.ssi:48
#: en/user_customization-runtime.ssi:69 en/user_customization-runtime.ssi:79
#: en/user_customization-runtime.ssi:88 en/user_customization-runtime.ssi:97
#: en/user_customization-runtime.ssi:125 en/user_customization-runtime.ssi:135
#: en/user_customization-runtime.ssi:144 en/user_customization-runtime.ssi:153
#: en/user_customization-runtime.ssi:162 en/user_customization-runtime.ssi:180
#: en/user_customization-runtime.ssi:206 en/user_customization-runtime.ssi:215
#: en/user_customization-runtime.ssi:223 en/user_customization-runtime.ssi:233
#: en/user_customization-runtime.ssi:241 en/user_customization-runtime.ssi:249
#: en/user_customization-runtime.ssi:257 en/user_customization-runtime.ssi:265
#: en/user_customization-runtime.ssi:273 en/user_customization-runtime.ssi:281
#: en/user_customization-runtime.ssi:289 en/user_installation.ssi:42
#: en/user_installation.ssi:52 en/user_installation.ssi:62
#: en/user_installation.ssi:70 en/user_installation.ssi:78
#: en/user_installation.ssi:86 en/user_installation.ssi:111
#: en/user_installation.ssi:128 en/user_installation.ssi:139
#: en/user_managing_a_configuration.ssi:28
#: en/user_managing_a_configuration.ssi:43
#: en/user_managing_a_configuration.ssi:61
#: en/user_managing_a_configuration.ssi:72
#: en/user_managing_a_configuration.ssi:80 en/user_overview.ssi:41
#: en/user_overview.ssi:51 en/user_overview.ssi:59
msgid "}code"
msgstr ""
#. type: Plain text
#: en/examples.ssi:4
msgid "1~examples Examples"
msgstr ""
#. type: Plain text
#: en/examples.ssi:6
msgid ""
"This chapter covers example builds for specific use cases with live systems. "
"If you are new to building your own live system images, we recommend you "
"first look at the three tutorials in sequence, as each one teaches new "
"techniques that will help you use and understand the remaining examples."
msgstr ""
#. type: Plain text
#: en/examples.ssi:8
msgid "2~using-the-examples Using the examples"
msgstr ""
#. type: Plain text
#: en/examples.ssi:10
msgid ""
"To use these examples you need a system to build them on that meets the "
"requirements listed in {Requirements}#requirements and has live-build "
"installed as described in {Installing live-build}#installing-live-build."
msgstr ""
#. type: Plain text
#: en/examples.ssi:12
msgid ""
"Note that, for the sake of brevity, in these examples we do not specify a "
"local mirror to use for the build. You can speed up downloads considerably "
"if you use a local mirror. You may specify the options when you use #{lb "
"config}#, as described in {Distribution mirrors used at build time}"
"#distribution-mirrors-build-time, or for more convenience, set the default "
"for your build system in #{/etc/live/build.conf}#. Simply create this file "
"and in it, set the corresponding #{LB_MIRROR_*}# variables to your preferred "
"mirror. All other mirrors used in the build will be defaulted from these "
"values. For example:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:18
#, no-wrap
msgid ""
" LB_MIRROR_BOOTSTRAP=\"http://mirror/debian/\"\n"
" LB_MIRROR_CHROOT_SECURITY=\"http://mirror/debian-security/\"\n"
" LB_MIRROR_CHROOT_BACKPORTS=\"http://mirror/debian-backports/\"\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:22
msgid "2~tutorial-1 Tutorial 1: A default image"
msgstr ""
#. type: Plain text
#: en/examples.ssi:24
#, no-wrap
msgid "*{Use case:}* Create a simple first image, learning the basics of live-build.\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:26
msgid ""
"In this tutorial, we will build a default ISO hybrid live system image "
"containing only base packages (no Xorg) and some live system support "
"packages, as a first exercise in using live-build."
msgstr ""
#. type: Plain text
#: en/examples.ssi:28
msgid "You can't get much simpler than this:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:32
#, no-wrap
msgid " $ mkdir tutorial1 ; cd tutorial1 ; lb config\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:36
msgid ""
"Examine the contents of the #{config/}# directory if you wish. You will see "
"stored here a skeletal configuration, ready to customize or, in this case, "
"use immediately to build a default image."
msgstr ""
#. type: Plain text
#: en/examples.ssi:38
msgid ""
"Now, as superuser, build the image, saving a log as you build with #{tee}#."
msgstr ""
#. type: Plain text
#: en/examples.ssi:42 en/examples.ssi:69 en/examples.ssi:267
#: en/project_bugs.ssi:64
#, no-wrap
msgid " # lb build 2>&1 | tee build.log\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:46
msgid ""
"Assuming all goes well, after a while, the current directory will contain "
"#{live-image-i386.hybrid.iso}#. This ISO hybrid image can be booted directly "
"in a virtual machine as described in {Testing an ISO image with Qemu}"
"#testing-iso-with-qemu and {Testing an ISO image with VirtualBox}#testing-"
"iso-with-virtualbox, or else imaged onto optical media or a USB flash device "
"as described in {Burning an ISO image to a physical medium}#burning-iso-"
"image and {Copying an ISO hybrid image to a USB stick}#copying-iso-hybrid-to-"
"usb, respectively."
msgstr ""
#. type: Plain text
#: en/examples.ssi:48
msgid "2~tutorial-2 Tutorial 2: A web browser utility"
msgstr ""
#. type: Plain text
#: en/examples.ssi:50
#, no-wrap
msgid "*{Use case:}* Create a web browser utility image, learning how to apply customizations.\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:52
msgid ""
"In this tutorial, we will create an image suitable for use as a web browser "
"utility, serving as an introduction to customizing live system images."
msgstr ""
#. type: Plain text
#: en/examples.ssi:59
#, no-wrap
msgid ""
" $ mkdir tutorial2\n"
" $ cd tutorial2\n"
" $ lb config\n"
" $ echo \"task-lxde-desktop iceweasel\" >> config/package-lists/my.list.chroot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:63
msgid ""
"Our choice of LXDE for this example reflects our desire to provide a minimal "
"desktop environment, since the focus of the image is the single use we have "
"in mind, the web browser. We could go even further and provide a default "
"configuration for the web browser in #{config/includes.chroot/etc/iceweasel/"
"profile/}#, or additional support packages for viewing various kinds of web "
"content, but we leave this as an exercise for the reader."
msgstr ""
#. type: Plain text
#: en/examples.ssi:65
msgid ""
"Build the image, again as superuser, keeping a log as in {Tutorial 1}"
"#tutorial-1:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:73
msgid "Again, verify the image is OK and test, as in {Tutorial 1}#tutorial-1."
msgstr ""
#. type: Plain text
#: en/examples.ssi:75
msgid "2~tutorial-3 Tutorial 3: A personalized image"
msgstr ""
#. type: Plain text
#: en/examples.ssi:77
#, no-wrap
msgid "*{Use case:}* Create a project to build a personalized image, containing your favourite software to take with you on a USB stick wherever you go, and evolving in successive revisions as your needs and preferences change.\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:79
msgid ""
"Since we will be changing our personalized image over a number of revisions, "
"and we want to track those changes, trying things experimentally and "
"possibly reverting them if things don't work out, we will keep our "
"configuration in the popular #{git}# version control system. We will also "
"use the best practice of autoconfiguration via #{auto}# scripts as described "
"in {Managing a configuration}#managing-a-configuration."
msgstr ""
#. type: Plain text
#: en/examples.ssi:81
msgid "3~ First revision"
msgstr ""
#. type: Plain text
#: en/examples.ssi:87
#, no-wrap
msgid ""
" $ mkdir -p tutorial3/auto\n"
" $ cp /usr/share/doc/live-build/examples/auto/* tutorial3/auto/\n"
" $ cd tutorial3\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:91
msgid "Edit #{auto/config}# to read as follows:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:95
#, no-wrap
msgid " #!/bin/sh\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:100
#, no-wrap
msgid ""
" lb config noauto \\\n"
" --architectures i386 \\\n"
" --linux-flavours 686-pae \\\n"
" \"${@}\"\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:104
msgid ""
"Perform #{lb config}# to generate the config tree, using the #{auto/config}# "
"script you just created:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:108 en/user_basics.ssi:60
#, no-wrap
msgid " $ lb config\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:112
msgid "Now populate your local package list:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:116
#, no-wrap
msgid " $ echo \"task-lxde-desktop iceweasel xchat\" >> config/package-lists/my.list.chroot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:120
msgid ""
"First, #{--architectures i386}# ensures that on our #{amd64}# build system, "
"we build a 32-bit version suitable for use on most machines. Second, we use "
"#{--linux-flavours 686-pae}# because we don't anticipate using this image on "
"much older systems. Third, we have chosen the /{lxde}/ task metapackage to "
"give us a minimal desktop. And finally, we have added two initial favourite "
"packages: /{iceweasel}/ and /{xchat}/."
msgstr ""
#. type: Plain text
#: en/examples.ssi:122
msgid "Now, build the image:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:126 en/examples.ssi:237 en/user_basics.ssi:70
#: en/user_basics.ssi:228 en/user_basics.ssi:272
#, no-wrap
msgid " # lb build\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:130
msgid ""
"Note that unlike in the first two tutorials, we no longer have to type "
"#{2>&1 | tee build.log}# as that is now included in #{auto/build}#."
msgstr ""
#. type: Plain text
#: en/examples.ssi:132
msgid ""
"Once you've tested the image (as in {Tutorial 1}#tutorial-1) and are "
"satisfied it works, it's time to initialize our #{git}# repository, adding "
"only the auto scripts we just created, and then make the first commit:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:139
#, no-wrap
msgid ""
" $ git init\n"
" $ cp /usr/share/doc/live-build/examples/gitignore .gitignore\n"
" $ git add .\n"
" $ git commit -m \"Initial import.\"\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:143
msgid "3~ Second revision"
msgstr ""
#. type: Plain text
#: en/examples.ssi:145
msgid ""
"In this revision, we're going to clean up from the first build, add the /"
"{vlc}/ package to our configuration, rebuild, test and commit."
msgstr ""
#. type: Plain text
#: en/examples.ssi:147
msgid ""
"The #{lb clean}# command will clean up all generated files from the previous "
"build except for the cache, which saves having to re-download packages. This "
"ensures that the subsequent #{lb build}# will re-run all stages to "
"regenerate the files from our new configuration."
msgstr ""
#. type: Plain text
#: en/examples.ssi:151 en/user_basics.ssi:252
#, no-wrap
msgid " # lb clean\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:155
msgid ""
"Now append the /{vlc}/ package to our local package list in #{config/package-"
"lists/my.list.chroot}#:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:159
#, no-wrap
msgid " $ echo vlc >> config/package-lists/my.list.chroot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:163
msgid "Build again:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:167
msgid "# lb build"
msgstr ""
#. type: Plain text
#: en/examples.ssi:171
msgid "Test, and when you're satisfied, commit the next revision:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:175
#, no-wrap
msgid " $ git commit -a -m \"Adding vlc media player.\"\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:179
msgid ""
"Of course, more complicated changes to the configuration are possible, "
"perhaps adding files in subdirectories of #{config/}#. When you commit new "
"revisions, just take care not to hand edit or commit the top-level files in "
"#{config}# containing #{LB_*}# variables, as these are build products, too, "
"and are always cleaned up by #{lb clean}# and re-created with #{lb config}# "
"via their respective #{auto}# scripts."
msgstr ""
#. type: Plain text
#: en/examples.ssi:181
msgid ""
"We've come to the end of our tutorial series. While many more kinds of "
"customization are possible, even just using the few features explored in "
"these simple examples, an almost infinite variety of different images can be "
"created. The remaining examples in this section cover several other use "
"cases drawn from the collected experiences of users of live systems."
msgstr ""
#. type: Plain text
#: en/examples.ssi:183
msgid "2~ A VNC Kiosk Client"
msgstr ""
#. type: Plain text
#: en/examples.ssi:185
#, no-wrap
msgid "*{Use case:}* Create an image with live-build to boot directly to a VNC server.\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:187
msgid ""
"Make a build directory and create an skeletal configuration inside it, "
"disabling recommends to make a minimal system. And then create two initial "
"package lists: the first one generated with a script provided by live-build "
"named #{Packages}# (see {Generated package lists}#generated-package-lists), "
"and the second one including /{xorg}/, /{gdm3}/, /{metacity}/ and /"
"{xvnc4viewer}/."
msgstr ""
#. type: Plain text
#: en/examples.ssi:195
#, no-wrap
msgid ""
" $ mkdir vnc-kiosk-client\n"
" $ cd vnc-kiosk-client\n"
" $ lb config -a i386 -k 686-pae --apt-recommends false\n"
" $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot\n"
" $ echo \"xorg gdm3 metacity xvnc4viewer\" > config/package-lists/my.list.chroot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:199
msgid ""
"As explained in {Tweaking APT to save space}#tweaking-apt-to-save-space you "
"may need to re-add some recommended packages to make your image work "
"properly."
msgstr ""
#. type: Plain text
#: en/examples.ssi:201
msgid "An easy way to list recommends is using /{apt-cache}/. For example:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:205
#, no-wrap
msgid " $ apt-cache depends live-config live-boot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:209
msgid ""
"In this example we found out that we had to re-include several packages "
"recommended by live-config and live-boot: #{user-setup}# to make autologin "
"work and #{sudo}# as an essential program to shutdown the system. Besides, "
"it could be handy to add #{live-tools}# to be able to copy the image to RAM "
"and #{eject}# to eventually eject the live medium. So:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:213
#, no-wrap
msgid " $ echo \"live-tools user-setup sudo eject\" > config/package-lists/recommends.list.chroot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:217
msgid ""
"After that, create the directory #{/etc/skel}# in #{config/includes.chroot}# "
"and put a custom #{.xsession}# in it for the default user that will launch /"
"{metacity}/ and start /{xvncviewer}/, connecting to port #{5901}# on a "
"server at #{192.168.1.2}#:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:223
#, no-wrap
msgid ""
" $ mkdir -p config/includes.chroot/etc/skel\n"
" $ cat > config/includes.chroot/etc/skel/.xsession << EOF\n"
" #!/bin/sh\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:226
#, no-wrap
msgid ""
" /usr/bin/metacity &\n"
" /usr/bin/xvncviewer 192.168.1.2:1\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:229
#, no-wrap
msgid ""
" exit\n"
" EOF\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:233
msgid "Build the image:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:241
msgid "Enjoy."
msgstr ""
#. type: Plain text
#: en/examples.ssi:243
msgid "2~ A base image for a 128MB USB key"
msgstr ""
#. type: Plain text
#: en/examples.ssi:245
#, no-wrap
msgid "*{Use case:}* Create a default image with some components removed in order to fit on a 128MB USB key with a little space left over to use as you see fit.\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:247
msgid ""
"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 128MB 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."
msgstr ""
#. type: Plain text
#: en/examples.ssi:251
#, no-wrap
msgid " $ lb config --apt-indices false --apt-recommends false --debootstrap-options \"--variant=minbase\" --firmware-chroot false --memtest none\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:255
msgid ""
"To make the image work properly, we must re-add, at least, two recommended "
"packages which are left out by the #{--apt-recommends false}# option. See "
"{Tweaking APT to save space}#tweaking-apt-to-save-space"
msgstr ""
#. type: Plain text
#: en/examples.ssi:259
#, no-wrap
msgid " $ echo \"user-setup sudo\" > config/package-lists/recommends.list.chroot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:263
msgid "Now, build the image in the usual way:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:271
msgid ""
"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}#tutorial-1."
msgstr ""
#. type: Plain text
#: en/examples.ssi:273
msgid ""
"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."
msgstr ""
#. type: Plain text
#: en/examples.ssi:275
#, no-wrap
msgid "*{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.\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:277
msgid "2~ A localized GNOME desktop and installer"
msgstr ""
#. type: Plain text
#: en/examples.ssi:279
#, no-wrap
msgid "*{Use case:}* Create a GNOME desktop image, localized for Switzerland and including an installer.\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:281
msgid ""
"We want to make an iso-hybrid image for i386 architecture 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."
msgstr ""
#. type: Plain text
#: en/examples.ssi:283
msgid ""
"Our initial problem is the discovery of the names of the appropriate "
"language tasks. Currently, live-build cannot help with this. While we might "
"get lucky and find this by trial-and-error, there is a tool, #{grep-dctrl}#, "
"which can be used to dig it out of the task descriptions in tasksel-data, so "
"to prepare, make sure you have both of those things:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:287
#, no-wrap
msgid " # apt-get install dctrl-tools tasksel-data\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:291
msgid "Now we can search for the appropriate tasks, first with:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:296
#, no-wrap
msgid ""
" $ grep-dctrl -FTest-lang de /usr/share/tasksel/descs/debian-tasks.desc -sTask\n"
" Task: german\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:300
msgid ""
"By this command, we discover the task is called, plainly enough, german. Now "
"to find the related tasks:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:306
#, no-wrap
msgid ""
" $ grep-dctrl -FEnhances german /usr/share/tasksel/descs/debian-tasks.desc -sTask\n"
" Task: german-desktop\n"
" Task: german-kde-desktop\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:310
msgid ""
"At boot time we will generate the *{de_CH.UTF-8}* locale and select the *{ch}"
"* keyboard layout. Now let's put the pieces together. Recalling from {Using "
"metapackages}#using-metapackages that task metapackages are prefixed #{task-}"
"#, we just specify these language boot parameters, then add standard "
"priority packages and all our discovered task metapackages to our package "
"list as follows:"
msgstr ""
#. type: Plain text
#: en/examples.ssi:322
#, no-wrap
msgid ""
" $ mkdir live-gnome-ch\n"
" $ cd live-gnome-ch\n"
" $ lb config \\\n"
" -a i386 \\\n"
" --bootappend-live \"boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch\" \\\n"
" --debian-installer live\n"
" $ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot\n"
" $ echo task-gnome-desktop task-german task-german-desktop >> config/package-lists/desktop.list.chroot\n"
" $ echo debian-installer-launcher >> config/package-lists/installer.list.chroot\n"
msgstr ""
#. type: Plain text
#: en/examples.ssi:325
msgid ""
"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."
msgstr ""
|