mkosi
mkosi 代表 Make Operating System Image,是一个用于生成可启动的操作系统树或镜像的工具。
安装
安装 mkosi 或 mkosi-gitAUR。根据您想在操作系统树/镜像中使用的发行版,安装以下软件包
发行版 | 软件包 |
---|---|
Arch | arch-install-scripts |
Debian | debootstrap, debian-archive-keyring, apt |
Ubuntu | debootstrap, ubuntu-keyring, apt |
Fedora | dnf |
OpenSUSE | zypper-gitAUR |
CentOS | dnf-legacy-utilsAUR |
基本用法
您可以通过直接运行它而不带任何参数来创建镜像
# mkosi
您可以通过参数指定选项,或者通过编辑当前文件夹中的文件来指定。
创建和启动 Debian 镜像
以下示例将创建一个可启动镜像,其中安装了最新的 Debian 版本以及 openssh-client 和 vim 软件包。此命令需要 mkosi 的可选依赖项 mtools 和 systemd-ukify。根据镜像的不同,也可以由非特权(非 root)用户构建
$ mkosi --distribution debian --release bookworm --format disk --bootable --checksum --root-password password --package linux-image-generic,systemd,systemd-boot,systemd-sysv,udev,dbus --package openssh-client,vim --output image.raw
systemd-nspawn 可以启动生成的镜像
# systemd-nspawn --boot --image image.raw
它也可以通过 QEMU/KVM 或 systemd-vmspawn(1) 虚拟化
$ mkosi --output image.raw --qemu-smp 2 qemu
您也可以将此镜像写入 USB 驱动器并用它来启动您的计算机。
使用配置文件
可以使用配置文件 mkosi.conf
创建相同的 Debian 镜像,然后不带任何参数运行 mkosi
mkosi.conf
[Distribution] Distribution=debian Release=bookworm [Output] Format=disk Output=image.raw [Content] Bootable=yes Packages=linux-image-generic,systemd,systemd-boot,systemd-sysv,udev,dbus openssh-client vim RootPassword=password [Validation] Checksum=yes
请参阅 bootable[死链 2024-10-12 ⓘ] 以获取更多发行版启动示例。
下载的软件包文件和临时构建文件存储在主目录缓存目录或 /var/cache/mkosi
和 /var/tmp
中。
配置设置
设置可以指定为命令行参数,或者例如,在当前目录中名为 mkosi.conf
的文件中指定。最重要的设置是
命令行 | 配置文件 | 描述 |
---|---|---|
--distribution
|
[Distribution] Distribution= |
要安装的发行版的名称。支持的发行版有:fedora, debian, ubuntu, arch, opensuse, mageia, centos, openmandriva, rocky, alma |
--release
|
[Distribution] Release= |
发行版的版本:数字字符串或发行版版本名称 (bookworm, … ) |
--format
|
[Output] Format= |
要创建的镜像的格式。例如
|
--output
|
[Output] Output= |
镜像文件或目录的名称 |
--output-directory
|
[Output] OutputDirectory= |
镜像文件或目录(以及其他生成的工件)的位置 |
--bootable
|
[Content] Bootable= |
启用或禁用生成可启动镜像:yes, no |
--package
|
[Content] Packages= |
要安装到镜像中的软件包列表:(多行)和/或逗号分隔列表 |
--root-password
|
[Content] RootPassword= |
初始 root 密码 |
用作 initramfs 生成器
Mkosi 提供了一个 kernel-install 插件来构建 initramfs,类似于 mkinitcpio 或 dracut。
为了使用它,安装 cpio 并编辑 kernel-install 配置文件
/etc/kernel/install.conf
initrd_generator=mkosi-initrd
注意: 生成的 initrd 比 mkinitcpio 生成的要大得多。