AOSC OS 安装记录(AMD64 架构)

Author Avatar
Bobby Rong 2月 13, 2018
  • 在其它设备中阅读本文章

真的只是为了记录一下安装和配置的过程而已。不过值得我去记录的发行版其实也不是很多吧,毕竟每周总有那么个六七天想过把装机瘾。

请注意:本文章写于 2018 年 2 月 13 日,此时 AMD64 架构的 Tarballs 版本号为 20180128。文章所提供命令并不一定适用于目前 AOSC OS 的 Tarballs 和软件仓库。本文在编写时参考了:AOSC 官方维基,并对新 Tarball 的变动做了相应的调整。

安装准备

快速适应:玄学转换法

本节只适合 Windows 用户阅读。本节完全为“经验之谈”,内容极其不严谨,甚至在某些情况下是错误的,但是能帮助新手快速入门。

接下来,你会发现所有的分区名称并不是你熟悉的“盘符”,而是类似于 sdxy 那样的东西,此时有一个很简易的转换方法,假设你只有一个硬盘:

情形 Linux
C:\ sda1
D:\ sda2

磁盘名称同理,仍假设你只有一个硬盘:

情形 Linux
本地磁盘 sda
插入的第一只 U 盘 sdb
插入的第二只 U 盘 sdc

快速适应:Nano 用法

只需按照 Nano 给出的提示操作即可:

1
2
^G Get Help       ^O Write Out      ^W Where Is       ^K Cut Text       ^J Justify        ^C Cur Pos        M-U Undo          M-A Mark Text     M-] To Bracket    M-▲ Previous      ^B Back           ^◀ Prev Word      ^A Home           ^P Prev Line      M-- Scroll Up
^X Exit ^R Read File ^\ Replace ^U Uncut Text ^T To Spell ^_ Go To Line M-E Redo M-6 Copy Text M-W WhereIs Next M-▼ Next ^F Forward ^▶ Next Word ^E End ^N Next Line M-+ Scroll Down

提前分区

如果你不打算全盘安装,强烈建议提前进行分区。有关分区的介绍和要求请往后翻阅。下面介绍两个常用的图形化分区工具。

Windows

PowerQuest Partition Magic 是老牌的硬盘分区管理工具。Partition Magic 可以说是目前硬盘分区管理工具中最好的,其最大特点是允许在不损失硬盘中原有数据的前提下对硬盘进行重新设置分区、分区格式化以及复制、移动、格式转换和更改硬盘分区大小、隐藏硬盘分区以及多操作系统启动设置等操作。

Linux

GParted 是一款功能非常强大的分区工具,和 Windows 下的“分区魔术师”类似,操作和显示上也很相似。GParted 可以方便的创建、删除分区,也可以调整分区的大小和移动分区的位置。

下载一个 Live 镜像

AOSC OS 是一个非常特别的发行版,它只发行 Tarballs,不发行 ISO 镜像。安装的时候还得靠其它发行版的 Live 镜像。

我们特别推荐使用 Arch Linux 的镜像 Archiso,它预装了所有你需要的软件而且它的命令行界面也能帮助你迅速进入状态。如需下载最新版本的 Archiso,请前往 官方下载页面

如果你不希望选择 Archiso,请务必选择预装软件齐全的发行版。

制作可启动 USB

Linux

推荐使用 dd 命令,用 U 盘替换 /dev/sdx,如 /dev/sdb(不要加上数字,也就是说,不要键入 /dev/sdb1 之类的东西):

1
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress && sync

警告: 这种方法会删除 /dev/sdx 上的所有数据且不可逆。要在使用 ISO 之后释放空间,还原 USB 为原始状态,需要以 Root 权限执行 wipefs --all /dev/sdx 命令删除 ISO9660 文件系统标记,然后再重新分区和重新格式化 USB。

Windows

可以使用 RufusUSBwriterWin32diskimager,点击相应的链接了解详情。

macOS

先确认设备,打开 /Applications/Utilities/Terminal 然后通过下面命令查看所有设备:

1
diskutil list

USB 设备应该显示类似 /dev/disk2 (external, physical) 的东西。通过名称和大小确认设备名,在后面的命令中替换 /dev/diskx

设备会被自动挂载,在使用 dd 前需要先卸载设备上的分区:

1
diskutil unmountDisk /dev/diskx

