手动设置磁盘
系统磁盘模式是 Alpine Linux 的传统或经典硬盘安装方式。此安装模式适用于大多数用例,包括通用的 桌面、开发机器 等。
如果整个硬盘可用作 Alpine Linux,则推荐使用 基于 setup-alpine 的安装 方式来安装 Alpine Linux。对于所有其他用例,请按照下面给出的基于 setup-disk
的安装方式进行操作。
基于 setup-disk 的安装
要执行 Alpine Linux 的传统硬盘安装,在完成基本配置后,继续创建、格式化和挂载分区,并将挂载点 /mnt 作为根目录,并运行命令 setup-disk -m sys /mnt
。
- 如果尚未完成 基本配置,请按照安装指南完成。必须具有可用的 互联网连接 才能完成此安装。
- 如果必要格式化的分区不可用,请先手动 创建 它们,然后 格式化 它们,包括交换分区(如果使用)。如果您使用的是传统 BIOS 模式,请使用 DOS 即 MBR 分区表,并确保为 extlinux 启动设置了正确的分区。
- 将 / (根) 分区挂载到挂载点,例如 /mnt,如下所示
# mount /dev/sdXY /mnt
- 如果您使用的是 EFI,请创建挂载点
/mnt/boot
并将 EFI 系统分区 (ESP) 挂载到它。# mkdir -p /mnt/boot # mount /dev/sdXY /mnt/boot
- 如果 交换 分区可用,您也可以立即启用它
# swapon /dev/sdXY
- 使用以下命令安装 Alpine Linux
# setup-disk -m sys /mnt
setup-disk
将执行运行系统的传统硬盘安装,检测您的文件系统布局并生成 /etc/fstab,并根据BOOTLOADER
环境变量 安装 引导加载程序。- 在安装结束时,您可以 重启 以启动到新安装的 Alpine Linux 并进行进一步的 配置。
手动分区
分区工具
安装镜像环境可能只包含非常基本的 busybox 内置 fdisk
命令。相反,Alpine Linux 允许您在设置 基本配置 后立即安装下面列出的任何分区工具。
命令 | 软件包名称 | 功能 | 局限性 |
fdisk | 内置 busybox | 可以读取 GPT,修改 MBR | 无法修改 GPT |
gdisk | gptfdisk | 文本模式,支持 MBR/GPT 双向转换,最适合管理 GPT 分区表 | 无 |
cgdisk | gptfdisk | 用于 gdisk 的菜单驱动 curses 界面 | 无 |
sgdisk | sgdisk | 可脚本化的 gdisk | 非交互式 |
fdisk | util-linux-misc | 文本模式,同时支持 gpt 和 MBR,最适合管理 MBR 分区表 | 除了其他工具造成的尺寸限制外,无其他限制 |
cfdisk | cfdisk | 用于 fdisk 的菜单驱动 curses 界面 | 无 |
sfdisk | sfdisk | 可脚本化的 fdisk | 非交互式 |
parted | parted | 文本模式,同时支持 gpt 和 MBR | 无法将 MBR 转换为 GPT,界面与上述工具不同 |
图形化工具,如 gparted 和 gnome-disk-utility 只能在 设置图形环境 后使用。
创建分区
对于 Alpine Linux,只需要 (/)根分区。甚至 /boot 分区和 交换分区 也是可选的。

cfdisk
将在所有示例中使用,因为它基于文本菜单,没有任何依赖项。但是,如果使用标准 ISO 启动镜像,安装软件包 cfdisk
需要网络可用。对于 GPT 分区及其从 MBR 到 GPT 的转换的出色支持,也推荐使用 cgdisk
。
或者,sfdisk
在标准 ISO 启动镜像中可用,并且可以在没有网络的情况下安装。
以下步骤安装软件包 cfdisk
# apk add cfdisk
cfdisk
将用于创建分区。在使用 cfdisk
之前,必须使用 blkid
识别磁盘名称
# blkid
/dev/sdX1: LABEL="some" UUID="..." TYPE="vfat" /dev/sdX2: LABEL="other" UUID="..." TYPE="ext4"
当 cfdisk
如下运行时,它会在磁盘 /dev/sdX 上查找现有分区
# cfdisk /dev/sdX
调整现有分区大小

