半自动安装
如果您来到这里,那是因为您想要半自动安装 alpine,或者是因为您在使用 setup-alpine
时遇到了问题(无论是否在此范围之内)。无论哪种方式,本手册的这一部分都会逐步描述如何启动并运行系统。在本节中,您将找到各种 setup-*
实用程序的用法,以及关于它们作用的解释。
键盘布局
如果您使用常见的 us 布局,您可以跳过此部分。 |
键盘布局由 loadkmap
服务文件控制。在 /etc/conf.d/loadkmap
中定义了一个变量 (KEYMAP
)。在此变量中命名的文件是将被加载的键盘映射。
各种键盘映射在软件包 kbd-bkeymaps
中提供,位于 /usr/share/bkeymaps
。在该目录内,有多个目录,其中包含键盘映射的全局类别(例如,美国的 us
和加拿大的 ca
)。在这些目录中,是每个键盘映射类别的本地变体。例如,要使用常见的键盘类型,您可以使用 /usr/share/bkeymaps/us/us.bmap.gz
。
选择键盘映射的一种简单方法是使用 setup-keymap
。只需运行它,它将遍历各种可用的键盘映射,提示您选择要使用的键盘映射,然后为您配置 loadkmap
。它还将在复制所需的键盘映射后删除 kbd-bkeymaps
软件包。或者,您可以直接将键盘映射名称作为命令行参数传递给 setup-keymap
。
setup-keymap us us (1)
1 | 这将复制并使用 /usr/share/bkeymaps/us/us.bmap.gz |
主机名
您的主机名是您计算机的名称。重要的是,您局域网上的主机名是唯一的。如果您需要关于如何设置主机名的建议,您可以参考 RFC 1178。
主要的主机名设置是 /etc/hostname
的内容。但是,对于它应该或不应该是什么,有一些常见的限制(也在上面提到的 RFC 中列出)。因此,您可以使用 setup-hostname
使此过程更安全。您可以不带参数调用它以获得提示,也可以使用参数运行它来设置您的主机名。
例如,如果您希望您的主机名为 "alpine",您可以像这样运行它
setup-hostname alpine (1)
1 | 将机器的主机名设置为 "alpine" |
但是请注意,这不会填充 /etc/hosts
- 您的本地硬编码 DNS 缓存。如果您想加速某些环回操作,您也可以修改该文件。例如,如果您将主机名设置为 "alpine",并且您的网络没有特定的域名(如果您有域名,您可能不需要这些说明),您的 /etc/hosts
文件可能如下所示
127.0.0.1 localhost.localdomain localhost alpine.localdomain alpine
::1 localhost.localdomain localhost alpine.localdomain alpine
完成此操作后,您应该使用 rc-service hostname restart
或 /etc/init.d/hostname restart
应用主机名。
网络
在配置系统的其余部分之前,您应该设置网络。这将允许您,例如,获取引导加载程序,配置 sshd(以便从另一台具有图形功能的计算机的舒适环境中继续此设置),以及其他此类理想的功能。
自动
有一个 setup-interfaces
脚本。它可以配置 DHCP 和静态 IP,询问您有关网络拓扑的问题。它还可以配置无线网络,询问您 SSID 和密码。
您也可以使用 setup-interfaces -a
仅在找到的第一个有线接口上设置 DHCP,而无需回答任何问题。
-r
标志将导致 networking
服务自动(重新)启动。
手动
您也可以自行编辑 /etc/network/interfaces
和 /etc/resolv.conf
。
默认的(DHCP 样式)/etc/network/interfaces
文件将如下所示
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
要指定您自己的网络详细信息,您需要找到以下详细信息
-
您的系统应具有的地址(它必须尚未被占用)
-
网关地址
-
网络子网掩码(在大多数网络中,这是
255.255.255.0
)
您应该能够向您的网络管理员询问其中的大部分。在此示例中,我们确定您的系统应具有 IP 192.168.0.147
,网关位于 192.168.0.1
,子网掩码为 255.255.255.0
。在这种情况下,/etc/network/interfaces
文件应如下所示
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.147
netmask 255.255.255.0
gateway 192.168.0.1
时区
在 musl 上,时区由 TZ
环境变量定义。它应该提及 POSIX 样式的时区,直接指向文件,或者具有标准的 区域/子区域
定义。该定义必须在 /usr/share/zoneinfo
、/share/zoneinfo
或 /etc/zoneinfo
下找到。
您可以使用 setup-timezone
脚本,该脚本将提示您输入您所在的时区。然后,它将安装 tzdata
软件包,复制所需的文件并删除该软件包。
或者,您可以手动执行此操作。然后,您必须安装 tzdata
软件包以获取 /usr/share/zoneinfo
。您可以通过查看该目录来查看可用的区域,并通过查看您选择的区域的目录来查看可用的子区域。选择后,您可以保留已安装的软件包,也可以将您选择的文件复制到 /etc/zoneinfo
。
例如,如果您选择的区域是 America/New_York
,您将运行此命令
install -Dm 0644 /usr/share/zoneinfo/America/New_York /etc/zoneinfo/America/New_York
仓库
如果您想要能够安装软件包,您将需要拥有一些仓库。默认情况下,您的启动介质将附带一个内置仓库,该仓库位于启动介质本身上。但是,既然您已经有了网络,您可能希望安装启动介质上相对较小的池之外的软件包。软件包管理器 (apk
) 的仓库在名为 /etc/apk/repositories
的文件中配置,有效的签名密钥位于 /etc/apk/keys/
下。您的启动介质应附带有效的预配置密钥,但没有外部仓库。目前,您可以在 mirrors.alpinelinux.org 上查看可用镜像列表及其状态。
不要担心镜像中缺少 "https" - 所有软件包都已签名,因此只要您不添加任何不可信的密钥,您的软件包管理器将拒绝安装任何非法的软件包。 |
这是一个示例 /etc/apk/repositories
文件,它使用最新发行版本的主镜像中的所有稳定仓库
http://dl-cdn.alpinelinux.org/alpine/v3.16/main
http://dl-cdn.alpinelinux.org/alpine/v3.16/community
假设您的网络配置已完成,您也可以使用 setup-apkrepos
实用程序,它将获取有效仓库的列表,并为您提供它们之间的选择(以及诸如 "random" 之类的选项)。
Root 密码
此时,您应该设置 root 密码。这很容易做到 - 只需运行 passwd
并按照提示操作即可。
您不会看到自己输入的内容 - 这是正常的,它是被模糊处理的,以阻止人们偷看您的屏幕,即使只是为了查看密码中的字符数。 |
SSH
拥有 SSH 非常方便 - 这意味着您可以在终端模拟器的舒适环境中,而不是原始的 getty(在启动 alpine 安装介质时出现的全屏模拟器)。现在我们有了网络,我们可以设置 ssh 守护程序。
目前有两个主要的 SSH 守护程序可用 - openssh 和 dropbear。后者更简单,但有其自己的(不兼容的)密钥格式,并且只能通过命令行参数配置 - 因此,不建议初学者使用。您可以使用 apk add name
安装其中一个,其中 name 分别为 "dropbear" 或 "openssh"。之后,您可能想要启动它,并可能启用它 - 分别使用 rc-service openssh start
和 rc-update add openssh
。
默认情况下,您不能使用 SSH 以 root 用户身份使用密码登录。 |
请注意,setup-sshd
实用程序也可以为您完成此操作 - 它会询问您想要哪一个,安装,启动并为您启用它。
NTP
确保您的时钟正确可能很有用。这可以通过使用 NTP 守护程序来实现。一些常见的守护程序是 chronyd
和 openntpd
。您可以使用 apk add name
安装它们,其中 name 是所需的守护程序。之后,您可能想要启动它,并可能启用它 - 分别使用 rc-service name start
和 rc-update add name
。
请注意,setup-ntp
实用程序也可以为您完成此操作 - 它会询问您想要哪一个,安装,启动并为您启用它。
磁盘分区
setup-disk
setup-disk
实用程序可以为您完成其余的工作。它将在您的硬盘驱动器上创建分区表,按照规范对其进行分区,使用文件系统格式化分区,设置基本系统,并安装引导加载程序。本节描述如何使用它,以及各种可调整项。
目前,setup-disk 应该适用于典型的单磁盘非 UEFI 设置。如果默认设置对您来说可以接受,请随时使用它。但是,在其他情况下,建议您至少考虑手动完成安装的这一(公认困难的)部分。 |
|
选项和设置
setup-disk
通过命令行参数以及环境变量进行配置。在大多数情况下,如果您希望 setup-disk 为您完成所有工作,您应该不需要指定任何超出 -m sys
的内容,例如 setup-disk -m sys
。这是一个不完整的列表 - 它缺少任何提及非磁盘安装的内容,以及任何过于复杂的内容(例如自动 lvm/raid)。如果您需要这些,请前往手册或开发者页面。
- BOOTFS
-
用于
/boot
的文件系统,默认为 ext4,也允许 ext2、ext3、(flat)btrfs、xfs 和 vfat(UEFI 上必需)。 - BOOTLOADER
-
要使用的引导加载程序。默认为 syslinux,但也允许使用 grub,除非使用 UEFI,在这种情况下,grub 是必需的。
- BOOTSIZE
-
/boot
的大小。 - DISKLABEL
-
要使用的分区表类型。默认为 dos,但也允许使用 gpt,除非使用 UEFI,在这种情况下,gpt 是必需的。
- ROOTFS
-
用于
/
的文件系统,默认为 ext4,也允许 ext2、ext3、(flat)btrfs 和 xfs。 - USE_EFI
-
启用此选项以强制使用 UEFI。
-m |
要使用的磁盘模式 - 您需要 |
-q |
更安静地操作。 |
-s |
指定交换分区的大小。 |
-v |
更详细地操作。 |
第一个位置参数 |
要安装到的挂载根目录。 |
任何缺失的信息都将由 setup-disk
向您查询,因此除非您明确想要覆盖默认值/问题,否则只需更改 -m
以上的内容。
如果在引导加载程序安装中出现问题,请参阅以下各节。
Parted
Parted 是 GNU 的分区编辑器。它是一个非常有用的工具,能够执行各种分区编辑 - 包括我们感兴趣的,无论是编程方式还是交互方式。因此,这就是我们将在本节中使用的实用程序。首先使用 apk add parted
安装它。
这也是本手册的一部分,您必须确定是否需要(或想要)使用 UEFI。此决定将留给您自己决定,但您可以通过检查 /sys/firmware/efi
文件夹是否存在来确定您当前是否使用 UEFI 启动。如果这很困难,您可以使用以下代码片段来获得直接答案
test -d /sys/firmware/efi && echo UEFI || echo BIOS
一旦您做出决定,您还必须选择您想要拥有的非启动相关分区(因为启动方法将决定之前的分区如何进行)。对于初学者,建议创建一个大的根分区,这将是以下示例中使用的分区。如果您知道您想要不同的分区,您也应该知道如何修改示例。
因此,我们最终得到 3 个常见的选项:- 在 MS-DOS 分区表上进行 BIOS 安装 - 在 GPT 分区表上进行 BIOS 安装 - 在 GPT 分区表上进行 UEFI 安装
还存在其他选项,但它们适用于更高级的用户。使用 MS-DOS 进行 BIOS 安装更简单,但有一些限制(仅限 4 个分区,最大磁盘大小为 2 TB),因此涵盖了这两个选项。还假定您的磁盘足够大,小的损失(例如使 ESP 为 1 GB)与易于安装无关。“足够大” 在这里指的是总共 32 GB 或更大的磁盘。如果您的磁盘更小,您可能正在使用专用设备,并且应该遵循前面提到的自动安装方法,或者执行基于 tmpfs 的安装(本手册未涵盖)。以下各节涵盖了这些选项中的每一个,因此请随意跳到选择的选项。
另请注意,您可能会注意到 "swap" 分区被提及为标志。"swap" 实际上不是标志,而是一种文件系统类型。它是一个页面文件,旨在补充您的系统内存。建议将其大小设置为物理内存的 2 倍,但可以认为是可选的。
swap 的常见用途之一是暂停到磁盘功能,通常称为“休眠”,这需要足够的交换空间才能起作用。 |
在以下各节中,您将看到如下代码
alias p="parted -sa optimal /dev/sda" (1)
p mklabel msdos (2)
1 | 这是一个快捷方式/别名。主要需要担心的是 /dev/sda - 这必须是您要用于安装的设备。 |
2 | Parted 支持交互式和非交互式命令。这相当于运行 parted -a optimal /dev/sda ,然后在提示符中输入 mklabel msdos ,或者在提示符中输入 mklabel ,并回答 msdos 传入的问题。关于您如何执行以下操作的具体细节取决于您。 |
BIOS + MS-DOS
在带有 MS-DOS 分区表的 BIOS 设置下,我们只能有 4 个主分区,并且磁盘大小限制为 2TB。扩展分区不在本手册的范围之内。在 BIOS+MS-DOS 下,我们可以使用 MBR 安装引导加载程序,因此我们只需要担心实际的数据分区。这是一个分区方案示例
分区号 | 起始 | 结束 | 挂载点 | 标志 |
---|---|---|---|---|
1p |
0G |
1G |
/boot |
boot |
2p |
1G |
5G |
无 |
swap |
3p |
5G |
-0G |
/ |
您可以使用以下代码片段在名为 /dev/sda
的驱动器上生成此分区方案
alias p="parted -sa optimal /dev/sda"
p mklabel msdos
p mkpart p 0G 1G
p mkpart p 1G 5G
p mkpart p 5G 100%
p set 1 boot
mkfs.ext4 /dev/sda1 (1)
mkswap /dev/sda2
mkfs.ext4 /dev/sda3 (2)
1 | 最后一个部分创建文件系统。在此示例中,我们对 /boot 和 / 使用 ext4 - 您可以使用任何受支持的文件系统。 |
2 | 请注意 /dev/sda3 中的 3 来自于我们创建的第 3 个分区(它在上面的规划表中的数字中也带有 3)。 |
BIOS + GPT
在带有 GPT 分区表的 BIOS 设置下,我们没有 MBR,因此我们需要创建一个。这是一个分区方案示例
分区号 | 起始 | 结束 | 挂载点 | 标志 |
---|---|---|---|---|
1 |
1M |
2M |
无 |
bios_grub |
2 |
2M |
1G |
/boot |
boot |
3 |
1G |
5G |
无 |
swap |
4 |
5G |
-0G |
/ |
您可以使用以下代码片段在名为 /dev/sda
的驱动器上生成此分区方案
alias p="parted -sa optimal /dev/sda"
p mklabel gpt
p mkpart p 1MiB 2MiB (3)
p mkpart p 2MiB 1G
p mkpart p 1G 5G
p mkpart p 5G 100%
p set 1 bios_grub (3)
p set 2 legacy_boot
mkfs.ext4 /dev/sda2 (1)
mkswap /dev/sda3 (2)
mkfs.ext4 /dev/sda4
1 | 最后一个部分创建文件系统。在此示例中,我们对 /boot 和 / 使用 ext4 - 您可以使用任何受支持的文件系统。 |
2 | 请注意 /dev/sda3 中的 3 来自于我们创建的第 3 个分区(它在上面的规划表中的数字中也带有 3)。 |
3 | 仅在使用 GRUB 时需要。 |
UEFI + GPT
在 UEFI 设置下,您需要使用带有 ESP 分区的 GPT。它必须是 FAT32 格式,并且可以用作您的启动分区。这是一个分区方案示例
分区号 | 起始 | 结束 | 挂载点 | 标志 |
---|---|---|---|---|
1 |
0G |
1G |
/boot |
esp,boot |
2 |
1G |
5G |
无 |
swap |
3 |
5G |
-0G |
/ |
您可以使用以下代码片段在名为 /dev/sda
的驱动器上生成此分区方案
alias p="parted -sa optimal /dev/sda"
p mklabel gpt
p mkpart p 0G 1G
p mkpart p 1G 5G
p mkpart p 5G 100%
p set 1 esp
mkfs.vfat -F32 /dev/sda1 (1)
mkswap /dev/sda2
mkfs.ext4 /dev/sda3 (2)
1 | 最后一个部分创建文件系统。在此示例中,我们对 /boot 和 / 使用 ext4 - 您可以使用任何受支持的文件系统。 |
2 | 请注意 /dev/sda3 中的 3 来自于我们创建的第 3 个分区(它在上面的规划表中的数字中也带有 3)。 |
完成
现在您的文件系统已格式化,您必须将它们挂载在挂载点下(通常为 /mnt
)。“挂载”文件系统就像为硬盘驱动器分配驱动器号一样,但可以在任何目录下完成。这是一个示例,说明如何将 UEFI + GPT 集挂载在 /mnt
下
mount /dev/sda3 /mnt (1)
mkdir /mnt/boot (2)
mount /dev/sda1 /mnt/boot
swapon /dev/sda2 (3)
1 | 请注意,目标 / 等效于 /prefix/ ,其中 prefix 在这里是 “mnt”。 |
2 | 默认情况下,文件系统是空的 - 因此您必须为 /boot 创建挂载点。 |
3 | “挂载” swap 实际上是启用它,因此命令名称为 “swap on”。 |
挂载所有内容后,我们可以指示 setup-disk
将所需的文件复制到挂载点,并设置引导加载程序。有关如何使用环境变量配置它的详细信息,您可以参阅 选项和设置。要实际运行它,您只需指定特定的挂载点。在我们的示例中,这是 setup-disk /mnt
。
通常,引导加载程序设置容易出现问题。如果在重新启动(下一步)后遇到问题,请随时在 简介 中提到的任何支持渠道中寻求帮助。 |
您现在可以重新启动并继续 Alpine 使用入门。