接着我们可以依照上面介绍的方法继续操作,磁盘名使用 rdisk, 在 macOS 上比较快。

1
sudo dd if=path/to/arch.iso of=/dev/rdiskx bs=1m

完成后,macOS 可能抱怨 “The disk you inserted was not readable by this computer”,选择忽略。

下载 Tarball

请在 下载页 了解桌面环境有关信息,接下来你可以选择直接点击下载按钮,也可以选择一个镜像站(只列出中国国内镜像站):

选择一个桌面环境,然后下载文件名为 aosc-os_桌面环境名称_年月日_amd64.tar.xz 的文件,年月日数字应与下载页所显示的一致的就是最新版了,例如 aosc-os_kde_20180128_amd64.tar.xz,文件大小在 2G 左右。

可选的项目只有:Base(即不带桌面环境)、KDE Plasma、GNOME、MATE、XFCE、LXDE
和 i3 Window Manager。如果你卡在了选择桌面环境这一步,可以参考一下 系统需求,结合实际情况进行选择。如果你还是做不了决定,不妨选择 KDE Plasma。

完成后,将这个文件移动到第二只 U 盘中,然后重启并选择启动第一只 U 盘。

切换到 Root

请使用 sudo -isu - 切换到 Root,如果需要输入密码而你不知道密码,请前往发行版网站进行查询。Archiso 无需进行此操作。
如果你遇到:

1
su: Authentication failure

而你确定密码无误,可能是因为 Root 账户被禁用。请转而使用 sudo -i

验证安装模式

可以通过列出 efivars 目录来验证启动模式:

1
ls /sys/firmware/efi/efivars

示例输出:

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
AcpiGlobalVariable-af9ffd67-ec10-488a-9dfc-6cbf5ee22c2e
AddOnVGAExist-8be4df61-93ca-11d2-aa0d-00e098032b8c
AMITSESetup-c811fa38-42c8-4579-a9bb-60e94eddfb34
ASUSMEUPDATE-65bd31bb-6d07-48af-be32-e4859b0dd421
Boot0002-8be4df61-93ca-11d2-aa0d-00e098032b8c
Boot0004-8be4df61-93ca-11d2-aa0d-00e098032b8c
Boot0005-8be4df61-93ca-11d2-aa0d-00e098032b8c
Boot0006-8be4df61-93ca-11d2-aa0d-00e098032b8c
BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c
BootFlow-ef152fb4-7b2f-427d-bdb4-7e0a05826e64
BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c
CMOSfailflag-c89dc9c7-5105-472c-a743-b1621e142b41
ConIn-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConInDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c
ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
CurVID.-8be4df61-93ca-11d2-aa0d-00e098032b8c
DefaultBootOrder-45cf35f6-0d6e-4d04-856a-0370a5b16f53
DefaultLegacyDevOrder-3c4ead08-45ae-4315-8d15-a60eaa8caf69
EfiTime-9d0da369-540b-46f8-85a0-2b5f2c301e15
ErrOut-8be4df61-93ca-11d2-aa0d-00e098032b8c
ErrOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
GnvsAreaVar-8be4df61-93ca-11d2-aa0d-00e098032b8c
IccAdvancedSetupDataVar-7b77fb8b-1e0d-4d7e-953f-3980a261e077
Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c
LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
LegacyDevOrder-a56074db-65fe-45f7-bd21-2d2bdd8e9652
LoaderEntryRebootReason-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderEntrySelected-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderFirmwareInfo-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderFirmwareType-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderImageIdentifier-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderInfo-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderTimeExecUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderTimeInitUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
LoaderTimeMenuUSec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
MeEOPFlag-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
MemCeil.-8be4df61-93ca-11d2-aa0d-00e098032b8c
MemoryFreq-58cd8089-e2d9-4b84-88b8-3da497dba390
MemoryOverwriteRequestControl-e20939be-32d4-41be-a150-897f85d49829
MonotonicCounter-8be4df61-93ca-11d2-aa0d-00e098032b8c
MrcS3Resume-87f22dcb-7304-4105-bb7c-317143ccc23b
NBPlatformData-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
NvRamSpdMap-717fc150-abd9-4614-8015-0b3323eab95c
NVRAM_Verify-15a9dd61-e4f8-4a99-80db-353b13d76490
OemCpuData-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
OldLegacyDevOrder-a56074db-65fe-45f7-bd21-2d2bdd8e9652
PchInit-e6c2f70a-b604-4877-85ba-deec89e117eb
PchS3Peim-e6c2f70a-b604-4877-85ba-deec89e117eb
PlatformLang-8be4df61-93ca-11d2-aa0d-00e098032b8c
PlatformLangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
PNP0400_0_NV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0400_0_VV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0501_0_NV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0501_0_VV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0501_1_NV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0501_1_VV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0510_0_NV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0510_0_VV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0604_0_NV-560bf58a-1e0d-4d7e-953f-2980a261e031
PNP0604_0_VV-560bf58a-1e0d-4d7e-953f-2980a261e031
S3SS-4bafc2b4-02dc-4104-b236-d6f1b98d9e84
SaPegData-c4975200-64f1-4fb6-9773-f6a9f89d985e
SbAslBufferPtrVar-01f33c25-764d-43ea-aeea-6b5a41f3f3e8
ScramblerBaseSeed-87f22dcb-7304-4105-bb7c-317143ccc23b
Setup-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
SetupHWMFeatures-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
SetupHWMOneof-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
SetupPlatformData-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
SetupSnbPpmFeatures-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
StdDefaults-4599d26f-1a11-49b8-b91f-858745cff824
Timeout-8be4df61-93ca-11d2-aa0d-00e098032b8c
UsbMassDevNum-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
USB_POINT-8be4df61-93ca-11d2-aa0d-00e098032b8c
UsbSupport-ec87d643-eba4-4bb5-a1e5-3f3e36b20da9
VARSTORE_OCMR_SETTINGS_NAME-c05fba7d-7a92-49e0-bcee-233b14dca803
VARSTORE_OCMR_TIMING_SETTINGS_NAME-93c483a1-d3fa-4e92-b437-733b2a346e23
WdtPersistentData-78ce2354-cfbc-4643-aeba-07a27fa892bf