cfdisk
和 resize2fs
可用于调整磁盘上 ext2/3/4 文件系统的现有分区的大小。对于其他文件系统,必须安装必要的文件系统 工具。这可以在启动时完成。

要调整磁盘大小,请启动 cfdisk
# cfdisk /dev/sda
- 选择目标分区,此处根据图像为 /dev/sda3
- 从底部菜单中选择Resize。
- 在提示符下输入新的Size。
- 选择Write,然后选择Quit
如果使用 -f (在线模式)调整文件系统大小,则必须在更改后立即重启系统。
# resize2fs -f /dev/sda3 # reboot
格式化分区

每当 创建 分区时,必须先格式化分区才能使用它。根据要使用的文件系统,必须首先安装文件系统所需的 格式化工具。
工具 | 文件系统 | 简要说明 | 格式化命令 |
btrfs-progs | Btrfs | 仅支持 RAID 0、1 和 10 | mkfs.btrfs |
dosfstools | FAT12/FAT16/FAT32 | 用于 EFI 分区 | mkfs.vfat |
e2fsprogs | ext2/ext3/ext4 | ext4 是 Linux 中当前的默认设置 | mkfs.ext4 |
exfatprogs | exfat | 常用于 USB 闪存驱动器和 SD 卡 | mkfs.exfat |
f2fs-tools | F2FS | mkfs.f2fs | |
hfsprogs | XFS HFS/HFS+ | Apple/Mac 产品 | mkfs.hfsplus |
jfsutils | JFS | mkfs.jfs | |
ntfs-3g | NTFS | 全功能,Microsoft/Windows FUSE 驱动程序 | mkfs.ntfs |
xfsprogs | XFS | mkfs.xfs |
如果尚未完成,请先安装 文件系统工具。以下示例显示如何使用格式化工具来格式化不同的文件系统
- e2fsprogs 用于 ext4、ext3 和 ext2。ext4 是 Alpine Linux 中的默认文件系统
# mkfs.ext4 /dev/sdaXY
- btrfs-progs 用于 btrfs 文件系统。
# mkfs.btrfs /dev/sdaXY
- dosfstools 用于 fat12/fat16/fat32 文件系统。这也用于 EFI 系统分区 (ESP)。
# mkfs.vfat /dev/sdaXY
- f2fs-tools 用于 F2FS 文件系统。
# mkfs.f2fs /dev/sdaXY
磁盘布局
![]() 包括 RAID、加密和 LVM 在内的整个部分都需要更新。 |
您的 / (根) 卷上可以有一个或多个 RAID、加密和/或逻辑卷。但是,Alpine init 脚本只知道如何在它们按该顺序分层时处理它们,并且 /boot 分区中的 initram 和 extlinux.conf 文件已正确配置。
您的 /boot 目录不能位于加密或 LVM 卷上,至少不能与 Alpine 的默认引导加载程序 (extlinux) 一起使用。(Grub2 可以处理 /boot 位于 LVM 卷上的情况。)通常的做法是为 /boot 创建一个小分区,然后将磁盘的其余部分用于单独的分区,您可以在该分区上分层一个或多个 RAID、加密和/或逻辑卷。
有时 /boot 也被设置为镜像 (RAID1) 卷。但是,这仅用于初始化后访问。这样,当您将新的内核或引导加载程序配置文件写入 /boot 时,它将被写入多个物理分区。在预初始化引导加载程序阶段,只会从其中一个分区读取。
典型的设置可能如下所示
One-disk system --------------- +------------------------------------------------+ | small partition (32--100M), holding | | only /boot, filesystem needn't be journaled | +------------------------------------------------+ | rest of disk in second partition | | +------------------------------------------+ | | | cryptsetup volume | | | | +-------------------------------------+ | | | | | LVM PV, containing single VG, | | | | | | containing multiple LVs, holding | | | | | | /, /home, swap, etc | | | | | +-------------------------------------+ | | | +------------------------------------------+ | +------------------------------------------------+ Two-disk system --------------- +------------------------------------------------+ +------------------------------------------------+ | small partition (32--100M), holding | | small partition (32--100M), holding | These 2 partitions might | only /boot, filesystem needn't be journaled | | only /boot, filesystem needn't be journaled | form a mirrored (RAID1) +------------------------------------------------+ +------------------------------------------------+ volume | rest of disk in second partition | | rest of disk in second partition | | T================================================================================================T | These 2 partitions form | T +--------------------------------------------------------------------------------------------+ T | a second mirrored | T | cryptsetup volume | T | (RAID1) volume | T | +---------------------------------------------------------------------------------------+ | T | | T | | LVM PV, containing single VG, | | T | | T | | containing multiple LVs, holding | | T | | T | | /, /home, swap, etc | | T | | T | +---------------------------------------------------------------------------------------+ | T | | T +--------------------------------------------------------------------------------------------+ T | | T================================================================================================T | | | | | +------------------------------------------------+ +------------------------------------------------+
在三磁盘系统中,/boot 仍然是 RAID1,但在这种情况下,较大的分区可能是 RAID5。
RAID
如果您提供 -r 开关,或者指定多个设备,则 setup-disk
将自动构建 RAID 阵列。
如果您想手动构建 RAID 阵列,请参阅 设置软件 RAID 阵列。然后您可以添加额外的加密和/或逻辑卷层,或者只是组装 RAID 阵列,并将 /dev/mdi 设备直接提供给 setup-disk。完成后,请务必在重启之前拆卸 RAID 阵列。
如果 setup-disk
看到您正在使用 RAID,无论是由于您给它提供了 -r
开关、多个设备还是 /dev/mdi 设备,那么它将正确设置您的 initramfs 和 extlinux.conf 文件。但是,在其他情况下,例如当您也使用加密时,或者您使用挂载的目录参数调用 setup-disk
时,这些可能未正确设置为 RAID。在这种情况下,您可能需要手动编辑/重建它们。以下假设 $MNT
保存您要安装到的根目录
echo "/sbin/mdadm" > $MNT/etc/mkinitfs/files.d/raid echo "/etc/mdadm.conf" >> $MNT/etc/mkinitfs/files.d/raid # 编辑 $MNT/etc/mkinitfs/mkinitfs.conf 以确保 features="..." # 包括 raid(此字段以空格分隔并用引号引起来) mkinitfs -c $MNT/etc/mkinitfs/mkinitfs.conf -b $MNT # 编辑 $MNT/etc/update-extlinux.conf 以确保 modules=... 包含 # raid1 或 raid456(以您的 / 所在的为准;此字段以逗号分隔) # 还要检查 root= 设置 extlinux --raid --install $MNT/boot --update

