-
Notifications
You must be signed in to change notification settings - Fork 0
/
print.html
2583 lines (2557 loc) · 282 KB
/
print.html
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
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE HTML>
<html lang="en" class="sidebar-visible no-js">
<head>
<!-- Book generated using mdBook -->
<meta charset="utf-8">
<title>Void Linux Handbook</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff" />
<link rel="shortcut icon" href="favicon.png">
<link rel="stylesheet" href="css/general.css">
<link rel="stylesheet" href="css/print.css" media="print">
</head>
<body>
<!-- Provide site root to javascript -->
<script type="text/javascript">
var path_to_root = "";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script type="text/javascript">
try {
var sidebar = localStorage.getItem('mdbook-sidebar');
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<header>
<nav id="void-nav">
<ul>
<li><a id="skip-to-content" tabindex="1" href="#main">Skip to content</a></li>
<li>
<button id="sidebar-toggle" class="icon-button" type="button" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<path d="M1 3v2h18V3zm0 8h18V9H1zm0 6h18v-2H1z"/>
</svg>
</button>
</li>
<li>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
<path d="M7.5 13c3.04 0 5.5-2.46 5.5-5.5S10.54 2 7.5 2 2 4.46 2 7.5 4.46 13 7.5 13zm4.55.46C10.79 14.43 9.21 15 7.5 15 3.36 15 0 11.64 0 7.5S3.36 0 7.5 0C11.64 0 15 3.36 15 7.5c0 1.71-.57 3.29-1.54 4.55l6.49 6.49-1.41 1.41-6.49-6.49z"/>
</svg>
</button>
</li>
<noscript>
<li class="js-unavailable">Search functionality requires JavaScript</li>
</noscript>
</ul>
<ul id="nav-right">
<li><a href="https://www.voidlinux.org">Home</a></li>
<li><a href="https://www.voidlinux.org/news/">News</a></li>
<li><a href="https://www.voidlinux.org/download/">Download</a></li>
<li><a href="https://www.voidlinux.org/packages/">Packages</a></li>
<li><a href="https://docs.voidlinux.org">Documentation</a></li>
<li><a href="https://man.voidlinux.org/">Manual Pages</a></li>
<li><a href="https://github.com/void-linux">GitHub</a></li>
</ul>
</nav>
</header>
<div id="content">
<!-- Hide / unhide sidebar before it is displayed -->
<script type="text/javascript">
var html = document.querySelector('html');
var sidebar = 'hidden';
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
}
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" aria-label="Table of contents">
<ol class="chapter"><li class="chapter-item expanded "><a href="about/index.html"><strong aria-hidden="true">1.</strong> 关于</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="about/history.html"><strong aria-hidden="true">1.1.</strong> 历史</a></li><li class="chapter-item expanded "><a href="about/about-this-handbook.html"><strong aria-hidden="true">1.2.</strong> 关于本手册</a></li><li class="chapter-item expanded "><a href="about/infradocs.html"><strong aria-hidden="true">1.3.</strong> InfraDocs</a></li></ol></li><li class="chapter-item expanded "><a href="installation/index.html"><strong aria-hidden="true">2.</strong> 安装</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="installation/live-images/index.html"><strong aria-hidden="true">2.1.</strong> Live 安装程序</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="installation/live-images/prep.html"><strong aria-hidden="true">2.1.1.</strong> 准备安装介质</a></li><li class="chapter-item expanded "><a href="installation/live-images/partitions.html"><strong aria-hidden="true">2.1.2.</strong> 分区说明</a></li><li class="chapter-item expanded "><a href="installation/live-images/guide.html"><strong aria-hidden="true">2.1.3.</strong> 安装指南</a></li></ol></li><li class="chapter-item expanded "><a href="installation/guides/index.html"><strong aria-hidden="true">2.2.</strong> 进阶安装指南</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="installation/guides/chroot.html"><strong aria-hidden="true">2.2.1.</strong> 通过 chroot 安装 (x86/x86_64/aarch64)</a></li><li class="chapter-item expanded "><a href="installation/guides/fde.html"><strong aria-hidden="true">2.2.2.</strong> 全盘加密</a></li><li class="chapter-item expanded "><a href="installation/guides/zfs.html"><strong aria-hidden="true">2.2.3.</strong> 全盘 ZFS</a></li><li class="chapter-item expanded "><a href="installation/guides/arm-devices/index.html"><strong aria-hidden="true">2.2.4.</strong> ARM 设备</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="installation/guides/arm-devices/platforms.html"><strong aria-hidden="true">2.2.4.1.</strong> 所支持的平台</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="installation/musl.html"><strong aria-hidden="true">2.3.</strong> musl</a></li></ol></li><li class="chapter-item expanded "><a href="config/index.html"><strong aria-hidden="true">3.</strong> 配置</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/package-documentation/index.html"><strong aria-hidden="true">3.1.</strong> 软件文档</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/package-documentation/man.html"><strong aria-hidden="true">3.1.1.</strong> 手册页</a></li></ol></li><li class="chapter-item expanded "><a href="config/firmware.html"><strong aria-hidden="true">3.2.</strong> 驱动</a></li><li class="chapter-item expanded "><a href="config/locales.html"><strong aria-hidden="true">3.3.</strong> 本地化与翻译</a></li><li class="chapter-item expanded "><a href="config/users-and-groups.html"><strong aria-hidden="true">3.4.</strong> 用户和用户组</a></li><li class="chapter-item expanded "><a href="config/services/index.html"><strong aria-hidden="true">3.5.</strong> 服务与守护进程 - runit</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/services/user-services.html"><strong aria-hidden="true">3.5.1.</strong> 每个用户的服务</a></li><li class="chapter-item expanded "><a href="config/services/logging.html"><strong aria-hidden="true">3.5.2.</strong> 日志</a></li></ol></li><li class="chapter-item expanded "><a href="config/rc-files.html"><strong aria-hidden="true">3.6.</strong> rc.conf, rc.local 还有 rc.shutdown</a></li><li class="chapter-item expanded "><a href="config/cron.html"><strong aria-hidden="true">3.7.</strong> Cron</a></li><li class="chapter-item expanded "><a href="config/ssd.html"><strong aria-hidden="true">3.8.</strong> 固态硬盘</a></li><li class="chapter-item expanded "><a href="config/security/index.html"><strong aria-hidden="true">3.9.</strong> 安全</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/security/apparmor.html"><strong aria-hidden="true">3.9.1.</strong> AppArmor</a></li></ol></li><li class="chapter-item expanded "><a href="config/date-time.html"><strong aria-hidden="true">3.10.</strong> 日期和时间</a></li><li class="chapter-item expanded "><a href="config/kernel.html"><strong aria-hidden="true">3.11.</strong> 内核</a></li><li class="chapter-item expanded "><a href="config/power-management.html"><strong aria-hidden="true">3.12.</strong> 电源管理</a></li><li class="chapter-item expanded "><a href="config/network/index.html"><strong aria-hidden="true">3.13.</strong> 网络</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/network/firewalls.html"><strong aria-hidden="true">3.13.1.</strong> 防火墙</a></li><li class="chapter-item expanded "><a href="config/network/wpa_supplicant.html"><strong aria-hidden="true">3.13.2.</strong> wpa_supplicant</a></li><li class="chapter-item expanded "><a href="config/network/iwd.html"><strong aria-hidden="true">3.13.3.</strong> IWD</a></li><li class="chapter-item expanded "><a href="config/network/networkmanager.html"><strong aria-hidden="true">3.13.4.</strong> NetworkManager</a></li><li class="chapter-item expanded "><a href="config/network/connman.html"><strong aria-hidden="true">3.13.5.</strong> ConnMan</a></li></ol></li><li class="chapter-item expanded "><a href="config/network-filesystems.html"><strong aria-hidden="true">3.14.</strong> 网络文件系统</a></li><li class="chapter-item expanded "><a href="config/session-management.html"><strong aria-hidden="true">3.15.</strong> Session 和 Seat 管理</a></li><li class="chapter-item expanded "><a href="config/graphical-session/index.html"><strong aria-hidden="true">3.16.</strong> 图形 Session</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/graphical-session/graphics-drivers/index.html"><strong aria-hidden="true">3.16.1.</strong> 图形设备</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/graphical-session/graphics-drivers/amd.html"><strong aria-hidden="true">3.16.1.1.</strong> AMD or ATI</a></li><li class="chapter-item expanded "><a href="config/graphical-session/graphics-drivers/intel.html"><strong aria-hidden="true">3.16.1.2.</strong> Intel</a></li><li class="chapter-item expanded "><a href="config/graphical-session/graphics-drivers/nvidia.html"><strong aria-hidden="true">3.16.1.3.</strong> NVIDIA</a></li><li class="chapter-item expanded "><a href="config/graphical-session/graphics-drivers/optimus.html"><strong aria-hidden="true">3.16.1.4.</strong> NVIDIA Optimus</a></li></ol></li><li class="chapter-item expanded "><a href="config/graphical-session/xorg.html"><strong aria-hidden="true">3.16.2.</strong> Xorg</a></li><li class="chapter-item expanded "><a href="config/graphical-session/wayland.html"><strong aria-hidden="true">3.16.3.</strong> Wayland</a></li><li class="chapter-item expanded "><a href="config/graphical-session/fonts.html"><strong aria-hidden="true">3.16.4.</strong> 字体</a></li><li class="chapter-item expanded "><a href="config/graphical-session/icons.html"><strong aria-hidden="true">3.16.5.</strong> 图标</a></li><li class="chapter-item expanded "><a href="config/graphical-session/gnome.html"><strong aria-hidden="true">3.16.6.</strong> GNOME</a></li><li class="chapter-item expanded "><a href="config/graphical-session/kde.html"><strong aria-hidden="true">3.16.7.</strong> KDE</a></li></ol></li><li class="chapter-item expanded "><a href="config/media/index.html"><strong aria-hidden="true">3.17.</strong> 多媒体</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/media/alsa.html"><strong aria-hidden="true">3.17.1.</strong> ALSA</a></li><li class="chapter-item expanded "><a href="config/media/pipewire.html"><strong aria-hidden="true">3.17.2.</strong> PipeWire</a></li><li class="chapter-item expanded "><a href="config/media/pulseaudio.html"><strong aria-hidden="true">3.17.3.</strong> PulseAudio</a></li><li class="chapter-item expanded "><a href="config/media/sndio.html"><strong aria-hidden="true">3.17.4.</strong> sndio</a></li></ol></li><li class="chapter-item expanded "><a href="config/bluetooth.html"><strong aria-hidden="true">3.18.</strong> 蓝牙</a></li><li class="chapter-item expanded "><a href="config/texlive.html"><strong aria-hidden="true">3.19.</strong> TeX Live</a></li><li class="chapter-item expanded "><a href="config/external-applications.html"><strong aria-hidden="true">3.20.</strong> 更多程序</a></li><li class="chapter-item expanded "><a href="config/print/index.html"><strong aria-hidden="true">3.21.</strong> 打印</a></li><li class="chapter-item expanded "><a href="config/containers-and-vms/index.html"><strong aria-hidden="true">3.22.</strong> 容器与虚拟化</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="config/containers-and-vms/chroot.html"><strong aria-hidden="true">3.22.1.</strong> Chroots and Containers</a></li><li class="chapter-item expanded "><a href="config/containers-and-vms/libvirt.html"><strong aria-hidden="true">3.22.2.</strong> libvirt</a></li><li class="chapter-item expanded "><a href="config/containers-and-vms/lxc.html"><strong aria-hidden="true">3.22.3.</strong> LXC</a></li></ol></li><li class="chapter-item expanded "><a href="config/openpgp.html"><strong aria-hidden="true">3.23.</strong> OpenPGP</a></li></ol></li><li class="chapter-item expanded "><a href="xbps/index.html"><strong aria-hidden="true">4.</strong> XBPS 软件管理器</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="xbps/advanced-usage.html"><strong aria-hidden="true">4.1.</strong> 高级用法</a></li><li class="chapter-item expanded "><a href="xbps/repositories/index.html"><strong aria-hidden="true">4.2.</strong> 软件源</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="xbps/repositories/mirrors/index.html"><strong aria-hidden="true">4.2.1.</strong> 镜像</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="xbps/repositories/mirrors/changing.html"><strong aria-hidden="true">4.2.1.1.</strong> 更换镜像</a></li><li class="chapter-item expanded "><a href="xbps/repositories/mirrors/tor.html"><strong aria-hidden="true">4.2.1.2.</strong> 使用 Tor 镜像</a></li></ol></li><li class="chapter-item expanded "><a href="xbps/repositories/restricted.html"><strong aria-hidden="true">4.2.2.</strong> 受限制的软件</a></li><li class="chapter-item expanded "><a href="xbps/repositories/custom.html"><strong aria-hidden="true">4.2.3.</strong> 自定义的软件源</a></li><li class="chapter-item expanded "><a href="xbps/repositories/signing.html"><strong aria-hidden="true">4.2.4.</strong> 签名软件源</a></li></ol></li><li class="chapter-item expanded "><a href="xbps/troubleshooting/index.html"><strong aria-hidden="true">4.3.</strong> XBPS 的故障排除</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="xbps/troubleshooting/common-issues.html"><strong aria-hidden="true">4.3.1.</strong> 常见问题</a></li><li class="chapter-item expanded "><a href="xbps/troubleshooting/static.html"><strong aria-hidden="true">4.3.2.</strong> Static XBPS</a></li></ol></li></ol></li><li class="chapter-item expanded "><a href="contributing/index.html"><strong aria-hidden="true">5.</strong> 贡献</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="contributing/void-docs/index.html"><strong aria-hidden="true">5.1.</strong> 贡献于 void-docs</a></li></ol></li></ol>
</nav>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script type="text/javascript">
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="page-wrapper">
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" name="search" id="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<main id="main">
<h1 id="关于"><a class="header" href="#关于">关于</a></h1>
<p>欢迎来到 Void 手册! 请务必阅读"<a href="about/./about-this-handbook.html">关于本手册</a>" 的部分,以了解如何有效地使用本手册。
本手册的本地部分, 有几种格式,可以通过 <code>void-docs</code> 软件包<a href="about/../xbps/index.html">安装</a>并使用 <a href="https://man.voidlinux.org/void-docs.1">void-docs(1)</a> 访问。</p>
<p>Void 是独立的, <a href="https://en.wikipedia.org/wiki/Rolling_release">滚动</a> Linux 发行版,从头开始开发,不是哪个发行版的分支。注重稳定性大于
<a href="https://en.wikipedia.org/wiki/Bleeding_edge_technology">新的技术</a>. 此外, 还有几个特点使 Void 成为独一无二的存在</p>
<ul>
<li>
<p><a href="https://github.com/void-linux/xbps">XBPS</a> 软件包管理, 它是速度极快, 由 Void 内部开发, XBPS 在更新软件包前会检查兼容性,确保更新不会破坏依赖。</p>
</li>
<li>
<p><a href="https://musl.libc.org/">musl libc</a>, 专注于标准的遵守和正确性,拥有一流的支持。在 musl 系统上,可以构建出一些 glibc 系统上不可能构建出的静态组件。</p>
</li>
<li>
<p><a href="about/../config/services/index.html">runit</a> 用于
<a href="https://man.voidlinux.org/init.8">init(8)</a> 和服务监视器. runit 允许使用 musl 作为 libc,<a href="https://www.freedesktop.org/wiki/Software/systemd/">systemd</a> 无法做到这一点。使用 runit 还使得 Void 的核心系统更精简高效,源代码更简洁。</p>
</li>
</ul>
<p>通常,Void 的稳定性足以应对日常使用。Void 由少数开发者在空闲时间里开发,我们以此为乐,希望我们的工作可以帮助到其他人。</p>
<p>“Void”之名来自 C 语言关键字 void,没有什么特殊含义。</p>
<h2 id="关于其汉化版本"><a class="header" href="#关于其汉化版本">关于其汉化版本</a></h2>
<p>此汉化版本是非官方汉化的,第一部分参考了 <a href="https://github.com/fenprace/void-docs-zh-hans">void-docs-zh-hans</a> ,其他部分参考了 <a href="https://deepl.com">deepl</a> 的翻译对其进行了增删改。</p>
<p>如有什么翻译漏洞请提交 <code>issue</code> 或 <code>fork</code> 之后合并提交。还可以进群交流: <a href="https://t.me/voidlinux_zh">Telegram 群</a>、<a href="https://matrix.to/#/#voidlinux-zh:mozilla.org">Matrix 群</a></p>
<p>其仓库链接是 <a href="https://github.com/voidlinux-zh-association/void-docs-zh-cn/">这里</a> </p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="历史"><a class="header" href="#历史">历史</a></h1>
<p>从 Git 日志中 grep 出来的远古知识:</p>
<ul>
<li>2008-09-26:<a href="https://github.com/void-linux/void-packages">void-packages</a> 的第一次 Git 导入</li>
<li>2009-08-17:<a href="https://github.com/void-linux/xbps">xbps</a> 的第一次 Git 导入</li>
<li>2011-06-25:void-packages 的首个 systemd 提交</li>
<li>2013-03-01:首次加入了 <a href="https://musl.libc.org/">musl</a> 工具链</li>
<li>2014-07-14:开始转向 <a href="https://www.libressl.org/">LibreSSL</a></li>
<li>2014-07-28:从 systemd 转向 <a href="http://smarden.org/runit/">runit</a></li>
<li>2015-07-09:完整 aarch64 支持与 <code>linux4.1</code></li>
<li>2018-07-06:为了提高透明度,首次用 <a href="https://github.com/void-linux/void-infrastructure/tree/master/terraform">Terraform 管理 GitHub 权限</a></li>
<li>2021-03-05:开始<a href="https://github.com/void-linux/void-packages/commit/d90dba0ae27c4bb22cbb1722f70e4ed6d599e473">转向</a> <a href="https://www.openssl.org/">OpenSSL</a></li>
</ul>
<div style="break-before: page; page-break-before: always;"></div><h1 id="关于本手册"><a class="header" href="#关于本手册">关于本手册</a></h1>
<p>本手册不是关于如何使用和配置常见 Linux 软件的大而全的指南。本文档的目标是说明如何安装、配置、维护 Void Linux 系统,重点叙述一般 Linux 发行版于 Void 的区别。
点击“放大镜”图标或按下“s”,在本手册中搜索。
要查找配置一般 Linux 系统的提示或技巧,请去参考上游软件的文档。另外,<a href="https://wiki.archlinux.org/">Arch Wiki</a> 提供了相当全面的常见 Linux 软件配置概述,也请灵活运用各种搜索引擎。</p>
<h2 id="阅读-man-手册"><a class="header" href="#阅读-man-手册">阅读 Man 手册</a></h2>
<p>本手册没有巨细无遗的配置指导,但本手册尽可能地提供了相关 <a href="https://man.voidlinux.org/">man 手册页</a>的链接。
运行命令 <code>man man</code> 学习如何使用 man 手册页查看器。编辑 <code>/etc/man.conf</code> 配置 man;详情参考 <a href="https://man.voidlinux.org/man.conf.5">man.conf(5)</a>。
Void 使用 <a href="https://mandoc.bsd.lv/">mandoc</a> 工具组生成 man 手册页。“mdocml”是 mandoc 的曾用名,mandoc 由 <code>mdocml</code> 软件包提供。</p>
<h2 id="命令样例"><a class="header" href="#命令样例">命令样例</a></h2>
<p>本手册中会展示在命令行中运行的代码片段作为例子。这些例子中,以 <code>$</code> 开头的行代表以普通用户运行的命令,以 <code>#</code> 开头的行代表以 <code>root</code> 运行的命令。命令之后可能会紧跟着几行该命令的输出样例。</p>
<h3 id="占位符"><a class="header" href="#占位符">占位符</a></h3>
<p>一些例子会包括占位符,你应该用合适的信息替换占位符,比如:</p>
<pre><code># ln -s /etc/sv/<service_name> /var/service/
</code></pre>
<p>这表示你需要用实际的服务名称替换 <code><service_name></code>。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="infradocs"><a class="header" href="#infradocs">InfraDocs</a></h1>
<p><a href="https://infradocs.voidlinux.org/">InfraDocs</a> 是关于 Void 项目系统管理的元手册。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="安装"><a class="header" href="#安装">安装</a></h1>
<p>本章包括安装 Void 的一般流程。对于特殊的情况,参考<a href="installation/./guides/index.html">《进阶安装》</a>一节</p>
<h2 id="基本系统要求"><a class="header" href="#基本系统要求">基本系统要求</a></h2>
<p>尽管 Void 对硬件的要求很低,我们还是建议在比下述配置更高的系统上安装:</p>
<div class="table-wrapper"><table><thead><tr><th>Architecture</th><th>CPU</th><th>RAM</th><th>Storage</th></tr></thead><tbody>
<tr><td>x86_64-glibc</td><td>x86_64</td><td>96MB</td><td>700MB</td></tr>
<tr><td>x86_64-musl</td><td>x86_64</td><td>96MB</td><td>600MB</td></tr>
<tr><td>i686-glibc</td><td>Pentium 4 (SSE2)</td><td>96MB</td><td>700MB</td></tr>
</tbody></table>
</div>
<p>请注意,xfce 映像安装需要更多资源。 </p>
<p>Void 不支持 i386、i486 或 i586 架构。</p>
<p>在安装 musl Void 前,请阅读本手册的 <a href="installation/./musl.html">musl</a> 一章,以了解软件的不兼容信息。</p>
<p>安装过程不需要连接网络,但还是非常建议在安装过程中连接网络以下载更新。ISO 镜像包含了安装系统所需要的数据,可以在无网络连接时安装。</p>
<h2 id="下载安装镜像"><a class="header" href="#下载安装镜像">下载安装镜像</a></h2>
<p>最近的 live 镜像和 rootfs 压缩包可以从 https://repo-default.voidlinux.org/live/current/ 下载,也可以从<a href="https://docs.voidlinux.org/xbps/repositories/mirrors/index.html">其他镜像</a>下载。以日期排列的历史发布可以在 https://repo-default.voidlinux.org/live/ 找到。</p>
<h2 id="验证镜像"><a class="header" href="#验证镜像">验证镜像</a></h2>
<p>每个镜像发布目录都包含两个用来验证镜像的文件。一个 <code>sha256sum.txt</code> 文件包含了镜像的校验和,可以用来验镜像的完整性。另有一个 <code>sha256sum.sig</code> 文件,用来检查校验和的真实性。</p>
<p>有必要验证镜像的完整性和真实性,因此建议也下载 <code>sha256sum.txt</code> 和 <code>sha256sum.sig</code> 两个文件。</p>
<h3 id="验证镜像完整性"><a class="header" href="#验证镜像完整性">验证镜像完整性</a></h3>
<p>你可以用 <a href="https://man.voidlinux.org/sha256sum.1">sha256sum(1)</a> 和上述的 <code>sha256sum.txt</code> 文件验证下载文件的完整性。下面的命令会检查你已下载镜像的完整性:</p>
<pre><code>$ sha256sum -c --ignore-missing sha256sum.txt
void-live-x86_64-musl-20170220.iso: OK
</code></pre>
<p>以上输出说明镜像没有损坏。</p>
<h3 id="验证数字签名"><a class="header" href="#验证数字签名">验证数字签名</a></h3>
<p>强烈建议在使用镜像前,先验证镜像的签名,确保镜像文件没有被篡改。</p>
<p>目前镜像都由用于发布的 siginfy 密钥签名。如果你已经在使用 Void 系统,你可以从 <code>void-release-keys</code> 软件包获取密钥,XBPS。你还需要 <a href="https://man.voidlinux.org/signify.1">signify(1)</a> 或 <a href="https://man.voidlinux.org/minisign.1">minisign(1)</a> 的拷贝;在 Void 系统上,它们分别由 <code>outils</code> 或 <code>minisign</code> 软件包提供。</p>
<p>在不是 Void Linux 的 Linux 发行版上获取 <code>signify</code>:</p>
<ul>
<li>在 Arch Linux 和基于 Arch 的发行版上,安装 <code>signify</code> 软件包。</li>
<li>在 Debian 和基于 Debian 的发行版上,安装 <code>signify-openbsd</code> 软件包。</li>
<li>为你的的发行版安装<a href="https://repology.org/project/signify-openbsd/versions">这里</a>列出的软件包。</li>
<li>在 macOS 上,用 homebrew 安装 <code>signify-osx</code>。</li>
</ul>
<p><code>minisign</code> 可执行程序一般由同名的软件包提供,即使没有 WSL 或 MinGW 也应该可以在 Windows 上安装。</p>
<p>如果你不在使用 Void Linux,也有必要从<a href="https://github.com/void-linux/void-packages/tree/master/srcpkgs/void-release-keys/files/">我们的 Git 仓库</a>取得相应的签名密钥。</p>
<p>取得了密钥后就可以用 <code>sha256sum.sig</code> 和 <code>sha256sum.txt</code> 文件检验镜像文件。首先你需要验证 <code>sha256sum.txt</code> 文件的正确性。</p>
<p>下面的例子演示了 <code>sha256sum.txt</code> 文件的校验
对于 20210930 图像。 首先,使用 <code>signify</code> : </p>
<pre><code>$ signify -V -p /etc/signify/void-release-20210930.pub -x sha256sum.sig -m sha256sum.txt
Signature Verified
</code></pre>
<p>其次,用 <code>minisign</code>:</p>
<pre><code>$ minisign -V -p /etc/signify/void-release-20210930.pub -x sha256sum.sig -m sha256sum.txt
Signature and comment signature verified
Trusted comment: timestamp:1634597366 file:sha256sum.txt
</code></pre>
<p>最后,你需要检查镜像文件的校验和,于 <code>sha256sum.txt</code> 中的校验和做比较。你可以利用 <a href="https://man.voidlinux.org/md5.1">sha256(1)</a> 工具,此程序依然来自 <code>outils</code> 软件包。下面演示如何验证 20210930 <code>x86_64</code> 镜像:</p>
<pre><code>$ sha256 -C sha256sum.txt void-live-x86_64-20210930.iso
(SHA256) void-live-x86_64-20210930.iso: OK
</code></pre>
<p>另外,如果你无法使用 <code>sha256</code> 工具,你可以计算 SHA256 哈希,比如用 <a href="https://man.voidlinux.org/sha256sum.1"> sha256sum(1) </a> 计算哈希,然后用 <code>sha256sum.txt</code> 中的值比较:</p>
<pre><code>$ sha256sum void-live-x86_64-20210930.iso
45b75651eb369484e1e63ba803a34e9fe8a13b24695d0bffaf4dfaac44783294 void-live-x86_64-20210930.iso
$ grep void-live-x86_64-20210930.iso sha256sum.txt
SHA256 (void-live-x86_64-20210930.iso) = 45b75651eb369484e1e63ba803a34e9fe8a13b24695d0bffaf4dfaac44783294
</code></pre>
<p>如果验证过程没有产生期望中的“OK”状态,不要使用这个镜像!请警告 Void Linux 团队,附上你取得该镜像的地址和你检验镜像的方法,我们会跟进此事。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="live-安装程序"><a class="header" href="#live-安装程序">Live 安装程序</a></h1>
<p>Void 提供的 live 安装器镜像包括一组基础工具、安装器程序和安装全新 Void 系统需要的软件包。Live 镜像可以用来修复无法引导或正常运行的系统。</p>
<p><code>glibc</code> 和 <code>musl</code> 都有 <code>x86_64</code> 镜像,但只有 <code>glibc</code> 支持 <code>i686</code> 架构。Live 安装程序不支持其他架构,其他架构的用户需要用 rootfs 压缩包安装,或者手动安装。</p>
<h2 id="安装程序镜像"><a class="header" href="#安装程序镜像">安装程序镜像</a></h2>
<p>Void 发布两种镜像:base 镜像和 xfce 桌面镜像,推荐 Linux 新手尝试功能更完善的 xfce 桌面镜像。高手们往往会倾向于用 base 镜像安装系统,只安装他们需要的软件包。</p>
<h3 id="base-镜像"><a class="header" href="#base-镜像">base 镜像</a></h3>
<p>base 镜像提供了能用来安装 Void 系统的,最小化的软件包集合。这些基础软件包仅够用来配置新机器、升级系统和从仓库里安装其他软件包。</p>
<h3 id="xfce-镜像"><a class="header" href="#xfce-镜像">Xfce 镜像</a></h3>
<p>xfce 桌面镜像包括完整的桌面环境、Web 浏览器和自带的基本工具。 与 base 镜像的唯一区别是它增加了软件包和服务。 </p>
<p>包括一下软件:</p>
<ul>
<li><strong>窗口管理器:</strong> xfwm4</li>
<li><strong>文件管理器:</strong> Thunar</li>
<li><strong>Web 浏览器:</strong> Firefox</li>
<li><strong>终端:</strong> xfce4-terminal</li>
<li><strong>文本编辑器:</strong> Mousepad</li>
<li><strong>图片查看器:</strong> Ristretto</li>
<li><strong>其他:</strong> Bulk rename, Orage Globaltime, Orage Calendar, Task Manager, Parole
Media Player, Audio Mixer, MIME type editor, Application finder</li>
</ul>
<p>xfce 映像的安装过程与 base 映像基本相同,除了在安装时你必须选择 <code>Local</code> 作为软件源。 若你选择了 <code>Network</code> 源,安装程序将下载并安装最新版本的 base 系统,live 镜像中将不包含任何其他软件包。</p>
<h2 id="无障碍支持"><a class="header" href="#无障碍支持">无障碍支持</a></h2>
<p>所有的Void安装程序图像都支持控制台的屏幕阅读器 <a href="https://man.voidlinux.org/espeakup.8">espeakup</a> 还有控制台盲文显示驱动 <a href="https://man.voidlinux.org/brltty.1">brltty</a>。这些服务可以在启动时通过按启动程序菜单中的 <code>s</code> 来启用无障碍支持。在基于 UEFI 的系统上,GRUB 是引导程序,当菜单可用时,它将播放双音鸣叫。在基于 BIOS 的系统和传统/兼容模式的 UEFI 系统上,SYSLINUX 是引导程序,不播放钟声。SYSLINUX 还需要在按下 <code>s</code> 后按下回车键。热键 <code>r</code> 也会在支持无障碍的情况下启动,但会将实时 ISO 加载到 RAM 中。</p>
<p>在启动到激活了无障碍支持的安装程序镜像后,如果检测到有多个声卡,一个简短的音频菜单允许选择用于屏幕阅读器的声卡。当听到所需声卡的提示音时,按回车键来选择它。</p>
<p>如果在安装程序中选择了 <code>Local</code> 安装源,<code>espeakup</code> 和 <code>brltty</code> 也将被安装,并且如果在 Live 环境中启用,也将在安装的系统上启用。</p>
<p>xfce 安装镜像也支持图形化的读屏器 <code>orca</code> 。这可以通过按 <code>Win + R</code> 并输入 <code>orca -r</code> 来启用。如果选择了 <code>Local</code> 安装源,Orca 也将在安装到系统上。</p>
<h2 id="内核-command-line-参数"><a class="header" href="#内核-command-line-参数">内核 Command-line 参数</a></h2>
<p>Void 安装程序镜像支持几个内核 command-line 参数,这些参数可以改变 Live 系统的行为。参见<a href="https://github.com/void-linux/void-mklive#kernel-command-line-parameters">the void-mklive README for a full list</a> 。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="准备安装介质"><a class="header" href="#准备安装介质">准备安装介质</a></h1>
<p><a href="installation/live-images/../index.html#%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85%E9%95%9C%E5%83%8F">下载安装镜像</a>后,必须将镜像写入可引导的媒介,比如 U 盘、SD 卡或者 CD/DVD。</p>
<h2 id="在-linux-上创建可引导-u-盘或-sd-卡"><a class="header" href="#在-linux-上创建可引导-u-盘或-sd-卡">在 Linux 上创建可引导 U 盘或 SD 卡</a></h2>
<h3 id="确认设备"><a class="header" href="#确认设备">确认设备</a></h3>
<p>在写入镜像前,先确认你要写入的设备。你可以用 <a href="https://man.voidlinux.org/man8/fdisk.8">fdisk(8)</a>。插入存储设备后,用下面的命令识别设备的路径:</p>
<pre><code># fdisk -l
Disk /dev/sda: 7.5 GiB, 8036286464 bytes, 15695872 sectors
Disk model: Your USB Device's Model
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
</code></pre>
<p>上例中,输出显示 USB 设备在 <code>/dev/sda</code>。在 Linux 上,USB 设备的路径一般都是 <code>/dev/sdX</code>(X 是数字),SD 卡一般都是 <code>/dev/mmcblkX</code>,具体路径取决于设备。如果你不确定你设备的路径,你可以用型号和空间大小(上例中是 <code>7.5GiB</code>)来辨识。</p>
<p>确认你要用的设备之后,确保你的设备 <strong>没有</strong> 被挂载,用 <a href="https://man.voidlinux.org/man8/umount.8">umount(8)</a> 卸载设备:</p>
<pre><code># umount /dev/sdX
umount: /dev/sdX: not mounted.
</code></pre>
<h3 id="写入-live-镜像"><a class="header" href="#写入-live-镜像">写入 live 镜像</a></h3>
<p>命令 <a href="https://man.voidlinux.org/man1/dd.1">dd(1)</a> 可以用来将 live 镜像拷贝到存储设备上。用 <code>dd</code>,将 live 镜像写入:</p>
<p><strong>警告!</strong>: 这会删除设备上的所有数据,一定要小心。</p>
<pre><code># dd bs=4M if=/path/to/void-live-ARCH-DATE-VARIANT.iso of=/dev/sdX
90+0 records in
90+0 records out
377487360 bytes (377 MB, 360 MiB) copied, 0.461442 s, 818 MB/s
</code></pre>
<p>在完成写入(或写入失败)之前,<code>dd</code> 不会打印出任何信息。该命令可能需要几分钟或更长时间执行,取决于具体设备。如果你使用 GNU coreutils <code>dd</code>,你可以添加 <code>status=progress</code> 选项,让 <code>dd</code> 在写入过程中输出信息。</p>
<p>最后,在断开与设备连接前,确保数据已完全写入:</p>
<pre><code>$ sync
</code></pre>
<p>写入的数据、写入的文件量、写入速率取决于具体的设备和你选择的 live 镜像。</p>
<h2 id="烧录-cd-或-dvd"><a class="header" href="#烧录-cd-或-dvd">烧录 CD 或 DVD</a></h2>
<p>任何一个光盘烧录应用应该都可以写入 <code>.iso</code> 文件到 CD 或 DVD 上。可以用这些自由软件应用(跨平台支持可能不尽相同):</p>
<ul>
<li><a href="https://wiki.gnome.org/Apps/Brasero/">Brasero</a></li>
<li><a href="https://userbase.kde.org/K3b">K3B</a></li>
<li><a href="https://docs.xfce.org/apps/xfburn/start">Xfburn</a></li>
</ul>
<p>注意,用 CD 或 DVD 时,live 会话反应会比用 U 盘或硬盘时迟钝一点。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="分区说明"><a class="header" href="#分区说明">分区说明</a></h1>
<p>在现代 Linux 发行版上的分区一般都很简单,但 GPT 和 UEFI 引导的引入让事情变得复杂了一点。为你的新系统创建分区表时,你需要一个根文件系统分区、一个交换分区,可能还需要额外一到两个分区用于引导。</p>
<p>注意,如果已经初始化过硬盘了,<code>cfdisk</code> 界面顶部会显示分区布局已经存在:MBR 会显示 <code>Label: dos</code>,GPT 会显示 <code>Label: gpt</code>。如果你想要在运行安装器前删除分区表,用 <code>wipefs(8)</code> 。或者你可以手动运行 <code>cfdisk(8)</code>,加上 <code>-z</code> 选项来使用未初始化的分区布局;<code>cfdisk</code> 会在进入主界面前询问你标签类型。</p>
<p>下面的章节将详述分区配置选项:</p>
<h2 id="bios-系统说明"><a class="header" href="#bios-系统说明">BIOS 系统说明</a></h2>
<p>如果你使用 BIOS 引导系统,建议创建 MBR 分区表。这会导致你最多只能创建 4 个(主)分区。</p>
<p>也可以在 BIOS 系统上用 GPT 分区表,但 GRUB 需要一个特殊的分区以引导系统,该分区必须是硬盘上第一个分区,大小 1MB,类型是 <code>BIOS boot</code>(GUID <code>21686148-6449-6E6F-744E-656564454649</code>)。不要在这个分区里创建任何文件系统,GRUB 会自行安装。</p>
<h2 id="uefi-系统说明"><a class="header" href="#uefi-系统说明">UEFI 系统说明</a></h2>
<p>UEFI 用户建议创建 GPT 分区表,GRUB 也需要一个特殊的分区在 UEFI 系统上引导。分区类型是 <code>EFI System</code>,文件系统是 <code>vfat</code>,并且挂载到 <code>/boot/efi</code>。分区大小可以在 200MB 到 1GB 之间。挂载这个分区后用 live 镜像安装,安装器会自动安装好引导程序。</p>
<h2 id="swap-分区"><a class="header" href="#swap-分区">Swap 分区</a></h2>
<p>严格说,交换分区不是必需的,但建议在小内存的系统上使用交换分区。如果你要使用休眠,交换分区是必需的。下面的表格是建议的交换分区大小。</p>
<div class="table-wrapper"><table><thead><tr><th>系统内存</th><th>建议交换分区大小</th><th>使用休眠时的交换分区大小</th></tr></thead><tbody>
<tr><td>< 2GB</td><td>内存大小 2 的倍</td><td>内存大小的 3 倍</td></tr>
<tr><td>2-8GB</td><td>等于内存大小</td><td>内存大小的 2 倍</td></tr>
<tr><td>8-64GB</td><td>至少 4GB</td><td>内存大小的 1.5 倍</td></tr>
<tr><td>64GB</td><td>至少 4GB</td><td>不建议使用休眠</td></tr>
</tbody></table>
</div>
<h2 id="引导分区可选"><a class="header" href="#引导分区可选">引导分区(可选)</a></h2>
<p>在大部分现代系统上,独立的 <code>/boot</code> 分区不再必要。如果你想要用一个单独的引导分区,注意,Void 默认不会在更新内核后,自动删除旧的内核。另外,一般每个新版本内核都会比旧版本大一点,因此请灵活分配硬盘空间(比如,安装有 Linux 5.x <code>x86_64</code> 内核与 GRUB 的 <code>/boot</code> 需要大约 60MB)。</p>
<h2 id="其他分区"><a class="header" href="#其他分区">其他分区</a></h2>
<p>完全可以只用一个大根分区安装系统,但只要你愿意,你也可以创建其他分区。一个例子是为 <code>/home</code> 目录分出额外的分区,这样你在重装 Void(或其他发行版)时,你可以保留你用户目录中的数据和配置文件</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="安装指南"><a class="header" href="#安装指南">安装指南</a></h1>
<p><a href="installation/live-images/../index.html#%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85%E5%AA%92%E4%BB%8B">下载</a>好 Void 镜像,<a href="installation/live-images/./prep.html">准备</a>好安装媒介后,就可以开始安装 Void Linux 了。</p>
<p>正式开始安装前,请确定你的机器是用 BIOS 还是 UEFI 引导开机,这会影响你的分区,详情参考<a href="installation/live-images/./partitions.html">分区说明</a>。</p>
<p>安装器脚本不支持这些功能:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Logical_volume_management">LVM</a></li>
<li><a href="https://en.wikipedia.org/wiki/Linux_Unified_Key_Setup">LUKS</a></li>
<li><a href="https://en.wikipedia.org/wiki/ZFS">ZFS</a></li>
</ul>
<h2 id="引导"><a class="header" href="#引导">引导</a></h2>
<p>从你的安装媒介上引导启动,如果你的内存够大,可以在引导界面上选择把整个镜像加载到内存中,这会花费一些时间,但可以加速整个安装过程。</p>
<p>引导好 live 镜像后,以 <code>root</code> 登录,密码是 <code>voidlinux</code>,运行:</p>
<pre><code># void-installer
</code></pre>
<p>下面的章节将详述安装器的每个界面:</p>
<h2 id="键盘"><a class="header" href="#键盘">键盘</a></h2>
<p>选择你键盘的映射;标准的“qwerty”键盘一般使用“us”映射。</p>
<h2 id="网络"><a class="header" href="#网络">网络</a></h2>
<p>选择你的主网络接口,如果你选择不使用 DHCP,你会被要求输入 IP 地址、网关和 DNS 服务器。</p>
<p>如果您选择无线网络接口,系统将提示您提供 SSID、加密类型(<code>wpa</code> 要么 <code>wep</code>), 和密码。果 <code>void-installer</code> 失败要连接到您的网络,您可能需要退出安装程序并进行配置手动使用 <a href="installation/live-images/../../config/network/wpa_supplicant.html">wpa_supplicant</a> 和 <a href="installation/live-images/../../config/network/index.html#dhcpcd">dhcpcd</a> 在继续之前。 </p>
<h2 id="安装源"><a class="header" href="#安装源">安装源</a></h2>
<p>要安装镜像上提供的软件包,选择 <code>Local</code>。或者你也可以选择 <code>Network</code>,来从 Void 仓库下载最新的软件包。</p>
<blockquote>
<p><strong>警告:</strong> 如果你要从 xfce 像上安装桌面环境,你<strong>必须</strong>选择 <code>Local</code> 安装源。</p>
</blockquote>
<h2 id="主机名"><a class="header" href="#主机名">主机名</a></h2>
<p>选择设备的主机名(全部小写,没有空格)。</p>
<h2 id="语言环境"><a class="header" href="#语言环境">语言环境</a></h2>
<p>设置你的地区,只有 glibc 有这个选项,因为 musl 目前不支持地区。</p>
<h2 id="时区"><a class="header" href="#时区">时区</a></h2>
<p>基于标准时区选择你的时区。</p>
<h2 id="root-密码"><a class="header" href="#root-密码">Root 密码</a></h2>
<p>输入并确认你新系统的 <code>root</code> 密码,密码不会在屏幕上显示出来。</p>
<h2 id="用户账户"><a class="header" href="#用户账户">用户账户</a></h2>
<p>选择一个登录账户(默认是 <code>void</code>)并为你的账户起一个描述性的名字。然后输入并确认新用户的密码,接下来你会被要求确认新用户的用户组。默认会将新用户加入 <code>wheel</code> 用户组,并有 <code>sudo</code> 权限。默认用户组和说明请查看<a href="installation/live-images/../../config/users-and-groups.html#default-groups">这里</a>。</p>
<p>登录名有一些限制,在
<a href="https://man.voidlinux.org/useradd.8#CAVEATS">useradd(8)</a>.</p>
<h2 id="引导程序"><a class="header" href="#引导程序">引导程序</a></h2>
<p>安装 Void 时,选择安装引导程序的硬盘,你可以选择 <code>none</code> 跳过这个步骤,然后在安装过程完成后手动安装引导程序。如果你选择自动安装引导程序,你会被要求选择是否要为 GRUB 菜单添加一个图形终端。</p>
<h2 id="分区"><a class="header" href="#分区">分区</a></h2>
<p>然后你需要为你的硬盘分区。Void 不提供预设分区方案,所以你需要用 <a href="https://man.voidlinux.org/cfdisk.8">cfdisk(8)</a> 手动分区。界面会展示硬盘的列表,选择你想要分区的硬盘,安装器会启动 <code>cfdisk</code>。记得在推出分区编辑器前写入分区表。</p>
<p>如果使用 UEFI,建议你选择 GPT 作为分区表,创建一个类型为 <code>EFI System</code> 的分区(通常大小是 200MB-1GB),该分区会被挂载到 <code>/boot/efi</code>。</p>
<p>如果使用 BIOS,建议你选择 MBR 作为分区表。进阶用户可能会想要用 GPT 作为分区表,记得为 GRUB <a href="installation/live-images/./partitions.html#bios%E7%B3%BB%E7%BB%9F%E8%AF%B4%E6%98%8E">创建一个特殊的 BIOS 分区</a></p>
<h2 id="文件系统"><a class="header" href="#文件系统">文件系统</a></h2>
<p>为每个你创建的分区创建文件系统。你会被要求为每个分区选择文件系统、是否创建文件系统和可用的挂载点。完成后选择 <code>Done</code>,返回主菜单。</p>
<p>如果使用 UEFI,创建一个 <code>vfat</code> 文件系统,挂载到 <code>/boot/efi</code>。</p>
<h2 id="检查设定"><a class="header" href="#检查设定">检查设定</a></h2>
<p>在继续之前,最好重审一下你的设定。使用右方向键选择设置按钮,按下 <code><enter></code>。程序会展示你的所有选择,以供检查。</p>
<h2 id="安装-1"><a class="header" href="#安装-1">安装</a></h2>
<p>在菜单上选择 <code>Install</code>,开始安装。安装器会创建所有选择的文件系统、安装基础系统软件包、生成 initramfs 并安装 GRUB2 引导器到引导分区。</p>
<p>这些步骤会自动进行,安装结束后你就可以重启进入新 Void Linux 了!</p>
<h2 id="安装之后"><a class="header" href="#安装之后">安装之后</a></h2>
<p>重启到新 Void 后,<a href="installation/live-images/../../xbps/index.html#updating">进行系统更新</a>。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="进阶安装指南"><a class="header" href="#进阶安装指南">进阶安装指南</a></h1>
<p>本章包含了特殊或复杂用例下安装过程的指南。</p>
<h2 id="章节内容"><a class="header" href="#章节内容">章节内容</a></h2>
<ul>
<li><a href="installation/guides/./chroot.html">通过 chroot 安装 Void (x86 or x86_64)</a></li>
<li><a href="installation/guides/./fde.html">使用全盘加密安装 Void</a></li>
<li><a href="installation/guides/./zfs.html">在 ZFS 文件系统上安装 Void</a></li>
<li><a href="installation/guides/./arm-devices/index.html">ARM 设备</a></li>
</ul>
<div style="break-before: page; page-break-before: always;"></div><h1 id="通过-chroot-安装x86--x86_64--aarch64"><a class="header" href="#通过-chroot-安装x86--x86_64--aarch64">通过 chroot 安装(x86 / x86_64 / aarch64)</a></h1>
<p>本指南详述了通过 chroot 在 x86、x86_64 或 aarch64 架构的平台上安装 Void 的过程。您不必很了解用 chroot 安装 Linux 的过程,但您应该对 Linux 操作系统足够熟悉。本指南可以用来指导一个“典型”的 Void 安装过程,使用一块 SATA / IDE / USB 磁盘上的一个分区。每个步骤都可以按需调整,比如开启<a href="installation/guides/./fde.html">全盘加密</a>,使得安装过程不那么“典型”。</p>
<p>Void 提供两种安装方法:<strong>XBPS 方法</strong>在宿主系统上运行<a href="installation/guides/../../xbps/index.html">XBPS 包管理器</a>,安装基础系统;<strong>ROOTFS 方法</strong>通过解压 ROOTFS 压缩包来安装基础系统。</p>
<p><strong>XBPS 方法</strong>要求宿主系统上安装了 XBPS。宿主系统可以是已经安装好的 Void、一个官方 <a href="installation/guides/../live-images/prep.html">live 镜像</a>或是安装了<a href="installation/guides/../../xbps/troubleshooting/static.html">静态连接的 XBPS</a>的任何 Linux。</p>
<p><strong>ROOTFS 方法</strong>只要求宿主系统可以进入 Linux chroot,且安装了 <a href="https://man.voidlinux.org/tar.1">tar(1)</a> 和 <a href="https://man.voidlinux.org/xz.1">xz(1)</a>。如果你要从其他发行版上安装 Void,推荐这个方法。</p>
<h2 id="准备文件系统"><a class="header" href="#准备文件系统">准备文件系统</a></h2>
<p>给<a href="installation/guides/../live-images/partitions.html">硬盘分好区</a>,并用 <a href="https://man.voidlinux.org/mke2fs.8">mke2fs(8)</a>、<a href="https://man.voidlinux.org/mkfs.xfs.8">mkfs.xfs(8)</a>、<a href="https://man.voidlinux.org/mkfs.btrfs.8">mkfs.btrfs(8)</a> 或其他文件系统必须的工具将分区格式化。</p>
<p>也可以用 <a href="https://man.voidlinux.org/mkfs.vfat.8">mkfs.vfat(8)</a> 创建 FAT32 分区。但是由于 FAT 文件系统的种种缺陷,只应该在没有其他选择时创建 FAT 分区(比如 EFI 系统分区)。</p>
<p>Live 镜像上可以使用 <a href="https://man.voidlinux.org/cfdisk.8">cfdisk(8)</a> 和 <a href="https://man.voidlinux.org/fdisk.8">fdisk(8)</a> 分区,但你可能会想用 <a href="https://man.voidlinux.org/gdisk.8">gdisk(8)</a>(在软件包 <code>gptfdisk</code> 中)或 <a href="https://man.voidlinux.org/parted.8">parted(8)</a>。</p>
<p>对于 UEFI 引导系统,一定要创建 EFI 系统分区(ESP)。ESP 的分区类型应该是“EFI System”(代号 <code>EF00</code>),用 <a href="https://man.voidlinux.org/mkfs.vfat.8">mkfs.vfat(8)</a> 格式化为 FAT32 文件系统。</p>
<p>如果你不确定要创建什么分区,创建一个 1GB 的 “EFI System”(代号 <code>EF00</code>)分区,再用剩余的空间创建一个“Linux Filesystem”(代号 <code>8300</code>)分区。</p>
<p>分别把这两个分区格式化为 FAT32 和 ext4:</p>
<pre><code># mkfs.vfat /dev/sda1
# mkfs.ext4 /dev/sda2
</code></pre>
<h3 id="创建新根分区并挂载文件系统"><a class="header" href="#创建新根分区并挂载文件系统">创建新根分区并挂载文件系统</a></h3>
<p>本指南假设新的根文件系统被挂载到 <code>/mnt</code>。你可能会想要将它挂载到其他地方。</p>
<p>如果使用 UEFI,将 EFI 系统分区挂载为 <code>/mnt/boot/efi</code>。</p>
<p>例如,如果将 <code>/dev/sda2</code> 挂载为 <code>/</code>,<code>/dev/sda1</code> 是 EFI 系统分区:</p>
<pre><code># mount /dev/sda2 /mnt/
# mkdir -p /mnt/boot/efi/
# mount /dev/sda1 /mnt/boot/efi/
</code></pre>
<p>用 <a href="https://man.voidlinux.org/mkswap.8">mkswap(8)</a> 按需初始化交换空间。</p>
<h2 id="基础系统安装"><a class="header" href="#基础系统安装">基础系统安装</a></h2>
<p>请选择两种方法之一,跟随对应小节的指导。</p>
<p>如果在 aarch64 平台上安装,除了 <code>base-system</code>,还必须安装一个内核软件包,比如 <code>linux</code> 是 Void 提供的最新稳定版本的内核软件包。</p>
<h3 id="xbps-方法"><a class="header" href="#xbps-方法">XBPS 方法</a></h3>
<p>选择一个<a href="installation/guides/../../xbps/repositories/mirrors/index.html">镜像</a>,根据你想要安装的系统类型,<strong>选择<a href="installation/guides/../../xbps/repositories/index.html#the-main-repository">合适的 URL</a></strong>。方便起见可以将这个 URL 保存为一个 shell 变量。比如,如果是安装一个 glibc 系统:</p>
<pre><code># REPO=https://repo-default.voidlinux.org/current
</code></pre>
<p>同时还需要告诉 XBPS 要安装的系统的架构。可用的选项有 PC 上的 <code>x86_64</code>、<code>x86_64-musl</code>、<code>i686</code> 或者 <code>aarch64</code>。例如:</p>
<pre><code># ARCH=x86_64
</code></pre>
<p>这个架构必须与你当前的操作系统兼容,但不需要完全一致。如果你的宿主是 x86_64 操作系统,上述三种架构(无论 musl 还是 glibc)都可以安装,但 i686 宿主只能安装 i686 版本。</p>
<p>将 RSA 密钥从安装介质复制到要安装系统的目录。</p>
<pre><code># mkdir -p /mnt/var/db/xbps/keys
# cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/
</code></pre>
<p>用 <a href="https://man.voidlinux.org/xbps-install.1">xbps-install</a> 安装 <code>base-system</code> 元软件包</p>
<pre><code># XBPS_ARCH=$ARCH xbps-install -S -r /mnt -R "$REPO" base-system
</code></pre>
<h3 id="rootfs-方法"><a class="header" href="#rootfs-方法">ROOTFS 方法</a></h3>
<p>根据你要安装的架构,<a href="https://voidlinux.org/download/#download-installable-base-live-images-and-rootfs-tarballs">下载 ROOTFS 压缩包</a>。</p>
<p>解压压缩包到新设置的文件系统:</p>
<pre><code># tar xvf void-<...>-ROOTFS.tar.xz -C /mnt
</code></pre>
<h2 id="配置"><a class="header" href="#配置">配置</a></h2>
<p>除了《安装基础系统(仅限 ROOTFS 方法)》一节,指南剩余的部分都适用于 XBPS 和 ROOTFS 两种方法。</p>
<h3 id="进入-chroot"><a class="header" href="#进入-chroot">进入 Chroot</a></h3>
<p><a href="https://man.voidlinux.org/xchroot.1">xchroot(1)</a> (来自 <code>xtools</code>) 可以用来设置和进入 chroot。另外,这也可以<a href="installation/guides/../../config/containers-and-vms/chroot.html#manual-method">手动完成</a>.。</p>
<pre><code># xchroot /mnt /bin/bash
</code></pre>
<h3 id="安装基础系统仅限-rootfs-方法"><a class="header" href="#安装基础系统仅限-rootfs-方法">安装基础系统(仅限 ROOTFS 方法)</a></h3>
<p>因为 ROOTFS 镜像是其构建时的快照,其中的软件包一般都有所滞后,而且不包含完整的 <code>base-system</code>,需要更新包管理器并安装 <code>base-system</code>:</p>
<pre><code>[xchroot /mnt] # xbps-install -Su xbps
[xchroot /mnt] # xbps-install -u
[xchroot /mnt] # xbps-install base-system
[xchroot /mnt] # xbps-remove base-voidstrap
</code></pre>
<h3 id="安装配置"><a class="header" href="#安装配置">安装配置</a></h3>
<p><a href="installation/guides/../../config/locales.html">locales</a>.
在 <code>/etc/hostname</code> 中指定 hostname。检查一下 <a href="installation/guides/../../config/rc-files.html#rcconf"><code>/etc/rc.conf</code></a> 中的选项。如果安装 glibc 版本,编辑 <code>/etc/default/libc-locales</code>,按需取消掉 <a href="installation/guides/../../config/locales.html">locale</a> 前的注释</p>
<p><a href="https://man.voidlinux.org/nvi.1">nvi(1)</a> 在 chroot 中可用,但你此时可能希望安装您喜欢的文本编辑器</p>
<p>对于 glibc 构建,使用以下命令生成语言环境文件: </p>
<pre><code>[xchroot /mnt] # xbps-reconfigure -f glibc-locales
</code></pre>
<h3 id="设置-root-密码"><a class="header" href="#设置-root-密码">设置 Root 密码</a></h3>
<p><a href="installation/guides/../../config/users-and-groups.html">设置至少一个超级用户</a>)。其他用户可以稍后配置,但必须设置一个 root 密码,或是设置一个有 <a href="https://man.voidlinux.org/sudo.8">sudo(8)</a> 权限的新账户。</p>
<p>要设置 root 密码,请运行: </p>
<pre><code>[xchroot /mnt] # passwd
</code></pre>
<h3 id="配置-fstab"><a class="header" href="#配置-fstab">配置 fstab</a></h3>
<p>可以通过拷贝 <code>/proc/mounts</code> 文件,从当前已挂载的文件系统,自动生成 <a href="https://man.voidlinux.org/fstab.5">fstab(5)</a> 文件:</p>
<pre><code>[xchroot /mnt] # cp /proc/mounts /etc/fstab
</code></pre>
<p>删掉 <code>/etc/fstab</code> 中代表 <code>proc</code>、<code>sys</code>、<code>devtmpfs</code>、<code>pts</code> 的行。.</p>
<p>分别用对应的 UUID 代替 <code>fstab</code> 中的 <code>/dev/sdXX</code>、<code>/dev/nvmeXnYpZ</code> 等文件系统名称。UUID 可以通过运行 <a href="https://man.voidlinux.org/blkid.8">blkid(8)</a> 找到。用 UUID 定位文件系统,可以确保系统能找到文件系统;有时,同一个文件系统可能会被赋予不同的名称,比如从 USB 引导启动时,此时就很有必要用 UUID 定位文件系统。有时,除非物理增加或移除硬盘,硬盘总能被被赋予相同的名字,此时就没有必要使用 UUID 定位文件系统。但我们建议在 <code>fstab</code> 中,始终用 UUID 代替文件系统的名称定位文件系统。</p>
<p>配置 <a href="https://man.voidlinux.org/fsck.8">fsck(8)</a> 的行为,把 <code>/</code> 一行末尾的 0 改为 <code>1</code>。把其他行末尾的 0 改为 <code>2</code>。</p>
<p>比如,之前例子中的分区方案会产生这样的 <code>fstab</code>:</p>
<pre><code>/dev/sda1 /boot/efi vfat rw,relatime,[...] 0 0
/dev/sda2 / ext4 rw,relatime 0 0
</code></pre>
<p>用 <code>blkid</code> 输出的信息,修改 <code>/etc/fstab</code> 为:</p>
<pre><code>UUID=6914[...] /boot/efi vfat rw,relatime,[...] 0 2
UUID=dc1b[...] / ext4 rw,relatime 0 1
</code></pre>
<p>注意,<code>/proc/mounts</code> 的输出结果每列之间只有一个空格。为了方便阅读,示例中的文本经过对齐处理。</p>
<p>增加一行,在内存中挂载 <code>/tmp</code></p>
<pre><code>tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
</code></pre>
<p>如果要使用交换空间,增加 swap 分区:</p>
<pre><code>UUID=1cb4[...] swap swap rw,noatime,discard 0 0
</code></pre>
<h2 id="安装-grub"><a class="header" href="#安装-grub">安装 GRUB</a></h2>
<p>用 <a href="https://www.gnu.org/software/grub/manual/grub/html_node/Installing-GRUB-using-grub_002dinstall.html">grub-install</a> 在引导磁盘上安装 GRUB。</p>
<p><strong>在 BIOS 电脑上</strong>,安装软件包 <code>grub</code>。然后运行 <code>grub-install /dev/sdX</code>,<code>/dev/sdX</code> 是你要安装 GRUB 的硬盘(不是分区),例如:</p>
<pre><code>[xchroot /mnt] # xbps-install grub
[xchroot /mnt] # grub-install /dev/sda
</code></pre>
<p><strong>在 UEFI 电脑上</strong>,根据你的架构,安装 <code>grub-x86_64-efi</code> 或 <code>grub-i386-efi</code> 或 <code>grub-arm64-efi</code>,然后运行 <code>grub-install</code>,可以指定一个引导器标签(手动选择引导设备时,你的电脑固件可能会使用这个标签):</p>
<pre><code>[xchroot /mnt] # xbps-install grub-x86_64-efi
[xchroot /mnt] # grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id="Void"
</code></pre>
<h3 id="grub-安装疑难解答"><a class="header" href="#grub-安装疑难解答">GRUB 安装疑难解答</a></h3>
<p>如果不能使用 EFI 变量,执行 <code>grub-install</code> 命令时,增加 <code>--no-nvram</code> 选项。</p>
<h4 id="在可移除介质上安装或不兼容的-uefi-系统"><a class="header" href="#在可移除介质上安装或不兼容的-uefi-系统">在可移除介质上安装或不兼容的 UEFI 系统</a></h4>
<p>并非所有系统都有标准完整的 UEFI 实现。某些情况下,有必要“糊弄”固件,让固件用默认备用地址引导启动。这种情况下,或是在可移除硬盘(比如 USB)上安装系统时,执行 <code>grub-install</code> 命令时,增加 <code>--removable</code> 选项。</p>
<p>另外,用 <a href="https://man.voidlinux.org/mkdir.1">mkdir(1)</a> 创建 <code>/boot/efi/EFI/boot</code> 目录,将安装好的 GRUB 可执行文件拷贝到新创建的目录中,GRUB 可执行文件一般在 <code>/boot/efi/void/grubx64.efi</code>(可执行文件的地址可以用 <a href="https://man.voidlinux.org/efibootmgr.8">efibootmgr(8)</a> 找到):</p>
<pre><code>[xchroot /mnt] # mkdir -p /boot/efi/EFI/boot
[xchroot /mnt] # cp /boot/efi/EFI/Void/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
</code></pre>
<h2 id="善后"><a class="header" href="#善后">善后</a></h2>
<p>用 <a href="https://man.voidlinux.org/xbps-reconfigure.1">xbps-reconfigure(1)</a> 确保所有安装的软件包都正确配置了:</p>
<pre><code>[xchroot /mnt] # xbps-reconfigure -fa
</code></pre>
<p>这会使 <a href="https://man.voidlinux.org/dracut.8">dracut(8)</a> 生成 initramfs,使 GRUB 生成配置。</p>
<p>至此,安装已经完成。退出 chroot 并重启电脑:</p>
<pre><code>[xchroot /mnt] # exit
# umount -R /mnt
# shutdown -r now
</code></pre>
<p>首次引导进入 Void 系统后,<a href="installation/guides/../../xbps/index.html#updating">更新系统</a>。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="全盘加密安装"><a class="header" href="#全盘加密安装">全盘加密安装</a></h1>
<p><strong>警告</strong>: 你的硬盘的信息和其他信息可能不同,所以要确保它是正确的。</p>
<h2 id="分区-1"><a class="header" href="#分区-1">分区</a></h2>
<p>启动 live 镜像并登录</p>
<p>用 <a href="https://man.voidlinux.org/cfdisk">cfdisk</a> 在磁盘上创建一个物理分区,并将其标记为 bootable 。对于一个MBR系统,分区布局应该如下。</p>
<pre><code># fdisk -l /dev/sda
Disk /dev/sda: 48 GiB, 51539607552 bytes, 100663296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x4d532059
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 100663295 100661248 48G 83 Linux
</code></pre>
<p>UEFI 系统将需要磁盘有一个 GPT 磁盘标签和一个 EFI 系统分区。EFI 系统分区方面所需的大小可能因需求而异,但 100M 对大多数情况来说应该是足够的。对于EFI系统,分区布局如下。</p>
<pre><code># fdisk -l /dev/sda
Disk /dev/sda: 48 GiB, 51539607552 bytes, 100663296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: EE4F2A1A-8E7F-48CA-B3D0-BD7A01F6D8A0
Device Start End Sectors Size Type
/dev/sda1 2048 264191 262144 128M EFI System
/dev/sda2 264192 100663262 100399071 47.9G Linux filesystem
</code></pre>
<h2 id="加密卷配置"><a class="header" href="#加密卷配置">加密卷配置</a></h2>
<p><a href="https://man.voidlinux.org/cryptsetup.8">Cryptsetup</a> 默认为 LUKS2 ,但 2.06 之前的 GRUB 版本只支持 LUKS1。</p>
<p>GRUB 只部分支持 LUKS2;具体来讲,只<a href="https://git.savannah.gnu.org/cgit/grub.git/commit/?id=365e0cc3e7e44151c14dd29514c2f870b49f9755">实现</a>了 PBKDF2 的密钥推导功能,,这<em>不是</em> LUKS2 使用的默认 KDF,即 Argon2i(<a href="https://savannah.gnu.org/bugs/?59409">GRUB Bug 59409</a>)。使用Argon2i的LUKS加密分区(以及其他KDF)不能被解密。由于这个原因,本指南只推荐使用LUKS1。</p>
<p>请记住,在EFI系统上,加密的卷将是 <code>/dev/sda2</code> ,因为 <code>/dev/sda1</code> 被EFI分区占用了。</p>
<pre><code># cryptsetup luksFormat --type luks1 /dev/sda1
WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase:
Verify passphrase:
</code></pre>
<p>一旦卷被创建,它就需要打开。用一个合适的名字代替 <code>voidvm</code> 。同样,在EFI系统上加密卷是 <code>/dev/sda2</code>。</p>
<pre><code># cryptsetup luksOpen /dev/sda1 voidvm
Enter passphrase for /dev/sda1:
</code></pre>
<p>一旦 LUKS 容器被打开,使用该分区创建 LVM 卷组。</p>
<pre><code># vgcreate voidvm /dev/mapper/voidvm
Volume group "voidvm" successfully created
</code></pre>
<p>现在应该有名为 <code>voidvm</code> 的空卷组。</p>
<p>接下来,需要为该卷组创建逻辑卷。在这个例子中,我为 <code>/</code> 选择了 10G,为 <code>swap</code> 选择了 2G,并将其余的分配给 <code>/home</code>。</p>
<pre><code># lvcreate --name root -L 10G voidvm
Logical volume "root" created.
# lvcreate --name swap -L 2G voidvm
Logical volume "swap" created.
# lvcreate --name home -l 100%FREE voidvm
Logical volume "home" created.
</code></pre>
<p>接下来,创建文件系统。下面的例子使用 XFS 作为作者的个人偏好。任何由 <a href="https://www.gnu.org/software/grub/manual/grub/grub.html#Features">GRUB 支持的文件系统</a> 的文件系统都可以工作。</p>
<pre><code># mkfs.xfs -L root /dev/voidvm/root
meta-data=/dev/voidvm/root isize=512 agcount=4, agsize=655360 blks
...
# mkfs.xfs -L home /dev/voidvm/home
meta-data=/dev/voidvm/home isize=512 agcount=4, agsize=2359040 blks
...
# mkswap /dev/voidvm/swap
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
</code></pre>
<h2 id="安装系统"><a class="header" href="#安装系统">安装系统</a></h2>
<p>接下来,设置 chroot 并安装基本系统。</p>
<pre><code># mount /dev/voidvm/root /mnt
# mkdir -p /mnt/home
# mount /dev/voidvm/home /mnt/home
</code></pre>
<p>在 UEFI 系统中,EFI 系统分区也需要挂载。</p>
<pre><code># mkfs.vfat /dev/sda1
# mkdir -p /mnt/boot/efi
# mount /dev/sda1 /mnt/boot/efi
</code></pre>
<p>将 RSA 密钥从安装介质复制到目标根目录:</p>
<pre><code># mkdir -p /mnt/var/db/xbps/keys
# cp /var/db/xbps/keys/* /mnt/var/db/xbps/keys/
</code></pre>
<p>在我们进入 chroot 完成配置之前,我们进行实际的安装。不要忘记为你要安装的系统类型使用适当的<a href="installation/guides/../../xbps/repositories/index.html">镜像源 URL</a>。</p>
<pre><code># xbps-install -Sy -R https://repo-default.voidlinux.org/current -r /mnt base-system lvm2 cryptsetup grub
[*] Updating `https://repo-default.voidlinux.org/current/x86_64-repodata' ...
x86_64-repodata: 1661KB [avg rate: 2257KB/s]
130 packages will be downloaded:
...
</code></pre>
<p>UEFI 系统的软件包选择略有不同。UEFI 系统的安装命令将如下。</p>
<pre><code># xbps-install -Sy -R https://repo-default.voidlinux.org/current -r /mnt base-system cryptsetup grub-x86_64-efi lvm2
</code></pre>
<p>完成后,我们可以用 <a href="https://man.voidlinux.org/xchroot.1"><code>xchroot(1)</code></a>(来自 <code>xtools</code>)进入chroot,完成配置。另外,也可以<a href="installation/guides/../../config/containers-and-vms/chroot.html#manual-method">手动 chroot</a>。</p>
<pre><code># xchroot /mnt
[xchroot /mnt] # chown root:root /
[xchroot /mnt] # chmod 755 /
[xchroot /mnt] # passwd root
[xchroot /mnt] # echo voidvm > /etc/hostname
</code></pre>
<p>以及,仅适用于 glibc 系统的配置:</p>
<pre><code>[xchroot /mnt] # echo "LANG=en_US.UTF-8" > /etc/locale.conf
[xchroot /mnt] # echo "en_US.UTF-8 UTF-8" >> /etc/default/libc-locales
[xchroot /mnt] # xbps-reconfigure -f glibc-locales
</code></pre>
<h3 id="文件系统配置"><a class="header" href="#文件系统配置">文件系统配置</a></h3>
<p>下一步是编辑 <code>/etc/fstab</code>,这将取决于你如何配置和命名你的文件系统。在这个例子中,该文件是这样的:</p>
<pre><code># <file system> <dir> <type> <options> <dump> <pass>
tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0
/dev/voidvm/root / xfs defaults 0 0
/dev/voidvm/home /home xfs defaults 0 0
/dev/voidvm/swap swap swap defaults 0 0
</code></pre>
<p>UEFI 系统也有一个 EFI 系统分区的条目。</p>
<pre><code>/dev/sda1 /boot/efi vfat defaults 0 0
</code></pre>
<h3 id="grub-配置"><a class="header" href="#grub-配置">GRUB 配置</a></h3>
<p>接下来,配置 GRUB 以解锁文件系统。 添加以下行到 <code>/etc/default/grub</code>:</p>
<pre><code>GRUB_ENABLE_CRYPTODISK=y
</code></pre>
<p>接下来,需要对内核进行配置以找到加密的设备。首先,找到该设备的 UUID。</p>
<pre><code>[xchroot /mnt] # blkid -o value -s UUID /dev/sda1
135f3c06-26a0-437f-a05e-287b036440a4
</code></pre>
<p>编辑 <code>/etc/default/grub</code> 中的 <code>GRUB_CMDLINE_LINUX_DEFAULT=</code> 行,并在其中加入 <code>rd.lvm.vg=voidvm rd.luks.uuid=<UUID></code>。确保 UUID 与上面 <a href="https://man.voidlinux.org/blkid.8">blkid(8)</a> 命令的输出中发现的 <code>sda1</code> 设备的 UUID 一致。</p>
<h2 id="luks-密钥设置"><a class="header" href="#luks-密钥设置">LUKS 密钥设置</a></h2>
<p>为了避免在启动时输入两次密码,将配置一个密钥,在启动时自动解锁加密的卷。首先,生成一个随机密钥。</p>
<pre><code>[xchroot /mnt] # dd bs=1 count=64 if=/dev/urandom of=/boot/volume.key
64+0 records in
64+0 records out
64 bytes copied, 0.000662757 s, 96.6 kB/s
</code></pre>
<p>接下来,将密钥添加到加密卷中。</p>
<pre><code>[xchroot /mnt] # cryptsetup luksAddKey /dev/sda1 /boot/volume.key
Enter any existing passphrase:
</code></pre>
<p>改变权限以保护生成的密钥。</p>
<pre><code>[xchroot /mnt] # chmod 000 /boot/volume.key
[xchroot /mnt] # chmod -R g-rwx,o-rwx /boot
</code></pre>
<p>这个密钥文件也需要被添加到 <code>/etc/crypttab</code>。同样,在 EFI 系统上这将是 <code>/dev/sda2</code>。</p>
<pre><code>voidvm /dev/sda1 /boot/volume.key luks
</code></pre>
<p>然后需要在 initramfs 中包含密钥文件和 <code>crypttab</code>。在 <code>/etc/dracut.conf.d/10-crypt.conf</code> 创建一个新文件,内容如下:</p>
<pre><code>install_items+=" /boot/volume.key /etc/crypttab "
</code></pre>
<h2 id="完成系统安装"><a class="header" href="#完成系统安装">完成系统安装</a></h2>
<p>接下来,将引导程序安装到磁盘上。</p>
<pre><code>[xchroot /mnt] # grub-install /dev/sda
</code></pre>
<p>确保生成一个 initramfs。</p>
<pre><code>[xchroot /mnt] # xbps-reconfigure -fa
</code></pre>
<p>退出 <code>chroot</code>,卸载文件系统,并重新启动系统。</p>
<pre><code>[xchroot /mnt] # exit
# umount -R /mnt
# reboot
</code></pre>
<div style="break-before: page; page-break-before: always;"></div><h1 id="全盘-zfs"><a class="header" href="#全盘-zfs">全盘 ZFS</a></h1>
<p>因为 Void 的安装程序不支持 ZFS,所以有必要通过 chroot 来安装。除了一些关于引导程序和 initramfs 支持的注意事项外,在 ZFS 根文件系统上安装 Void 与其他高级安装没有明显区别。<a href="https://zfsbootmenu.org">ZFSBootMenu</a> 是一个从头开始设计的引导程序,支持直接从 ZFS 池中启动 Linux 发行版。然而,也可以使用传统的引导程序与ZFS根文件系统。</p>
<h2 id="zfsbootmenu"><a class="header" href="#zfsbootmenu">ZFSBootMenu</a></h2>
<p>尽管它可以启动(并且可以在上面运行)各种各样的发行版,但 ZFSBootMenu 官方认为 Void 是一等的发行版。ZFSBootMenu 支持原生的 ZFS 加密,提供方便的恢复环境,可用于克隆先前的快照或在预启动环境中执行高级操作,并支持从任何可被现代 ZFS 驱动程序导入的池中启动。ZFSBootMenu 文档除其他内容外,还提供了几个从头开始安装 Void 系统的<a href="https://docs.zfsbootmenu.org/en/latest/guides/void-linux.html">步骤指南</a>。<a href="https://docs.zfsbootmenu.org/en/latest/guides/void-linux/uefi.html">UEFI 指南</a>描述了现代系统引导 Void 系统的过程。对于传统的 BIOS 系统,<a href="https://docs.zfsbootmenu.org/en/latest/guides/void-linux/syslinux-mbr.html">syslinux 指南</a>提供了类似的说明。</p>
<h2 id="传统引导程序"><a class="header" href="#传统引导程序">传统引导程序</a></h2>
<p>对于那些希望放弃 ZFSBootMenu 的人来说,可以用另一个引导程序来引导 Void 系统。为了避免不必要的复杂性,使用ZFSBootMenu 以外的引导程序的系统应该计划使用单独的 <code>/boot</code>,它位于ext4或xfs文件系统中。</p>
<h3 id="安装媒介"><a class="header" href="#安装媒介">安装媒介</a></h3>
<p>把 Void 安装到 ZFS 根目录下需要一个带有 ZFS 驱动的安装介质。可以从官方构建自定义镜像 <a href="https://github.com/void-linux/void-mklive">void-mklive</a> 提供命令行选项 <code>-p zfs</code> 到 <code>mklive.sh</code> 脚本。对于 <code>x86_64</code> 系统来说,获取一个预先构建的 <a href="https://github.com/leahneukirchen/hrmpf/releases">hrmpf</a> 镜像可能更方便。这些镜像由 Void 团队成员维护,是标准 Void Live 镜像的扩展,包括预编译的ZFS模块和其他有用的工具。</p>
<h3 id="磁盘分区"><a class="header" href="#磁盘分区">磁盘分区</a></h3>
<p>在启动一个支持ZFS的实时镜像后,对你的<a href="installation/guides/../live-images/partitions.html">磁盘进行分区</a>。分区指南中的注意事项也适用于ZFS安装,除了</p>
<ul>
<li>
<p>引导分区应该被认为是必要的,除非你打算使用 <code>gummiboot</code>,它期望您的 EFI 系统分区将安装在 <code>/boot</code>. (这里不讨论这种替代配置。)</p>
</li>
<li>
<p>除了任何 EFI 系统分区、GRUB BIOS 启动分区、swap 分区或启动分区之外,磁盘的其余部分通常应该是一个类型代码为BF00 的单一分区,该分区将专门用于一个 ZFS 池。在单个磁盘上创建单独的 ZFS 池没有任何好处。</p>
</li>
</ul>
<p>根据需要,使用格式化 EFI 系统分区 <a href="https://man.voidlinux.org/mkfs.vfat.8">mkfs.vfat(8)</a> 和引导分区 使用 <a href="https://man.voidlinux.org/mke2fs.8">mke2fs(8)</a> 或 <a href="https://man.voidlinux.org/mkfs.xfs.8">mkfs.xfs(8)</a> 。 初始化任何 swap 空间 使用 <a href="https://man.voidlinux.org">mkswap(8)</a> 。 </p>
<blockquote>
<p>可以将 Linux 交换空间放在 ZFS zvol 上,尽管在高内存压力下可能会有内核锁死的风险。 本指南 在 zvol 上的交换空间问题上不采取任何立场。 然而,如果你想使用悬浮到磁盘(休眠),注意内核不能从存储在zvol上的内存镜像中恢复。 你需要一个专门的交换分区来使用休眠。除了这个注意事项之外,在使用ZFS根目录时,恢复一个暂停的映像不需要特别的考虑。</p>
</blockquote>
<h3 id="创建-zfs-池"><a class="header" href="#创建-zfs-池">创建 ZFS 池</a></h3>
<p>使用 <a href="https://man.voidlinux.org/zpool.8">zpool(8)</a> 在为其创建的分区上创建一个 ZFS 池 <code>/dev/disk/by-id/wwn-0x5000c500deadbeef-part3</code>:</p>
<pre><code># zpool create -f -o ashift=12 \
-O compression=lz4 \
-O acltype=posixacl \
-O xattr=sa \
-O relatime=on \
-o autotrim=on \
-m none zroot /dev/disk/by-id/wwn-0x5000c500deadbeef-part3
</code></pre>
<p>根据需要调整池(<code>-o</code>)和文件系统(<code>-O</code>)选项,并将分区标识符 <code>wwn-0x5000c500deadbeef-part3</code> 替换为要使用的实际分区的标识符。</p>
<blockquote>
<p>当添加磁盘或分区到 ZFS 池时,一般来说,最好通过在 <code>/dev/disk/by-id</code> 或(在UEFI系统上)<code>/dev/disk/by-partuuid</code> 中创建的符号链接来引用它们。这样,即使磁盘命名在某个时候发生变化,ZFS也会识别正确的分区。使用传统的设备节点如 <code>/dev/sda3</code> 可能会导致间歇性的导入失败。</p>
</blockquote>
<p>接下来,用一个临时的、备用的根路径导出并重新导入池子:</p>
<pre><code># zpool export zroot
# zpool import -N -R /mnt zroot
</code></pre>
<h3 id="创建初始文件系统"><a class="header" href="#创建初始文件系统">创建初始文件系统</a></h3>
<p>ZFS 池上的文件系统布局是灵活的。 但是,通常将操作系统根文件系统(“引导环境”)置于 ROOT 父级下:</p>
<pre><code># zfs create -o mountpoint=none zroot/ROOT
# zfs create -o mountpoint=/ -o canmount=noauto zroot/ROOT/void
</code></pre>
<p>在 <code>mountpoint=/</code> 的文件系统上设置 <code>canmount=noauto</code> 是非常有用的,因为它允许创建多个启动环境(这些环境可能是普通 Void 安装的克隆,也可能包含完全独立的发行版),而不用担心ZFS自动挂载会试图挂载一个而不是另一个。</p>
<p>为了将用户数据与操作系统分开,创建一个文件系统来存储主目录:</p>
<pre><code># zfs create -o mountpoint=/home zroot/home
</code></pre>
<p>可以根据需要创建其他文件系统</p>
<h3 id="挂载-zfs-层次结构"><a class="header" href="#挂载-zfs-层次结构">挂载 ZFS 层次结构</a></h3>
<p>所有的 ZFS 文件系统都应该安装在先前重新导入时建立的 <code>/mnt</code> 备用根目录下。在允许 ZFS 自动挂载其他所有的文件系统之前,先挂载纯手动的根文件系统:</p>
<pre><code># zfs mount zroot/ROOT/void
# zfs mount -a
</code></pre>
<p>在这一点上,整个 ZFS 层次结构应该被挂载并准备好安装。为了提高启动时的导入速度,在一个缓存文件中记录当前的池子配置是很有用的,Void 将使用这个文件来避免走遍整个设备层次结构来识别可导入的池子:</p>
<pre><code># mkdir -p /mnt/etc/zfs
# zpool set cachefile=/mnt/etc/zfs/zpool.cache zroot
</code></pre>
<p>在适当的地方挂载非 ZFS 文件系统。例如,如果 <code>/dev/sda2</code> 持有一个 ext4 文件系统,应该被挂载在<code>/boot</code>,而<code>/dev/sda1</code> 是 EFI 系统分区:</p>
<pre><code># mkdir -p /mnt/boot
# mount /dev/sda2 /mnt/boot
# mkdir -p /mnt/boot/efi
# mount /dev/sda1 /mnnt/boot/efi
</code></pre>
<h3 id="安装-2"><a class="header" href="#安装-2">安装</a></h3>
<p>在这一点上,普通的安装可以从标准 chroot 安装指南的 <a href="https://docs.voidlinux.org/installation/guides/chroot.html#base-installation">"Base Installation"
section</a> 部分进行。然而,在按照 <a href="https://docs.voidlinux.org/installation/guides/chroot.html#finalization">"Finalization" instructions</a> 的说明进行安装之前,要确保已经安装了zfs包,并且dracut被配置可以识别ZFS根文件系统:</p>
<pre><code>[xchroot /mnt] # mkdir -p /etc/dracut.conf.d
[xchroot /mnt] # cat > /etc/dracut.conf.d/zol.conf <<EOF
nofsck="yes"
add_dracutmodules+=" zfs "
omit_dracutmodules+=" btrfs resume "
EOF
[xchroot /mnt] # xbps-install zfs
</code></pre>
<p>最后,按照 "Finalization" instructions 并重新启动进入您的新系统。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="arm-设备"><a class="header" href="#arm-设备">ARM 设备</a></h1>
<p>Void Linux 为几种 ARM 设备提供了软件包和镜像。在这些设备上安装 Void 可以通过几种方式进行:</p>
<ul>
<li>
<p><a href="installation/guides/arm-devices/%E9%A2%84%E6%9E%84%E5%BB%BA%E7%9A%84%E9%95%9C%E5%83%8F">预构建的镜像</a>: 可以直接在 SD 卡或其他存储介质上刷镜像,但它给你的分区布局有限,如果你想增加分区的大小,需要手动扩展。</p>
</li>
<li>
<p><a href="installation/guides/arm-devices/index.html#tarball-%E5%AE%89%E8%A3%85">Tarball 安装</a>: PLATFORMFS 和 ROOTFS tarballs,可以提取到先前准备好的分区方案。</p>
</li>
<li>
<p><a href="installation/guides/arm-devices/index.html#chroot-%E5%AE%89%E8%A3%85">Chroot 安装</a>: 遵循 <a href="https://docs.voidlinux.org/installation/guides/chroot.html">chroot 指南</a>中概述的大部分步骤。</p>
</li>
</ul>
<p>本指南还概述了主要针对此类设备的<a href="installation/guides/arm-devices/index.html#%E9%85%8D%E7%BD%AE">配置步骤</a>。</p>
<p>由于本指南中的大多数命令将在外部存储上运行,因此在移除设备之前运行 <a href="https://man.voidlinux.org/sync.1">sync(1)</a> 是很重要的。</p>
<h2 id="安装-3"><a class="header" href="#安装-3">安装</a></h2>
<p>如果你要在 "<a href="installation/guides/arm-devices/./platforms.html">支持的平台</a>" 页面中所涉及的 ARM 设备上安装 Void Linux,请确保彻底阅读其部分。</p>
<h3 id="预构建的镜像"><a class="header" href="#预构建的镜像">预构建的镜像</a></h3>
<p>在<a href="installation/guides/arm-devices/../../index.html">下载并验证镜像</a>后,可以用 <a href="https://man.voidlinux.org/cat.1">cat(1)</a> 、<a href="https://man.voidlinux.org/pv.1">pv(1)</a> 或 <a href="https://man.voidlinux.org/dd.1">dd(1)</a> 将其写入相关的媒体。例如,将其闪存到位于 <code>/dev/mmcblk0</code> 的SD卡上。</p>
<pre><code># dd if=<image>.img of=/dev/mmcblk0 bs=4M status=progress
</code></pre>
<h3 id="自定义分区布置"><a class="header" href="#自定义分区布置">自定义分区布置</a></h3>
<p>定制安装 -- 例如,定制分区布局 -- 需要一个更复杂的过程。两个可用的选项是:</p>
<ul>
<li><a href="installation/guides/arm-devices/index.html#tarball-%E5%AE%89%E8%A3%85">Tarball 安装</a>; 和</li>
<li><a href="installation/guides/arm-devices/index.html#chroot-%E5%AE%89%E8%A3%85">Chroot 安装</a>.</li>
</ul>
<p>要为这些安装方法准备存储,需要对存储介质进行分区,然后将分区挂载到正确的挂载点。</p>
<p>ARM 设备的常用分区方案需要至少两个分区,在使用 MS-DOS 分区表格式化的驱动器上:</p>
<ul>
<li>一个格式化为 <code>FAT32</code>,分区类型为 <code>0c</code>,将挂载在 <code>/boot</code>;</li>
<li>一个可以被格式化为任何 Linux 可以启动的文件系统,例如 ext4,它将被挂载到 <code>/</code> 。如果你使用的是 SD 卡,你可以用 <code>^has_journal</code> 选项创建 ext4 文件系统 - 这可以禁用日志,这可能会增加硬盘的寿命,但代价是数据丢失的可能性更高。</li>
</ul>
<p>有各种各样的工具可用于分区,比如
<a href="https://man.voidlinux.org/cfdisk.8">cfdisk(8)</a>.</p>
<p>为了访问新创建的文件系统,有必要对其进行挂载。本指南假定第二个分区将被挂载在 <code>/mnt</code> 上,但你也可以把它挂载在其他地方。要挂载这些文件系统,你可以使用下面的命令,将设备名称替换为适合你的设置的名称:</p>
<pre><code># mount /dev/mmcblk0p2 /mnt
# mkdir /mnt/boot
# mount /dev/mmcblk0p1 /mnt/boot
</code></pre>
<h4 id="tarball-安装"><a class="header" href="#tarball-安装">Tarball 安装</a></h4>
<p>首先,为你想要的平台<a href="installation/guides/arm-devices/../../index.html">下载并验证</a> PLATFORMFS 或 ROOTFS tarball,并准备好你的存储介质。然后,使用 <a href="https://man.voidlinux.org/tar.1">tar(1)</a> 将 tarball 解压到文件系统中:</p>
<pre><code># tar xvfp <image>.tar.xz -C /mnt
</code></pre>
<h4 id="chroot-安装"><a class="header" href="#chroot-安装">Chroot 安装</a></h4>
<p>也可以进行 chroot 安装,如果使用的是不兼容的架构(如 i686)的计算机,这可能需要 <code>qemu-user-static</code> 软件包与 <code>binfmt-support</code> 或 <code>proot</code> 软件包一起进行。本指南解释了如何使用 <code>qemu-<platform>-static</code> 程序和<a href="https://man.voidlinux.org/proot.1">proot(1)</a> 的 <code>qemu-user-static</code>。</p>
<p>首先,准备好你的存储介质。然后,按照 XBPS chroot 安装或 ROOTFS chroot 安装步骤,使用适当的架构和基础包,其中一些在 "<a href="installation/guides/arm-devices/./platforms.html">支持的平台</a>" 部分列出。</p>
<p>最后,按照 <a href="installation/guides/arm-devices/../chroot.html#%E9%85%8D%E7%BD%AE">chroot 配置步骤</a>进行操作,但不要使用 <a href="https://man.voidlinux.org/chroot.1">chroot(1)</a> 命令<a href="installation/guides/arm-devices/../chroot.html#%E8%BF%9B%E5%85%A5-chroot">进入 chroot</a>,而是使用下面的命令,对于 armv6l 和 armv7l 设备,将 <code><platform></code> 替换为 <code>arm</code> ,对于 aarch64 设备,替换为<code>aarch64</code>。</p>
<pre><code># proot -q qemu-<platform>-static -r /mnt -w /
</code></pre>
<h2 id="配置-1"><a class="header" href="#配置-1">配置</a></h2>
<p>需要遵循一些额外的配置步骤,以保证系统的工作。配置一个<a href="installation/guides/arm-devices/../../../config/graphical-session/index.html">图形 session</a>应该正常工作。</p>
<h3 id="登录"><a class="header" href="#登录">登录</a></h3>
<p>对于预先建立的镜像和 tarball 安装,<code>root</code> 用户密码是 <code>voidlinux</code> 。</p>
<h3 id="fstab"><a class="header" href="#fstab">fstab</a></h3>
<p><code>/boot</code> 分区应该被添加到 <code>/etc/fstab</code> 中,并有一个类似于下面的条目。没有这个条目也可以启动,但是在这种情况下更新内核包可能会导致故障,比如无法找到内核模块,而这些模块对于无线连接等功能是必不可少的。如果你没有使用SD卡,用适当的设备路径替换 <code>/dev/mmcblk0p1</code>。</p>
<pre><code>/dev/mmcblk0p1 /boot vfat defaults 0 0
</code></pre>
<h3 id="系统时间"><a class="header" href="#系统时间">系统时间</a></h3>
<p>Void Linux 支持的一些 ARM 设备没有电池供电的实时时钟(RTC),这意味着一旦断电,它们将无法跟踪时间。在浏览网页或使用软件包管理器时,这个问题可能表现为 HTTPS 错误。可以使用 <a href="https://man.voidlinux.org/date.1">date(1)</a> 工具手动设置时间。为了在以后的启动中解决这个问题,请安装并启用一个 <a href="installation/guides/arm-devices/../../../config/date-time.html#ntp">NTP 客户端</a>。此外,还可以安装 <code>fake-hwclock</code> 软件包,它提供了 <code>fake-hwclock</code> 服务。<a href="https://man.voidlinux.org/fake-hwclock.8">fake-hwclock(8)</a> 定期在配置文件中存储当前时间,并在启动时恢复它,从而导致对当前时间更好的初始近似,即使没有网络连接。</p>
<p><strong>警告</strong>: 2020-03-16 之前的镜像可能有一个问题,即默认的 NTP 守护程序 <code>chrony</code> 包的安装不完整,系统将缺少<code>chrony</code> 用户。这可以从 <a href="https://man.voidlinux.org/getent.1">getent(1)</a> 命令的输出中检查出来,如果它不存在,将是空的。</p>
<pre><code>$ getent group chrony
chrony:x:997
</code></pre>
<p>为了解决这个问题,有必要重新配置 <code>chrony</code> 包装使用
<a href="https://man.voidlinux.org/xbps-reconfigure">xbps-reconfigure(1)</a>.</p>
<h3 id="图形-session"><a class="header" href="#图形-session">图形 session</a></h3>
<p><code>xf86-video-fbturbo</code> 软件包提供了 <code>xf86-video-fbdev</code> 软件包中的 <a href="installation/guides/arm-devices/../../../config/graphical-session/xorg.html#ddx">DDX Xorg 驱动程序</a>的修改版本,该版本针对 ARM 设备进行了优化。这可以用于那些缺乏更多特定驱动程序的设备。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="所支持的平台"><a class="header" href="#所支持的平台">所支持的平台</a></h1>
<h2 id="树莓派"><a class="header" href="#树莓派">树莓派</a></h2>
<p>所有 Raspberry Pi 变种的 <code>rpi-kernel</code> 包都是由 Raspberry Pi 基金会的内核树构建的,它应该可以实现所有主线内核所没有的特殊功能。RPi 内核包也有自己的头文件包,<code>rpi-kernel-headers</code> 。如果你想使用任何 DKMS 包,就应该安装这些包。Void 提供的 <code>rpi-base</code> 元包可以安装相关的 <code>rpi-kernel</code> 和 <code>rpi-firmware</code> 包。这些包一起实现了 Wi-Fi 和蓝牙功能。</p>
<p>传递给内核的 <a href="installation/guides/arm-devices/../../../config/kernel.html#cmdline">command line</a> 参数在 <code>rootfs/boot/cmdline.txt</code> 文件中。一些相关的参数在<a href="https://www.raspberrypi.org/documentation/configuration/cmdline-txt.md">官方文档</a>中有所记载。</p>
<h3 id="支持的机型"><a class="header" href="#支持的机型">支持的机型</a></h3>
<div class="table-wrapper"><table><thead><tr><th>机型</th><th>架构</th></tr></thead><tbody>
<tr><td>1 A, 1 B, 1 A+, 1 B+, Zero, Zero W, Zero WH</td><td>armv6l</td></tr>
<tr><td>2 B</td><td>armv7l</td></tr>
<tr><td>3 B, 3 A+, 3 B+, Zero 2W, 4 B, 400</td><td>aarch64</td></tr>
</tbody></table>
</div>
<blockquote>
<p>可以在 RPi 3 上运行 armv7l 图像,因为 RPi 3 的 CPU 同时支持 Armv8 和 Armv7 指令集。这些图像的区别在于,armv7l 图像提供了一个32位系统,而 arch64 图像提供了一个 64 位系统。</p>
</blockquote>
<h3 id="启用硬件-rng-设备"><a class="header" href="#启用硬件-rng-设备">启用硬件 RNG 设备</a></h3>
<p>默认情况下,<a href="https://en.wikipedia.org/wiki/Hardware_random_number_generator">HWRNG</a> 设备不被系统使用,which may result in the random devices taking long to seed on boot。如果你想启动 sshd 并期望能够立即连接,这可能会很烦人。</p>
<p>为了解决这个问题,请安装 <code>rng-tools</code> 软件包,并<a href="installation/guides/arm-devices/../../../config/services/index.html#enabling-services">启用</a> <code>rngd</code> 服务,它使用 <code>/dev/hwrng</code> 设备作为 <code>/dev/random</code> 的 seed。</p>
<h3 id="图形-session-1"><a class="header" href="#图形-session-1">图形 session</a></h3>
<p><code>mesa-dri</code> 软件包包含了所有 Raspberry Pi 变种的驱动,可以与 <a href="installation/guides/arm-devices/../../../config/graphical-session/xorg.html#modesetting">modesetting Xorg
driver</a> 驱动或 <a href="installation/guides/arm-devices/../../../config/graphical-session/wayland.html">Wayland</a> 一起使用。</p>
<h3 id="硬件"><a class="header" href="#硬件">硬件</a></h3>
<p>更多配置信息可以在 Raspberry Pi 基金会的<a href="https://www.raspberrypi.org/documentation/configuration/">官方文档</a>中找到。<code>raspi-config</code> 工具不适用于 Void Linux,所以通常需要编辑 <code>/boot/config.txt</code> 文件。</p>
<h4 id="声音"><a class="header" href="#声音">声音</a></h4>
<p>要启用声音,请添加 <code>dtparam=audio=on</code> 到 <code>/boot/config.txt</code>. </p>
<h4 id="串口"><a class="header" href="#串口">串口</a></h4>
<p>要启用串口控制台登录,请<a href="installation/guides/arm-devices/../../../config/services/index.html">启用</a> <code>agetty-ttyAMA0</code> 服务。关于允许 root 登录的接口,见 <a href="https://man.voidlinux.org/securetty.5">securetty(5)</a>。关于启动时串口的配置,参考 <code>/boot/cmdline.txt</code> 中的内核命令行 - 特别是 <code>console=ttyAMA0,115200</code> 参数。</p>
<h3 id="i2c"><a class="header" href="#i2c">I2C</a></h3>
<p>为了启用 <a href="https://en.wikipedia.org/wiki/I%C2%B2C">I2C</a> ,在 <code>/boot/config.txt</code> 中加入<code>device_tree_param=i2c_arm=on</code>,在 <code>/boot/cmdline.txt</code> 中加入 <code>bcm2708.vc_i2c_override=1</code> 。然后创建一个 <a href="https://man.voidlinux.org/modules-load.8">modules-load(8)</a> <code>.conf</code> 文件,内容如下:</p>
<pre><code>i2c-dev
</code></pre>
<p>最后,安装 <code>i2c-tools</code> 包并使用 <a href="https://man.voidlinux.org/i2cdetect.8">i2cdetect(8)</a> 来验证你的配置。它应该显示:</p>
<pre><code>$ i2cdetect -l
i2c-1i2c bcm2835 I2C adapter I2C adapter
</code></pre>
<h3 id="内存-cgroup"><a class="header" href="#内存-cgroup">内存 cgroup</a></h3>
<p><code>rpi-kernel</code> 软件包的内核<a href="https://github.com/raspberrypi/linux/commit/9b0efcc1ec497b2985c6aaa60cd97f0d2d96d203#diff-f1d702fa7c504a2b38b30ce6bb098744">默认禁用了内存 cgroup</a>。</p>
<p>这破坏了使用容器的工作负载。因此,如果你想在 Raspberry Pi 上使用容器,你需要在 <code>/boot/cmdline.txt</code> 中加入<code>cgroup_enable=memory</code> 来启用内存 cgroups 。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="musl"><a class="header" href="#musl">musl</a></h1>
<p><a href="https://musl.libc.org/">musl</a> 是一个致力于轻量、快速、简单、准确的 libc 实现。</p>
<p>Void 官方支持 musl,所有目标平台(除了 i686 的二进制包)都有使用 musl 的版本。另外,所有官方仓库中的兼容软件包不但有 glibc 的版本,还有 musl 链接的二进制文件。</p>
<p>目前,我们提供 musl 的 nonfree 和 debug 子仓库,但不提供 multilib 子仓库。</p>
<h2 id="不兼容的软件"><a class="header" href="#不兼容的软件">不兼容的软件</a></h2>
<p>musl 对标准的兼容克制而有限,许多常用的平台特定的扩展都没有实现,因此,许多软件需要修改才能编译或正常运行。Void 开发者们会为这些软件打增强可移植性 / 正确性的补丁,希望这些补丁能被软件上游接受。</p>
<p>专有软件往往只支持 glibc 系统,部分专有软件可以通过 <a href="installation/../config/external-applications.html#flatpak">flatpak</a> 在 musl 系统上运行。具体而言,<a href="installation/../config/graphical-session/graphics-drivers/nvidia.html">NVIDIA 的私有驱动</a>不支持 musl,评估硬件兼容性时应该考虑到这一点。</p>
<h3 id="glibc-chroot"><a class="header" href="#glibc-chroot">glibc chroot</a></h3>
<p>要求 glibc 的软件可以在 glibc <a href="installation/../config/containers-and-vms/chroot.html">chroot</a> 中运行。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="配置-2"><a class="header" href="#配置-2">配置</a></h1>
<p>本章及其子章节提供有关配置 Void 系统的信息。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="软件包文档"><a class="header" href="#软件包文档">软件包文档</a></h1>
<p>Void Linux 中最常见的文档形式是 <a href="config/package-documentation/./man.html">man 手册页</a>。</p>
<p>许多软件包提供其他格式的文档,比如 HTML。这些文档一般可以在 <code>/usr/share/doc/<package></code> 目录下找到。</p>
<p>大型的文档可能会被分割为单独的 <code>*-doc</code> 软件包,比如 <code>julia-doc</code>,这在编程语言、数据和大型的软件库中很常见。</p>
<p>除了上游提供的文档,软件包还可能携带由打包者贡献的、针对 Void 的文档,这些文档会被放在 <code>/usr/share/doc/<package>/README.voidlinux</code>。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="手册页"><a class="header" href="#手册页">手册页</a></h1>
<p>许多 Void 软件包都提供了手册('man')页。<code>mdocml</code> 软件包包含了 <a href="https://mandoc.bsd.lv/">mandoc</a> Man 手册页工具组。</p>
<p>用 <a href="https://man.voidlinux.org/man.1">man(1)</a> 命令显示手册页:</p>
<pre><code>$ man chroot
</code></pre>
<p>手册页都隶属于下面这些<em>章节</em>:</p>
<ol>
<li>用户命令(程序)</li>
<li>系统调用</li>
<li>库调用</li>
<li>特殊文件(设备)</li>
<li>文件格式与配置文件</li>
<li>游戏</li>
<li>概览、惯例以及杂项</li>
<li>系统管理命令</li>
</ol>
<p>详情参见 <a href="https://man.voidlinux.org/man-pages.7">man-pages(7)</a>。</p>
<p>有些内容不同的手册页拥有相同的名字,它们属于不同的章节。你可以在执行 <code>man</code> 时指定章节:</p>
<pre><code>$ man 1 printf
</code></pre>
<p>用 <a href="https://man.voidlinux.org/man.conf.5">man.conf(5)</a> 配置 <code>man</code>。</p>
<p><code>mandoc</code> 工具组包含了用来搜索手册页的 <a href="https://man.voidlinux.org/apropos.1">apropos(1)</a>。可以用 <a href="https://man.voidlinux.org/makewhatis.8">makewhatis(8)</a> 命令来生成和更新 <code>apropos</code> 的数据库:</p>
<pre><code># makewhatis
$ apropos chroot
chroot(1) - run command or interactive shell with special root directory
xbps-uchroot(1) - XBPS utility to chroot and bind mount with Linux namespaces
xbps-uunshare(1) - XBPS utility to chroot and bind mount with Linux user namespaces
chroot(2) - change root directory
</code></pre>
<p><code>mdocml</code> 软件包提供了每天更新 <code>apropos</code> 数据库的 cron 任务:<code>/etc/cron.daily/makewhatis</code>。要使用这个功能,你需要安装并启用 <a href="config/package-documentation/../cron.html">cron 守护进程</a> 。</p>
<p>Void 默认不会安装开发与 POSIX 手册,但可以通过 <code>man-pages-devel</code> 与 <code>man-pages-posix</code> 软件包获得这些手册。</p>
<h2 id="本地化手册页"><a class="header" href="#本地化手册页">本地化手册页</a></h2>
<p><code>manpages-*</code> 软件包们提供了本地化的 Man 手册页,但使用这些 Man 手册页可能需要一些额外的配置。</p>
<h3 id="用-mdocml"><a class="header" href="#用-mdocml">用 mdocml</a></h3>
<p>如果使用了 <code>mdocml</code>,且设置应该应用于所有用户,那么必须将相关的路径添加到 <a href="https://man.voidlinux.org/man.conf.5">man.conf(5)</a>。例如,德语使用者会把这两行加入配置文件:</p>
<pre><code>/usr/share/man/de
/usr/share/man/de.UTF-8
</code></pre>
<p>另外,各用户可以导出 <code>MANPATH</code> 变量到自己的环境中,详见 <a href="https://man.voidlinux.org/man.1">man(1)</a>。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="驱动"><a class="header" href="#驱动">驱动</a></h1>
<p>Void 在软件库中提供了一些固件包。有些固件只有在你启用了 <a href="config/../xbps/repositories/index.html#nonfree">nonfree</a> 软件库后才能使用。</p>
<h2 id="微码"><a class="header" href="#微码">微码</a></h2>
<p>微码在启动时由 BIOS 加载到 CPU 或 GPU 上,但以后可以由操作系统本身替换。微码的更新可以使 CPU 或 GPU 的行为被修改,以解决某些尚未发现的错误,而不需要更换硬件。</p>
<h3 id="intel"><a class="header" href="#intel">Intel</a></h3>
<p>安装英特尔微代码包,<code>intel-ucode</code>。这个包在非自由软件库中,必须<a href="config/../xbps/repositories/index.html">启用</a>它。安装这个包后,有必要重新生成你的 <a href="config/./kernel.html#kernel-hooks">initramfs</a>。对于后续的更新,微代码将被自动添加到 initramfs 中。</p>
<h3 id="amd"><a class="header" href="#amd">AMD</a></h3>
<p>安装 AMD 软件包,<code>linux-firmware-amd</code>,其中包含 AMD CPU 和 GPU 的微码。AMD CPU 和 GPU 将自动加载微码,不需要进一步配置</p>
<h3 id="确认"><a class="header" href="#确认">确认</a></h3>
<p><code>/proc/cpuinfo</code> 文件在微码下有一些信息,可以用来验证微码的更新。</p>
<h2 id="删除驱动"><a class="header" href="#删除驱动">删除驱动</a></h2>
<p>默认情况下,<code>linuxX.Y</code> 包和 <code>base-system</code> 包会安装一些固件包。没有必要删除未使用的固件包,但如果你想这样做,你可以配置 XBPS 来<a href="config/../xbps/advanced-usage.html#ignoring-packages">忽略</a>这些包,然后删除它们。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="本地化与翻译"><a class="header" href="#本地化与翻译">本地化与翻译</a></h1>
<p>要获取当前启用的语言环境列表,请运行 </p>
<pre><code>$ locale -a
</code></pre>
<h2 id="启用语言环境"><a class="header" href="#启用语言环境">启用语言环境</a></h2>
<p>要启用某个地区性语言,请取消注释或在以下文件中添加相关行
<code>/etc/default/libc-locales</code>和<a href="config/../xbps/index.html">强制重新配置</a>的相关行。
<code>glibc-locales</code>包。</p>
<h2 id="设置系统语言环境"><a class="header" href="#设置系统语言环境">设置系统语言环境</a></h2>
<p>在 <code>/etc/locale.conf</code> 中写 <code>LANG=xxxx</code></p>
<h2 id="应用程序语言环境"><a class="header" href="#应用程序语言环境">应用程序语言环境</a></h2>
<p>一些程序的翻译在一个单独的软件包中,必须安装才能使用它们。你可以在软件包库中<a href="config/../xbps/index.html">搜索</a>所需的语言(如 "德语 "或 "葡萄牙语"),并安装与你使用的应用程序相关的软件包。一个特别相关的情况是在安装 LibreOffice 套件中的单个软件包时,例如 <code>libreoffic-writer</code> ,它需要安装至少一个 <code>libreoffic-i18n-*</code> 软件包才能正常工作。在安装 <code>libreoffice</code> 元包时,会自动安装翻译包。</p>
<div style="break-before: page; page-break-before: always;"></div><h1 id="用户和用户组"><a class="header" href="#用户和用户组">用户和用户组</a></h1>
<p><a href="https://man.voidlinux.org/useradd.8">useradd(8)</a>, <a href="https://man.voidlinux.org/userdel.8">userdel(8)</a> 和 <a href="https://man.voidlinux.org/usermod.8">usermod(8)</a> 命令分别用来添加、删除和修改用户。passwd(1)命令用来修改密码。</p>
<p><a href="https://man.voidlinux.org/groupadd.8">groupadd(8)</a> 、 <a href="https://man.voidlinux.org/groupdel.8">groupdel(8)</a> 和 <a href="https://man.voidlinux.org/groupmod.8">groupmod(8)</a> 命令分别用来添加、删除和修改组。<a href="https://man.voidlinux.org/groups.1">groups(1)</a> 命令列出一个用户所属的所有组。</p>
<h2 id="默认-shell"><a class="header" href="#默认-shell">默认 shell</a></h2>
<p>用户的默认shell可以用 <a href="https://man.voidlinux.org/chsh.1">chsh(1)</a> 来更改。</p>
<pre><code>$ chsh -s <shell> <user_name>
</code></pre>
<p><code><shell></code> 必须是指定的 shell 的路径 <code>/etc/shells</code> 或者输出 <code>chsh -l</code>,它提供了已安装 shell 的列表。</p>
<h2 id="sudo"><a class="header" href="#sudo">sudo</a></h2>
<p><a href="https://man.voidlinux.org/sudo.8">sudo(8)</a> 是默认安装的。但可能没有根据您的需要进行适当配置。如果你想使用它,请配置 sudo。。</p>
<p>以 root 身份使用 <a href="https://man.voidlinux.org/visudo.8">visudo(8)</a> 来编辑 <a href="https://man.voidlinux.org/sudoers.5">sudoers(5)</a> 文件。</p>
<p>请取消注释该行</p>
<pre><code>#%wheel ALL=(ALL) ALL
</code></pre>
<p>然后将用户添加到 <code>wheel</code> 用户组.</p>
<h2 id="默认用户组"><a class="header" href="#默认用户组">默认用户组</a></h2>
<p>Void Linux 默认定义的一些组</p>
<div class="table-wrapper"><table><thead><tr><th>Group</th><th>Description</th></tr></thead><tbody>
<tr><td><code>root</code></td><td>Complete access to the system.</td></tr>
<tr><td><code>bin</code></td><td>Unused - present for historical reasons.</td></tr>
<tr><td><code>sys</code></td><td>Unused - present for historical reasons.</td></tr>
<tr><td><code>kmem</code></td><td>Ability to read from <code>/dev/mem</code> and <code>/dev/port</code>.</td></tr>
<tr><td><code>wheel</code></td><td>Elevated privileges for specific system administration tasks.</td></tr>
<tr><td><code>tty</code></td><td>Access to TTY-like devices:</td></tr>
<tr><td></td><td><code>/dev/tty*</code>, <code>/dev/pts*</code>, <code>/dev/vcs*</code>.</td></tr>
<tr><td><code>tape</code></td><td>Access to tape devices.</td></tr>
<tr><td><code>daemon</code></td><td>System daemons that need to write to files on disk.</td></tr>
<tr><td><code>floppy</code></td><td>Access to floppy drives.</td></tr>
<tr><td><code>disk</code></td><td>Raw access to <code>/dev/sd*</code> and <code>/dev/loop*</code>.</td></tr>
<tr><td><code>lp</code></td><td>Access to printers.</td></tr>
<tr><td><code>dialout</code></td><td>Access to serial ports.</td></tr>
<tr><td><code>audio</code></td><td>Access to audio devices.</td></tr>
<tr><td><code>video</code></td><td>Access to video devices.</td></tr>
<tr><td><code>utmp</code></td><td>Ability to write to <code>/var/run/utmp</code>, <code>/var/log/wtmp</code></td></tr>
<tr><td></td><td>and <code>/var/log/btmp</code>.</td></tr>
<tr><td><code>adm</code></td><td>Unused - present for historical reasons. This group was</td></tr>
<tr><td></td><td>traditionally used for system monitoring, such as viewing</td></tr>
<tr><td></td><td>files in <code>/var/log</code>.</td></tr>
<tr><td><code>cdrom</code></td><td>Access to CD devices.</td></tr>
<tr><td><code>optical</code></td><td>Access to DVD/CD-RW devices.</td></tr>
<tr><td><code>mail</code></td><td>Used by some mail packages, e.g. <code>dma</code>.</td></tr>
<tr><td><code>storage</code></td><td>Access to removable storage devices.</td></tr>
<tr><td><code>scanner</code></td><td>Ability to access scanners.</td></tr>
<tr><td><code>network</code></td><td>Unused - present for historical reasons.</td></tr>
<tr><td><code>kvm</code></td><td>Ability to use KVM for virtual machines, e.g. via QEMU.</td></tr>
<tr><td><code>input</code></td><td>Access to input devices: <code>/dev/mouse*</code>, <code>/dev/event*</code>.</td></tr>
<tr><td><code>plugdev</code></td><td>Access to pluggable devices.</td></tr>
<tr><td><code>nogroup</code></td><td>System daemons that don't need to own any files.</td></tr>
<tr><td><code>usbmon</code></td><td>Access to <code>/dev/usbmon*</code>.</td></tr>
<tr><td><code>users</code></td><td>Ordinary users.</td></tr>
<tr><td><code>xbuilder</code></td><td>To use xbps-uchroot(1) with <code>xbps-src</code>.</td></tr>
</tbody></table>
</div><div style="break-before: page; page-break-before: always;"></div><h1 id="服务和守护进程---runit"><a class="header" href="#服务和守护进程---runit">服务和守护进程 - runit</a></h1>
<p>Void 使用 <a href="https://man.voidlinux.org/runit.8">runit(8)</a> 监督组件来运行系统服务和守护程序。</p>
<p>使用 runit 的一些优势包括:</p>
<ul>
<li>一个小的基础代码,可以更容易地审计错误和安全问题。 </li>
<li>每个服务都被赋予一个干净的进程状态,无论该服务是如何启动或重启:它将以相同的环境、资源限制、开放的文件描述符和控制终端启动。</li>
<li>可靠的服务日志记录工具,只要相关的服务在运行并写入日志,日志服务就会保持运行。</li>
</ul>
<p>如果你不需要一个程序持续运行,但希望它定期运行,你可以考虑使用 <a href="config/services/../cron.html">cron daemon</a></p>
<h2 id="章节内容-1"><a class="header" href="#章节内容-1">章节内容</a></h2>
<ul>
<li><a href="config/services/./user-services.html">每个用户的服务</a></li>
<li><a href="config/services/./logging.html">日志</a></li>
</ul>
<h2 id="服务目录"><a class="header" href="#服务目录">服务目录</a></h2>
<p>每个由 runit 管理的服务都有一个相关的<em>服务目录</em>。</p>
<p>一个服务目录只需要一个文件:一个名为 <code>run</code> 的可执行文件,这是希望在前台执行一个进程。</p>
<p>可选的,一个服务目录可以包含:</p>
<ul>
<li>一个名为 <code>check</code> 的可执行文件,它将被运行以检查服务是否启动和可用;如果 <code>check</code> 退出时为0,则认为它是可用的。</li>
<li>一个名为 <code>finish</code> 的可执行文件,它将在关机/进程停止时运行。</li>
<li>一个 <code>conf</code> 文件;它可以包含环境变量,并在 <code>run</code> 被引用。</li>
<li>一个名为的目录 <code>log</code>; pipe 将从 <code>run</code> 服务目录中的进程到输入的 <code>run</code> 过程中 <code>log</code> 目录。 </li>
</ul>
<p>当一个新的服务被创建时,在第一次运行时将会自动创建一个 <code>supervise</code> 文件夹。</p>
<h3 id="配置服务"><a class="header" href="#配置服务">配置服务</a></h3>
<p>大多数服务可以接受由服务目录中的 <code>conf</code> 文件设置的配置选项。这允许在不修改相关软件包提供的服务目录的情况下对服务进行定制。</p>
<p>检查服务文件以了解如何传递配置参数。少数服务在其 <code>conf</code> 文件中有一个 <code>OPTS="--value ..."</code> 这样的字段。</p>
<p>要进行更复杂的定制,你应该<a href="config/services/index.html#%E7%BC%96%E8%BE%91%E6%9C%8D%E5%8A%A1">编辑该服务</a>。</p>
<h3 id="编辑服务"><a class="header" href="#编辑服务">编辑服务</a></h3>
<p>要编辑一个服务,首先要将其服务目录复制到一个不同的目录名下。否则, <a href="https://man.voidlinux.org/xbps-install.1">xbps-install(1)</a> 会覆盖服务目录。然后,根据需要编辑新的服务文件。最后,旧的服务应该被停止和禁用,而新的服务应该被启动。</p>
<h2 id="管理服务"><a class="header" href="#管理服务">管理服务</a></h2>
<h3 id="runsvdirs"><a class="header" href="#runsvdirs">Runsvdirs</a></h3>
<p><strong>runsvdir</strong> 是 <code>/etc/runit/runsvdir</code> 中的一个目录,它包含了以服务目录符号链接形式出现的启用的服务。在一个运行中的系统中,当前的 runsvdir 可以通过 <code>/var/service</code> 符号链接访问。</p>
<p><code>runit-void</code> 软件包带有两个 <code>runtvdirs</code> ,<code>single</code>和 <code>default</code>:</p>
<ul>
<li>
<p><code>single</code> 只是运行 <a href="https://man.voidlinux.org/sulogin.8">sulogin(8)</a>和 the