如果输出类似于:

1
ls: cannot access '/sys/firmware/efi/efivars': No such file or directory

系统可能以 BIOS 或 CSM 模式启动,详见您的主板手册。

分区

分区是将硬盘的可用空间划分为多个可以独立访问的区块。虽然有一些关于分区方案的通用建议,但没有严格的准则。有许多影响分区方案的因素,例如对灵活性的期望,访问速度,安全性以及可用磁盘空间的硬性限制。实际上就是个人取舍的问题。但是:

  • 必须要有一个根分区(即 /);
  • UEFI 系统需要有 ESP 分区(即带有 ESP 标记的 /boot/boot/efi)。

接下来这一部分如果无法理解,请利用百度进行相关的查询。如果你已经提前分区并确认你的分区合理,请跳过本节。

下面以这个 UEFI 模式下的分区方案为例(这里使用 Gdisk,如果是 BIOS 请使用 Fdisk,操作起来基本一样的,如需选用其它工具请自行上百度查询):

分区 挂载点 文件系统 大小 备注
/dev/sda1 /boot Vfat 1G ESP 分区,通常 512M 足矣
/dev/sda2 / Xfs 100G 根分区,通常 50G 足矣
/dev/sda3 Swap 4G 和内存大小一致即可
/dev/sda4 /home Xfs 剩余全部 放置个人文件,可以大些
  • 查看当前的分区情况,并做好分区规划:
    1
    lsblk

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 48K 1 loop
loop1 7:1 0 230.4M 1 loop
loop2 7:2 0 1.7G 1 loop
sda 8:0 0 465.8G 0 disk
sdb 8:16 1 7.5G 0 disk
├─sdb1 8:17 1 2G 0 part /bootmnt
└─sdb2 8:18 1 31M 0 part
sdc 8:32 1 29.5G 0 disk
├─sdc1 8:33 1 14.3G 0 part
├─sdc2 8:34 1 1K 0 part
└─sdc5 8:37 1 15.2G 0 part
sr0 11:0 1 1024M 0 rom

  • 启动 Gdisk,假设待操作的盘为 /dev/sdx

    1
    gdisk /dev/sdx
  • 如果是全新的磁盘或你想重新分区,使用 o 命令建立一个新的空分区表,询问是否确定时回答 y 即可;
    示例输出:

    1
    2
    3
    Command (? for help): o
    This option deletes all partitions and creates a new protective MBR.
    Proceed? (Y/N): y
  • 使用 n 命令创建一个新的分区,接下来按两次回车;

  • 使用 +xG 的格式指定分区大小为 xG。例如,如果你需要创建一个 15G 的分区,你需要输入 +15G,然后按下回车,如果你希望用掉剩余的所有空间,请直接按下回车;
  • 如果是想创建一个 ESP 分区,输入 EF00,如果是想创建一个 Swap 分区,输入 8200,其它分区请直接回车。
    示例输出:

    1
    2
    3
    4
    5
    6
    7
    Command (? for help): n
    Partition number (1-128, default 1):
    First sector (34-976773134, default = 2048) or {+-}size{KMGTP}:
    Last sector (2048-976773134, default = 976773134) or {+-}size{KMGTP}: +1G
    Current type is 'Linux filesystem'
    Hex code or GUID (L to show codes, Enter = 8300): EF00
    Changed type of partition to 'EFI System'
  • 循环以上步骤直到你完成分区;

  • 使用 w 命令将分区表写入磁盘并退出。
    示例输出:
    1
    2
    3
    4
    5
    6
    Command (? for help): w
    Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
    PARTITIONS!!
    Do you want to proceed? (Y/N): y
    OK; writing new GUID partition table (GPT) to /dev/sda.
    The operation has completed successfully.

