经典安装或树莓派上的 sys 模式
本页介绍在 Raspberry Pi 上安装 Alpine Linux 的传统安装或 sys 模式。
推荐安装方法
- 创建基于 SD 卡的安装介质。
- 运行 setup-alpine 脚本直到基本配置的步骤 11(即 SSH)。不要跳过网络配置,因为完成 sys 模式安装必须要有互联网连接。
- 在“磁盘 & 安装”部分,按如下方式回答问题
- 没有可用磁盘。尝试启动介质 /media/mmcblk0? (y/n) [n],更改默认选项并输入 y。
- 您想使用哪个磁盘?(或输入“?”寻求帮助,或输入“none”)[none],根据显示的信息输入设备名称 mmcblk0。
- 您想如何使用它?(“sys”、“data”、“crypt”、“lvm”或“?”寻求帮助)[?],输入 sys。
- 警告:擦除上述磁盘并继续? (y/n) [n] 更改默认选项并输入 y 以继续安装。
- 安装结束时,您可以重启以启动新安装的 Alpine Linux 并进行进一步配置。
上述步骤在下面以屏幕截图形式显示以供参考。根据您的安装介质和 pi 型号的大小,信息可能会有所不同。
Disk & Install ---------------- No disks available. Try boot media /media/mmcblk0? (y/n) [n] y * WARNING: you are stopping a sysinit service * Caching service dependencies ... [ ok ] * Unmounting /.modloop ... [ ok ] Available disks are: mmcblk0 (64.1 GB ) Which disk(s) would you like to use? (or '?' for help or 'none') [none] mmcblk0 The following disk is selected: mmcblk0 (64.1 GB ) How would you like to use it? ('sys', 'data', 'crypt', 'lvm' or '?' for help) [?] sys 100% ████████████████████████████████████████████████████████████████████████████████████████████████████████████ /usr/sbin/update-raspberrypi-bootloader: WARNING: no kernel found WARNING: The following disk(s) will be erased: mmcblk0 (64.1 GB ) WARNING: Erase the above disk(s) and continue? (y/n) [n] y Partition #2 contains a ext4 signature. Creating file systems... mkfs.fat 4.2 (2021-01-31) Installing system on /dev/mmcblk0p2: 100% ████████████████████████████████████████████████████████████████████████████████████████████████████████████ ==> initramfs: creating /boot/initramfs-rpi for 6.12.8-0-rpi /usr/sbin/update-raspberrypi-bootloader: INFO: replaced config.txt and saved config.txt.old Configured kernel vmlinuz-rpi / initramfs-rpi Installation is complete. Please reboot.
手动安装
以下步骤过去使用过。自 Alpine Linux v3.21 起不再需要。
在 8 GB(或更大)的 class 10 SD 卡上创建包含两个分区的 MBR 分区表
- 第一个分区,fat32 类型,大小为 256MB。您可能需要设置 boot 和 lba 标志
- 第二个分区,ext4 类型,占用介质上的剩余空间
- 弹出并重新插入 SD 卡以确保识别所有分区。
- 进入第一个分区 (fat32)。使用 tar 解压存档
tar zxvf ~/Download/alpine-rpi-3.21.3-armhf.tar.gz
正确弹出 SD 卡。将其插入 Raspberry Pi。插入 USB 键盘以及 HDMI 和网线。通电。当命令提示符显示时,以 root 身份登录。(没有密码)
执行以下命令。确保有可用的互联网连接,否则设置 apk 镜像将失败。
setup-alpine
设置键盘映射、时区、如何连接到网络(dhcp 是最佳方法),在 save config 和 save cache 时选择 none。
apk update
如果 SD 卡中的额外空间为空,则现在必须创建分区
apk add cfdisk e2fsprogs # or the tool of your choice cfdisk /dev/mmcblk0 # create the new partition with the free space mkfs.ext4 /dev/mmcblk0p2 # create the ext4 filesystem in the new partition
Raspberry Pi 没有硬件时钟,因此请与 ntp 服务器同步
apk add chrony
service chronyd restart

