MKOSI-How-To(四)
构建Disk镜像的进阶配置
控制分区
MKOSI使用systemd-repart创建磁盘镜像并对其进行分区,它内置的分区格式通常情况下就够用了,但是如果你希望自定义分区(比如单独分一个/home)也是可以的,你只需要创建一个mkosi.repart/目录,然后在其中保存systemd-repart的分区配置。举例来说,MKOSI内置的配置可以这样理解:
mkosi.repart/00-esp.conf:
1 | [Partition] |
mkosi.repart/10-root.conf:
1 | [Partition] |
你可以添加一个:
mkosi.repart/15-home.conf:
1 | [Partition] |
使用UKI
UKI(Unified Kernel Image)是一种systemd主推的新内核格式和引导方式。
默认情况下,MKOSI不会自动将内核转换为UKI,这一行为可以通过UnifiedKernelImage=unsigned配置:
1 | [Content] |
默认情况下,MKOSI会使用systemd-boot进行引导,但是UKI是可以直接用作UEFI PE程序进行引导的,你可以通过Bootloader=uki使用这一模式,这样就可以摆脱对systemd-boot的依赖,但代价是你将无法再利用systemd-boot在启动时动态配置内核命令行参数或是选择多个版本:
1 | [Content] |
安全启动
安全启动的配置比较复杂,默认情况下,MKOSI会帮你打理好一切,你只需要设置:
1 | [Validation] |
然后,执行这条命令创建你的安全启动签名:
1 | mkosi genkey |
内核模块添加
在构建磁盘镜像时,MKOSI自动构建一个Initrd供其引导使用,在这个过程中,MKOSI会根据内置的一个列表在Initrd内包含一系列内核模块。通常情况下,这是够用的,但是如果你的场景需要更多内核模块,可以通过KernelInitrdModules=添加:
1 | [Content] |
或者,如果你想使用自己提供的Initrd,也可以进行设置:
1 | [Content] |