如需进行更加复杂的分区工作,建议在启动 Live 镜像前利用图形化工具进行。

若按照分区方案示例进行分区,那么我们需要输入的是( 指回车键):

1
gdisk /dev/sda

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
o↪
y↪
n


+1G↪
EF00
n


+100G

n


+4G↪
8200
n




w↪
y↪

到这里,分区就完成了。请及时检查你的分区情况:

1
lsblk

如果你发现分区表没有变化,重启计算机。重启后分区表发生变化就可以进行下一步了。否则,请重新进行分区。

格式化分区

当分区配置好了,这些分区应立即被格式化并使用一个合适的文件系统。例如,如果你想将 /dev/sda2 格式化成 Xfs,使用这个命令:

1
mkfs.xfs -f /dev/sda2

示例输出:

1
2
3
4
5
6
7
8
9
meta-data=/dev/sda2              isize=512    agcount=4, agsize=6553600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=12800, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

通常来说,比较受欢迎的文件系统有:

文件系统 命令 优点
Btrfs mkfs.btrfs -f /dev/sdxy 快照功能
Ext4 mkfs.ext4 /dev/sdxy 稳定性较好
Xfs mkfs.xfs -f /dev/sdxy 稳定性较好

请使用实际的字母和数字来替换 sdxy 中的 xy

特别地,ESP 分区只能使用 Vfat 文件系统:

1
mkfs.vfat -F32 /dev/sdxy

示例输出:

1
mkfs.fat 4.0 (2016-05-06)

而 Swap 分区则需要使用以下命令:

1
mkswap /dev/sdxy

示例输出:

1
2
3
mkswap: /dev/sda3: warning: wiping old swap signature.
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=5c15289d-9654-41d0-9bfa-37dd0d6989a2

挂载分区

首先将根分区挂载到 /mnt

1
mount /dev/sdxy /mnt

如果使用多个分区,还需要为其他分区创建目录并挂载它们(/mnt/boot、/mnt/home…),例如 ESP 分区:

1
2
mkdir /mnt/boot
mount /dev/sdxy /mnt/boot

又例如 /home 分区:

1
2
mkdir /mnt/home
mount /dev/sdxy /mnt/home

特别地,Swap 分区直接使用:

1
swapon /dev/sdxy

Genfstab 将会自动检测挂载的文件系统和 Swap 分区。

最后检查挂载情况:

1
lsblk

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 48K 1 loop
loop1 7:1 0 230.4M 1 loop
loop2 7:2 0 1.7G 1 loop
sda 8:0 0 465.8G 0 disk
├─sda1 8:1 0 1G 0 part /mnt/boot
├─sda2 8:2 0 100G 0 part /mnt
├─sda3 8:3 0 4G 0 part [SWAP]
└─sda4 8:4 0 360.8G 0 part /mnt/home
sdb 8:16 1 7.5G 0 disk
├─sdb1 8:17 1 2G 0 part /bootmnt
└─sdb2 8:18 1 31M 0 part
sdc 8:32 1 29.5G 0 disk
├─sdc1 8:33 1 14.3G 0 part
├─sdc2 8:34 1 1K 0 part
└─sdc5 8:37 1 15.2G 0 part
sr0 11:0 1 1024M 0 rom