extlinux ...
添加 --update
选项是否足以使 /boot/extlinux.conf 被重新生成?或者我们是否需要手动调整该文件,或者也运行 update-extlinux
?
您可能还需要手动调整 $MNT/etc/fstab。您可能还需要将 /usr/share/syslinux/mbr.bin 复制到磁盘的 MBR。
加密
请参阅 使用 LUKS 设置加密卷。您可以添加额外的逻辑卷层,或者只是解锁您创建的卷(使用 cryptsetup luksOpen ...
),并将 /dev/mapper/something 设备直接提供给 setup-disk。完成后,请务必在重启之前重新锁定卷(使用 cryptsetup luksClose ...
)。
如果将您的 / (根) 目录安装在加密卷上,您需要手动编辑/重建您的 initram 和 extlinux.conf 文件。以下假设 $MNT
保存您要安装到的根目录,您已在设备 /dev/md2 上创建了加密卷,并且您想将加密卷解锁到名为“crypt”的虚拟卷中
# 编辑 $MNT/etc/mkinitfs/mkinitfs.conf 以确保 features="..." # 包括 cryptsetup(此字段以空格分隔并用引号引起来) mkinitfs -c $MNT/etc/mkinitfs/mkinitfs.conf -b $MNT # 编辑 $MNT/etc/update-extlinux.conf 以确保 default_kernel_opts="..." # 包含 cryptroot=/dev/md1 和 cryptdm=crypt(此字段也以空格分隔并用引号引起来) # 还要检查 root= 设置 extlinux --install $MNT/boot --update

