半自动安装

如果您来到这里,那是因为您想要半自动安装 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

DNS

如果您最终未使用 DHCP,您还需要设置 DNS。您可以使用 setup-dns 脚本,它将交互式地询问您首选的 DNS 服务器。在大多数情况下,您可以使用 1.1.1.18.8.8.89.9.9.9。通常,您的路由器也会提供一个供使用。如有疑问,您也可以咨询您的网络管理员。

目前,setup-dns 要求输入 域名。您可以随意将答案留空,因为它是可选的。

或者,您可以编辑 /etc/resolv.conf 文件。这是一个示例,它同时使用了 1.1.1.18.8.8.8 名称服务器。

nameserver 1.1.1.1
nameserver 8.8.8.8

应用配置

如果您最终使用手动配置,或者未使用 setup-interfaces-r 选项,您将必须手动应用网络设置。这可以通过运行 rc-service networking start 完成。如果需要,您也可以使用 rc-update add networking boot 将其设置为在启动时加载。

时区

在 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 startrc-update add openssh

默认情况下,您不能使用 SSH 以 root 用户身份使用密码登录。

请注意,setup-sshd 实用程序也可以为您完成此操作 - 它会询问您想要哪一个,安装,启动并为您启用它。

NTP

确保您的时钟正确可能很有用。这可以通过使用 NTP 守护程序来实现。一些常见的守护程序是 chronydopenntpd。您可以使用 apk add name 安装它们,其中 name 是所需的守护程序。之后,您可能想要启动它,并可能启用它 - 分别使用 rc-service name startrc-update add name

请注意,setup-ntp 实用程序也可以为您完成此操作 - 它会询问您想要哪一个,安装,启动并为您启用它。

磁盘分区

setup-disk

setup-disk 实用程序可以为您完成其余的工作。它将在您的硬盘驱动器上创建分区表,按照规范对其进行分区,使用文件系统格式化分区,设置基本系统,并安装引导加载程序。本节描述如何使用它,以及各种可调整项。

目前,setup-disk 应该适用于典型的单磁盘非 UEFI 设置。如果默认设置对您来说可以接受,请随时使用它。但是,在其他情况下,建议您至少考虑手动完成安装的这一(公认困难的)部分。

setup-disk 也支持非磁盘安装。本手册未涵盖这些内容。

选项和设置

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

要使用的磁盘模式 - 您需要 -m sys

-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 使用入门