安装

准备 Tarball

插入你的第二只 U 盘,使用 lsblk 查看插入的 U 盘所在分区名称和挂载情况。如果还没被挂载(即挂载点那一栏为空),挂载它,随便找一个地方:

1
2
mkdir -p /run/storage
mount /dev/sdxy /run/storage

如果 Live 镜像已经为你自动挂载了,记下挂载点即可。如果你仍然无法判断 U 盘是否已被挂载,可以先尝试取消挂载,执行这个:

1
umount /dev/sdxy

然后按照开头所提供命令进行操作即可。

解压 Tarball

现在是时候解压 Tarball 了:

1
2
cd /mnt
tar pxf /path/to/tarball/tarball.tar.xz

如果要让解压的过程更加刺激点,请加入 verbose 的选项:

1
2
cd /mnt
tar pxvf /path/to/tarball/tarball.tar.xz

/path/to/tarball/tarball.tar.xz 替换为 Tarball 所在目录,假设 U 盘挂载点为 /run/storage,你把 Tarball 放在了 U 盘的最外边,那么命令就是:

1
2
cd /mnt
tar pxf /run/storage/aosc-os_kde_20180128_amd64.tar.xz

如果你对 TAB 补全有所了解,可以用 TAB 进行自动补全,否则就老老实实地打字。

安装后设定

绑定设备和系统路径

这一步照做即可,输入:

1
for i in dev proc sys; do mount --rbind /$i /mnt/$i; done

配置 APT

APT 建议在安装 Genfstab 前就配置好,以免出现问题。

我们不建议直接编辑 /etc/apt/sources.list,而是建议你使用 apt-gen-list

列出所有可用的镜像站:

1
chroot /mnt apt-gen-list -l

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Rating 1 | TUNA (Tsinghua University TUNA Association) OSS Mirror (10-tuna)
Rating 1 | USTC (University of Science and Technology of China) OSS Mirror (10-ustc)
Rating 2 | CQUPT (Chongqing University of Posts and Telecommunications) OSS Mirror (20-cqupt)
Rating 2 | Geekpie Association (ShanghaiTech University) OSS Mirror (20-geekpie)
Rating 2 | LZUOSS of Lanzhou University. (20-lzuoss)
Rating 2 | VIM OSS Mirror (hosted by NLUUG) (20-vim)
Rating 2 | Yun-IDC (Capital Online Data Service LTD.) OSS Mirror (20-yun-idc)
Rating 3 | NLUUG (formerly known as The Netherlands Local Unix User Group) OSS Mirror (30-nluug)
Rating 4 | Automatic mirroring (unstable) server (AOSC-owned). (40-global-cdn)
Rating 4 | AOSC source repository (hosted by BlueT, and National Chi Nan University) (40-source)

Printed above is a full list of available repositories/mirrors for AOSC OS with a rating for each
repository/mirror. A rating describes how strongly a particular repository/mirror is recommended
by the vendor, with 1 being the strongest, while the largest number for a rating shouts DO NOT USE.

在可用的镜像站中选择一个,以 中国科学技术大学镜像站 为例:

1
chroot /mnt apt-gen-list -e 10-ustc

示例输出:

1
2
3
4
Printing sources.list as specified...

Enabled repository(s): 10-ustc
Disabled repository(s): 10-tuna 20-cqupt 20-geekpie 20-lzuoss 20-vim 20-yun-idc 30-nluug 40-global-cdn 40-source

更多详细用法请执行 chroot /mnt apt-gen-list -h 获取,注意由于我们还没进入 Chroot 环境,务必在命令前加 chroot /mnt

最后刷新软件源缓存:

