架构

来自 Alpine Linux

本页简要介绍了构成 Alpine Linux 的组件。有关更多详细信息,请参阅 wiki 概览页面。

支持的架构

Alpine Linux 硬件支持矩阵
架构 架构 描述 起始版本
x86 x86 32 位 i686 兼容(或更高版本)的 CPU,至少具有 CMOVSSE2 全部
x86_64 AMD64 兼容的 64 位 x86 指令集 全部
ARM armhf 32 位 ARM,带有硬浮点 ABI - 适用于 ARMv6 设备 - Raspberry Pi 1, Zero, ZeroW, cm1 (defconfig bcmrpi) v3.0
armv7 32 位 ARM - 适用于 ARMv7 设备 - Raspberry Pi 2, 3, 3+, Zero2W, cm3, cm3+ (defconfig bcm2709) v3.9
aarch64 64 位 ARM - 适用于 ARMv8+ 设备 - Raspberry Pi 3, 3+, 4, 400, Zero2W, cm3, cm3+, cm4, 5 (defconfig bcm2711) v3.5
PowerPC ppc64le 64 位 PowerPC (小端序),主要用于 POWER8 和 POWER9 v3.6
IBM System Z s390x IBM Z 大型机,特别是 IBM Z 和 IBM LinuxONE (z196 最低配置) v3.6
RISC V riscv64 64 位 RISC V v3.20
LoongArch loongarch64 64 位 LoongArch v3.21


Alpine 软件包

软件包构建

Alpine 软件包构建端口

  • APKBUILD - 软件包构建脚本
  • aports - 官方 Alpine 端口 Git 仓库

软件包构建工具

软件包格式

Alpine 使用 .apk 文件格式的软件包。

软件包管理工具

  • apk - Alpine 软件包管理器 (有关更多详细信息,请参阅 Apk 规范)

启动过程

待办事项:以下部分需要清理并添加正确的维基链接


引导加载程序

引导加载程序负责查找 initfs、cmdline 和内核,并将执行权移交给内核。

一些引导加载程序允许用户交互式选择要使用的操作系统或内核(如果存在多个)。

EFI

BIOS

  • 默认设置使用 GRUB2。

其他

内核

版本控制

版本
  • lts - 长期支持内核,通用
  • virt - 用于在虚拟机下运行
  • edge - 最新稳定内核
  • rpi - Raspberry Pi
  • rpi2 - Raspberry Pi 2 (仅 Alpine ≤v3.18,在当前版本中已合并到 rpi)
  • rpi4 - Raspberry Pi 4 (仅 Alpine ≤v3.18,在当前版本中已合并到 rpi)
  • ashai - Apple M1

签名

命令行选项

  • modules="<模块列表>" - 指定 initramfs /init 需要加载的模块列表,以挂载真正的根文件系统。

Initfs

内核将解压缩通过 'append' 引导加载程序选项传递给它的压缩 cpio 归档流,到 'rootfs' 的根目录,这是一个在启动时由内核自动挂载到 '/' 的 tmpfs。

'/init' 脚本

不要与 /sbin/init(见下文) 混淆

此脚本位于 initfs 文件系统的根目录中,并在内核完成其启动过程后被内核调用。它负责执行必要的步骤来将真正的根文件系统挂载到 /,并将控制权移交给 /sbin/init

  • 解析内核命令行选项。
  • 使用 nlplug-findfs 发现设备。
  • [可选] 提示输入磁盘加密密钥和解锁加密分区。

Initfs 模块处理

挂载根文件系统和启动所需的模块必须内置于内核中,或者通过 引导加载程序提供的附加 initrd cpio.gz 文件在 initramfs 文件系统中可用。

/init 脚本将首先 modprobemodules= 内核命令行选项和指定的 rootfs 类型名称指定的模块。然后,它将加载 /etc/modules 的内容,其中可能包括模块选项。可以使用 blacklist= 内核命令行选项将模块列入自动探测的黑名单(但不是显式插入!),该选项将黑名单条目附加到 '/etc/modprobe.d/boot-opt-blacklist.conf'

最小必需集合

待办事项:/media 即使包含在 alpine-baselayout 中,也不是必需的


目录结构
  • / /bin /boot /dev /etc /lib /lib/modules /media /media/cdrom /media/usb /mnt /proc /sbin /sys /usr /usr/bin /usr/sbin
设备
  • /dev/null
  • /dev/console
  • /dev/kmsg
挂载点
  • /proc
  • /sys
  • /dev (可以禁用吗?)
配置
  • /etc/passwd
  • /etc/group
  • /etc/fstab
二进制文件

功能集

功能集由模块和文件列表组成,这些模块和文件需要包含在最终的 initramfs 中,以支持指示的功能。

Init

/sbin/init 是在 initramfs 完成其工作后,在运行系统(live system)中启动的第一个进程。它是 Busybox 软件包的一部分,不应与上面提到的 /init 脚本 混淆

加载内核模块

/etc/init.d/modules 加载 /etc/modules/(etc|run|usr/lib|lib)/modules-load.d/*.conf 中指定的所有模块

另请参阅