#12353
mount /dev/mmcblk0p2 /mnt # The second partition, in ext4 format, where Alpine Linux is installing in sys mode export FORCE_BOOTFS=1 # work around for issue 12353 setup-disk -m sys /mnt mount -o remount,rw /media/mmcblk0p1 # An update in the first partition is required for the next reboot.
运行 setup-disk 时,您可能会收到一些关于 syslinux 的警告。您可以安全地忽略它。
更新启动分区(保留 alpine-rpi* 镜像布局)
从这里,我们可以更新启动分区以保留 alpine-rpi* 镜像布局,或者保留系统分区/setup-alpine 的布局(见下一节)。我们只需要两者之一。而不是两者都用。
清理第一个分区中的 boot 文件夹以删除未使用的文件
rm -f /media/mmcblk0p1/boot/* cd /mnt # We are in the second partition rm boot/boot # Drop the unused symbolic link
将 Alpine Linux 的镜像和 initramfs 移动到正确的位置
mv boot/* /media/mmcblk0p1/boot/ rm -Rf boot mkdir media/mmcblk0p1 # It's the mount point for the first partition on the next reboot
执行以下操作时,不用担心错误
ln -s media/mmcblk0p1/boot boot
更新启动分区(保留系统分区/setup-alpine 布局)
事实证明,setup-alpine 创建的系统分区具有可用的启动布局。要保留此布局,请执行以下步骤,而不是上一章中的步骤。
清理 boot / 第一个分区以删除未使用的文件
rm -Rf /media/mmcblk0p1/* cd /mnt # We are in the second partition rm boot/boot # Drop the unused symbolink link
将 setup-alpine 创建的 boot 文件夹移动到正确的位置
cd /media/mmcblk0p1 mkdir boot
cd /mnt mv boot/* /media/mmcblk0p1/ rm -Rf boot mkdir media/mmcblk0p1 # It's the mount point for the first partition on the next reboot
执行以下操作时,不用担心错误
ln -s media/mmcblk0p1 boot
启动分区更新结束 - 两种情况都从这里继续
更新 /etc/fstab
echo "/dev/mmcblk0p1 /media/mmcblk0p1 vfat defaults 0 0" >> etc/fstab sed -i '/cdrom/d' etc/fstab # Of course, you don't have any cdrom or floppy on the Raspberry Pi sed -i '/floppy/d' etc/fstab cd /media/mmcblk0p1
如果您想激活 edge 仓库
sed -i '/edge/s/^#//' etc/apk/repositories # But enable the repository for community if you want vim, mc, php, apache, nginx, etc.
对于下次启动,指示根文件系统位于第二个分区。如果 cmdline.txt 文件包含以 /root
开头的行,则使用 sed
sed -i 's/$/ root=\/dev\/mmcblk0p2 /' /media/mmcblk0p1/cmdline.txt reboot
这适用于 Raspberry Pi 3B 和 1B,但如果您使用的是 1B 版本,则需要非常有耐心(几十分钟)。如果硬盘通过 usb 连接,您可以将上面的 /dev/mmcblk0p2
替换为 /dev/sda1
,例如。
将无盘模式转换为 sys 模式
也可以将无盘安装切换到完全基于磁盘的安装。这尚未得到正式支持,但可以手动完成。这释放了原本根文件系统所需的全部内存,从而允许安装更多软件包。
将您的 SD 卡分成两个分区:上面描述的 FAT32 启动分区(在本例中为 mmcblk0p1
),以及用于保存根文件系统的第二个分区(此处为 mmcblk0p2
)。如上所述启动并配置您的无盘系统,然后创建根文件系统
apk add e2fsprogs mkfs.ext4 /dev/mmcblk0p2
现在通过挂载点进行磁盘安装。setup-disk 脚本会给出一些关于 syslinux/extlinux 的错误,但您可以忽略它们。Raspberry Pi 不需要它们来启动。
mkdir /stage mount /dev/mmcblk0p2 /stage setup-disk -o /media/mmcblk0p1/MYHOSTNAME.apkovl.tar.gz /stage # (忽略关于 syslinux/extlinux 的错误)
在 /stage/etc/fstab
中添加一行以再次挂载 Pi 的启动分区
/dev/mmcblk0p1 /media/mmcblk0p1 vfat defaults 0 0
现在向 Pi 的启动命令行添加 root=/dev/mmcblk0p2
参数,可以是 cmdline-rpi2.txt
或 cmdline-rpi.txt
,具体取决于型号
mount -o remount,rw /media/mmcblk0p1 sed -i '$ s/$/ root=\/dev\/mmcblk0p2/' /media/mmcblk0p1/cmdline-rpi2.txt
注意:当 Pi 启动时,/boot 的内容将被忽略。它将使用 FAT32 启动分区中的内核、initramfs 和 modloop 镜像。要更新内核、initfs 或模块,您需要手动(生成并)将它们复制到启动分区,或者您可以使用绑定挂载,在这种情况下,不需要手动将文件复制到启动分区。
echo /media/mmcblk0p1/boot /boot none defaults,bind 0 0 >> /etc/fstab
覆盖根文件系统
可以通过在 /boot/cmdline.txt
文件中添加选项 overlaytmpfs=yes
来启用覆盖根文件系统。这将导致底层的 SD 卡根文件系统以只读方式挂载,并使用覆盖的 tmpfs 进行修改,这些修改将在关机时丢弃。此选项将避免在 pi 上不断写入 SD 卡。
/boot/cmdline.txt 文件如下所示
/boot/cmdline.txt 的内容
以下输出显示了启用覆盖根文件系统时文件系统的挂载方式
# df -m Filesystem 1M-blocks Used Available Use% Mounted on ... /dev/mmcblk0p2 59555 326 56172 1% /media/root-ro root-tmpfs 225 13 211 6% /media/root-rw overlayfs 225 13 211 6% / ... # mount ... /dev/mmcblk0p2 on /media/root-ro type ext4 (ro,relatime) root-tmpfs on /media/root-rw type tmpfs (rw,relatime,mode=755) overlayfs on / type overlay (rw,relatime,lowerdir=/media/root-ro,upperdir=/media/root-rw/root,workdir=/media/root-rw/work,uuid=on) ...
在 /boot/cmdline.txt
文件中使用切换脚本删除并重新添加 overlaytmpfs=yes
选项将允许在 pi 上轻松维护,并且可以轻松添加/删除任何软件/配置。