1
chroot /mnt apt update

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
Ign:1 https://mirrors.ustc.edu.cn/anthon/os-amd64/os3-dpkg  InRelease
Ign:2 https://mirrors.ustc.edu.cn/anthon/os-noarch/os3-dpkg InRelease
Get:3 https://mirrors.ustc.edu.cn/anthon/os-amd64/os3-dpkg Release [479 B]
Get:4 https://mirrors.ustc.edu.cn/anthon/os-noarch/os3-dpkg Release [482 B]
Get:5 https://mirrors.ustc.edu.cn/anthon/os-amd64/os3-dpkg Release.gpg [303 B]
Get:6 https://mirrors.ustc.edu.cn/anthon/os-noarch/os3-dpkg Release.gpg [303 B]
Get:7 https://mirrors.ustc.edu.cn/anthon/os-amd64/os3-dpkg Packages [638 kB]
Get:8 https://mirrors.ustc.edu.cn/anthon/os-noarch/os3-dpkg Packages [143 kB]
Fetched 783 kB in 1s (399 kB/s)
Reading package lists... Done
Building dependency tree... Done
16 packages can be upgraded. Run 'apt list --upgradable' to see them.

生成 /etc/fstab

为了让 AOSC OS 在启动时能自动挂载分区,我们需要生成 /etc/fstab。 首先安装 Genfstab 这个工具:

1
chroot /mnt apt install genfstab

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
genfstab
0 upgraded, 1 newly installed, 0 to remove and 16 not upgraded.
Need to get 11.1 kB of archives.
After this operation, 81.9 kB of additional disk space will be used.
Get:1 https://mirrors.ustc.edu.cn/anthon/os-noarch/os3-dpkg genfstab 17 [11.1 kB]
Fetched 11.1 kB in 0s (29.2 kB/s)
Selecting previously unselected package genfstab.
(Reading database ... 419650 files and directories currently installed.)
Preparing to unpack .../archives/genfstab_17_all.deb ...
Unpacking genfstab (17) ...
Setting up genfstab (17) ...

如果安装失败,请阅读 这篇文章 获取解决方案。

然后用它来生成 /etc/fstab

1
/mnt/usr/bin/genfstab -U -p /mnt >> /mnt/etc/fstab

进入 Chroot 环境

Change root 到新安装的系统:

1
chroot /mnt /bin/bash

如果你无法进入 Chroot 环境,很可能是因为你下载了错误架构的 Tarball。

更新系统

Tarball 的更新周期比较长,建议在启动之前更新你的系统来修复 Tarball 发布后被发现的 BUG:

1
2
apt update
apt dist-upgrade -y

示例输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
linux-kernel-4.14.16
The following packages will be upgraded:
aosc-aaa bash desktop-base firefox gcc-runtime glibc hplip libtasn1 linux+api
linux+kernel ncurses p7zip samba systemd upower w3m
16 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 263 MB of archives.
After this operation, 139 MB of additional disk space will be used.
...

创建 Init RAM Disk

使用下面的命令来创建 Init RAM Disk:

1
sh /var/ab/triggered/dracut

示例输出:

1
2
**      Generating initrd (Initialization RAM Disk) for kernel version 4.14.12-aosc-main ...
** Generating initrd (Initialization RAM Disk) for kernel version 4.14.16-aosc-main ...

配置引导器

现在已经可以开始配置引导器了,在本文里将会使用 GRUB 作为示例。 在使用 EFI 或 BIOS 引导的情况下安装 GRUB 所需要的命令也不一样,在本文里将会分别说明。

EFI 引导

安装 GRUB 到 ESP 分区:

1
grub-install --target=x86_64-efi --bootloader-id=AOSC-GRUB --efi-directory=/boot

示例输出:

1
2
Installing for x86_64-efi platform.
Installation finished. No error reported.

生成配置文件:

1
grub-mkconfig -o /boot/grub/grub.cfg

示例输出:

1
2
3
4
5
6
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-aosc-main-4.14.16
Found initrd image(s) in /boot: intel-ucode.img initramfs-4.14.16-aosc-main.img
Found linux image: /boot/vmlinuz-aosc-main-4.14.12
Found initrd image(s) in /boot: intel-ucode.img initramfs-4.14.12-aosc-main.img
done

如果你的 ESP 分区挂载点为 /boot/efi,请作相应的替换。

对于 Bay Trail 设备,可能需要使用 i386-efi 作为 Target。在不确定的情况下请不要使用下面的命令:

1
2
grub-install --target=i386-efi --bootloader-id=AOSC-GRUB --efi-directory=/efi
grub-mkconfig -o /boot/grub/grub.cfg

BIOS 引导