extlinux ...
添加 --update
选项是否足以使 /boot/extlinux.conf 被重新生成?或者我们是否需要手动调整该文件,或者也运行 update-extlinux
?
您可能还需要手动调整 $MNT/etc/fstab。
LVM
如果您提供 -L 开关,则 setup-disk
将自动构建和使用 LVM 组中的卷。
如果您想手动构建 LVM 系统,请参阅 使用 LVM 设置逻辑卷。然后 vgchange -ay
,格式化并挂载您的卷,并将根挂载点提供给 setup-disk。完成后,请务必
umount ... vgchange -an
在重启之前。
如果 setup-disk
看到您正在使用 LVM,可能是因为您给它提供了 -L
开关,那么它将正确设置您的 initram 和 extlinux.conf 文件。但是,在其他情况下,这些可能未正确设置。在这种情况下,您可能需要手动编辑/重建它们。以下假设 $MNT
保存您要安装到的根目录
# 编辑 $MNT/etc/mkinitfs/mkinitfs.conf 以确保 features="..." # 包括 lvm(此字段以空格分隔并用引号引起来) mkinitfs -c $MNT/etc/mkinitfs/mkinitfs.conf -b $MNT # 编辑 $MNT/etc/update-extlinux.conf 以确保 root= 设置正确 extlinux --install $MNT/boot --update

extlinux ...
添加 --update
选项是否足以使 /boot/extlinux.conf 被重新生成?或者我们是否需要手动调整该文件,或者也运行 update-extlinux
?
您可能还需要手动调整 $MNT/etc/fstab。
故障排除
挂载 /dev/sdXY sysroot 失败
错误消息如下所示,/dev/sda8
会根据分区号和 SSD/HDD 等有所不同
mounting /dev/sda8 on /sysroot failed: No such file or directory mounting root: failed initramfs emergency recovery shell launched. Type 'exit' to continue boot sh: can't access tty: job control turned off
上述错误消息可能是由多种原因引起的。请按照紧急 shell 中的以下步骤来确定一种可能的原因。
- 通过发出命令验证安装 Alpine Linux 的分区名称是否与上述 错误 匹配,并记下该分区的文件系统类型(例如 TYPE="ext4")
blkid
- 通过发出命令确保 sysroot 存在。
ls -ld /sysroot
- 检查发出命令时是否出现上述错误消息。
mount /dev/sda8 /sysroot
- 如果步骤 4 中的错误消息匹配,请检查是否已加载文件系统模块,方法是发出命令。
lsmod |grep ext4
- 如果没有输出,则确认上述 问题 是由 缺少文件系统模块 引起的。
内核命令行中缺少文件系统模块
BusyBox mount 命令不会自动加载模块,因此需要将文件系统模块添加到内核命令行。即使 alpine 安装程序会自动执行此操作,但在手动磁盘安装的情况下,特别是对于 双启动 安装,也必须注意这一点。
- 要解决此问题,请发出命令以加载适当的文件系统模块(例如 TYPE="ext4")。
modprobe ext4
- 要验证问题是否已解决,请重新发出命令。
mount /dev/sda8 /sysroot
- 如果挂载成功,请发出以下命令以启动进入 Alpine Linux。
exit
根据您的用例选择适当的解决方案进行永久修复
- 如果您正在使用 grub,请确保 GRUB_CMDLINE_LINUX 行文件 /etc/default/grub 具有适当的文件系统模块
ext4
和rootfstype=ext4
,如下所示/etc/default/grub的内容
... GRUB_CMDLINE_LINUX="console=ttyS0,19200n8 net.ifnames=0 modules=sd-mod,usb-storage,ext4 quiet rootfstype=ext4" ...
- 如果您正在使用 Syslinux,请确保文件 /boot/extlinux.conf 中的 APPEND root 行具有适当的文件系统模块
ext4
,如下所示/boot/extlinux.conf的内容
... APPEND root=/dev/sdXY modules=sd-load,usb-storage,ext4 quiet ...
- 对于独立于 引导加载程序 的解决方案,请确保文件 /etc/mkinitfs/mkinitfs.conf 中包含必要的文件系统模块。有关更多信息,请参阅 Initramfs 页面并重新创建 initramfs 镜像。
参见
- 引导加载程序 - 有关 GRUB、Syslinux 和 rEFInd 的信息
- 安装到具有双启动的 HDD
- 在 chroot 中安装 Alpine Linux
- 远程替换非 Alpine Linux 为 Alpine
- setup-partitions
- Gdisk 官方网站 gdisk、cgdisk 和 sgdisk 的可用演练