在 BIOS 引导的情况下安装 GRUB 很简单,只需要确定把引导记录写到哪个(哪些)硬盘里。 在大多数情况下安装引导记录的设备是硬盘,比如 /dev/sda,而不是某个特定分区。 在本文里也以 /dev/sda 作为例子:

1
2
grub-install --target=i386-pc /dev/sda
grub-mkconfig -o /boot/grub/grub.cfg

账户设置

所有的 Tarballs 都不带有默认账户且 Root 账户默认被禁用,你需要在重启进入 AOSC OS 之前创建一个账户。

首先使用 useradd 命令添加用户(以 aosc 为例):

1
useradd -m -G wheel -s /bin/bash aosc

接下来通过下列命令为用户 aosc 设置密码,虽然不是必须的,还是强烈建议设置密码:

1
passwd aosc

示例输出:

1
2
3
New password: 
Retype new password:
passwd: password updated successfully

尽管不建议这么做,你仍可以通过给 Root 账户设置密码来启用它:

1
passwd root

正经的 Linux 用户不需要使用 Root 账户。

设置时区

时区信息储存在 /usr/share/zoneinfo/<region>/<city>,在这里以 Asia/Shanghai 作为例子:

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

设置系统语言

AOSC 在默认情况下启用了所有 UTF-8 编码的 Locale 。 在一些情况下,如果你想要启用或禁用某些 Locale ,请编辑 /etc/locale.gen

1
nano /etc/locale.gen

1
2
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

禁用在行首添加 # 或者直接删除该行即可,当你设定完成后,执行:

1
locale-gen

通常情况下无需编辑 /etc/locale.gen

可以通过编辑 /etc/locale.conf 来设置默认的语言。比如把 zh_CN.UTF-8 设置为默认语言:

1
nano /etc/locale.conf

1
LANG=zh_CN.UTF-8

设置主机名

要设置主机名,将其添加到 /etc/hostname,假设 myhostname 是需要的主机名:

1
nano /etc/hostname

1
myhostname

建议添加对应的信息到 /etc/hosts

1
nano /etc/hosts

1
2
3
4
#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
127.0.0.1 myhostname.localdomain myhostname

重启

安装到此结束:

1
2
exit
reboot

配置 Fcitx

首先确认 Fcitx 基础模块是否已被安装:

1
sudo apt install fcitx-base kcm-fcitx -y

如果您用 XDG 兼容的桌面环境,比如 KDE、GNOME、Xfce、LXDE,那么当您安装好 Fcitx 并重新登录后,Fcitx 应该会自动启动。如果没有的话,可以打开控制台并运行 Fcitx。为检验 Fcitx 是否正常运行, 打开一个程序,按 CTRL + Space 激活 Fcitx 并试着输入几个字。

如果 Fcitx 没有随桌面环境自动启动,或者您想修改下 Fcitx 启动参数,请用桌面环境提供的自动启动工具配置,或者直接编辑用户目录~/.config/autostart/ 下的 fcitx-autostart.desktop 文件以确认自动启动是否被禁用。如果用户目录下的文件并不存在,您可以复制自动启动文件 /etc/xdg/autostart/fcitx-autostart.desktop 到用户目录:

1
cp /etc/xdg/autostart/fcitx-autostart.desktop ~/.config/autostart/

如果您使用的桌面环境并不自动支持 XDG 自动启动, 请在您使用的启动脚本里面添加 Fcitx 以实现自动启动。

当 iBus 等其它输入法程序同时启动且开启了 Xim 支持时, 可能会害 Fcitx 启动不了,请确保已禁用了其它输入法程序的自动启动。

如果你发现 Fcitx 开机能自启却打不了字,可能是环境变量没有设定好的问题,安装 imchooser 这个软件包并利用它设定环境变量:

1
2
sudo apt install imchooser -y
imchooser fcitx

检查设定情况:

1
cat ~/.xprofile

输出应该是这样的:

1
2
3
4
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export QT5_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx

如果你使用的是较新版本的 GNOME,使用 Wayland 显示管理器,还得在 /etc/environment 中加入上面所述的内容。

本博客所有原创文章,如未特殊声明,均采用 CC-BY-NC-SA 4.0 进行许可。
本文链接:http://www.bobby285271.top/2018/02/12/aosc-os-installation-guide/