unpackfs模块:
这个模块就是配置需要安装哪些内容到目标系统的模块,配置较为灵活。
unpack:
- source: "/run/initramfs/memory/data/MagicLive/modules/01-core.sb"
sourcefs: "squashfs"
destination: ""
exclude: "/home/liveuser"
source指安装来源,sourcefs指安装来源的文件类型,目前支持squashfs、ext4和file。其中squashfs的source应该是一个squashfs的压缩文件,ext4的来源是一个ext4分区的img文件,file就是单个的文件或文件夹。如ext4的可以这么写:
- source: "/path/to/another/filesystem.img"
sourcefs: "ext4"
destination: ""
file的可以这么写:
- source: ../CHANGES
sourcefs: file
destination: "/tmp/derp"
- source: ../src/modules/dummycpp
sourcefs: file
destination: "/tmp/derp"
如果是文件夹,会复制文件夹内所有文件到目标目录。
destination是目标路径,如果是空,就是目标系统的根目录。如果不是空,就按指定路径复制。
unpackfs模块支持多条source,按顺序解压后安装,他实际上是挂载后用rsync复制,所以要注意源和目标路径最后的/。
他还支持两个选项,一是condition,是解压的条件,默认都是true,设置成false就不解压了。这个主要是可以设置成变量,可以支持最小安装、完整安装之类的,例如 userChoice.installType 或 feature.enableExtras 之类的。还有一个是optional,如果写成optional: true,则这个源可以找不到,找不到就跳过,如果没有这个选项,找不到源会中断安装。
unpackfsc模块:
这个模块和unpackfs模块的功能一样,但是不使用rsync,而是使用解压工具,所以一次只能配置一个安装来源,如果有多个安装来源,需要配置多个实例。Magic目前只有一个安装来源,所以使用这个模块,这个比unpackfs模块要快。
source: "/run/initramfs/memory/data/MagicLive/modules/01-core.sb"
sourcefs: squashfs
destination: "/"
# condition: true
source是安装来源,目前只支持squashfs、fsa、tar三种压缩(打包)文件。sourcefs指定源格式:squashfs(别名:`squash`、`unsquash`)、`fsarchiver`(别名:`fsarchive`、`fsa`、`fsa-dir`)、`fsarchiver-block`(别名:`fsa-block`、`fsa-fs`)、tar、none(无实际意义)。destination和condition和unpackfs里的意义一样。
machineid模块:
生成目标系统的随机ID,支持systemd和dbus。
systemd: true
是否为systemd创建/etc/machine-id,Magic为true。
systemd-style: uuid
如果上面的systemd指定为true,这里指定生成id的类型,支持uuid、systemd(同uuid)、blank(空文件)、none(同blank)、literal-uninitialized(创建文件并写入字符串 “uninitialized\n”)。
dbus: true
是否为dbus创建/var/lib/dbus/machine-id文件,Magic为true。
dbus-symlink: true
是否让 /var/lib/dbus/machine-id 成为指向 /etc/machine-id 的符号链接,Magic为true。
entropy-copy: false
是否从live系统里复制熵文件,设置为true的话,会从下面指定的文件里复制,否则就用/dev/urandom生成。
entropy-files:
- /var/lib/urandom/random-seed
- /var/lib/systemd/random-seed
luksbootkeyfile模块:
这个模块用于为 LUKS 加密分区生成启动密钥文件(实现自动解锁)。
luks2Hash: default
配置就这一条,指定的是加密算法,可以是pbkdf2、argon2i、argon2id或default,default则用cryptsetup的默认算法,目前是argon2id。保持默认即可。
fstab模块:
这个模块负责生成目标系统的 /etc/fstab 和 /etc/crypttab,并创建挂载点。
crypttabOptions: luks
附加到 /etc/crypttab 每一行末尾的选项,debian系的发行版需要使用luks,keyscript=/bin/cat,以支持自动解锁,Magic用上面的配置即可。
tmpOptions:
default:
tmpfs: false
options: ""
ssd:
tmpfs: true
options: "defaults,noatime,mode=1777"
这个指定tmp目录的挂载方式,对于非ssd/nvme硬盘,/tmp直接挂载到/分区或其它指定分区,对于ssd/nvme硬盘,/tmpr使用tmpfs挂载到内存系统上,以减少对硬盘的读写损耗。option就是挂载选项。Magic做如上配置即可。
displaymanager模块:
这个模块用来配置登录管理器(DM)。
displaymanagers:
- slim
- sddm
- lightdm
- gdm
- mdm
- lxdm
- greetd
calamares会按上面的顺序逐个尝试DM,到第一个能启动的为止,Magic安装盘上目前只有sddm,所以就是sddm。opensuse有单独的机制,需要配置sysconfig。
#defaultDesktopEnvironment:
# executable: "startkde"
# desktopFile: "plasma"
上面用来强制指定桌面环境,calamares会把他写入相应dm的配置文件,否则会用dm的自动配置,这个一般不用设置。
basicSetup: false
如果设置成true,calamares会处理dm相关的用户、用户组及相关目录设置,一般情况下设置成false即可。
sysconfigSetup: false
opensuse以外的发行版本设置成false即可。
greetd:
greeter_user: "tom_bombadil"
greeter_group: "wheel"
greeter_css_location: "/etc/greetd/style.css"
lightdm:
preferred_greeters: ["lightdm-greeter.desktop", "slick-greeter.desktop"]
sddm:
configuration_file: "/etc/sddm.conf"
这是一些dm的单独设置选项,基本保持默认就好。
systemd-services 模块:
这个模块用来配置systemd的服务。
# units:
# - name: "NetworkManager.service"
# action: "enable"
# mandatory: true
#
# - name: "cups.socket"
# action: "disable"
# # The property "mandatory" is taken to be false by default here
# # because it is not specified
#
# - name: "graphical.target"
# action: "enable"
# # The property "mandatory" is taken to be false by default here
# # because it is not specified
#
# - name: "pacman-init.service"
# action: "mask"
# # The property "mandatory" is taken to be false by default here
# # because it is not specified
只有一个键,units,里面的选项,name是systemd的服务名称,只要是systemd的服务名称就行,action是需要做的动作,比如enable、disable、mask、unmask等,只要在chroot环境下可以执行systemctl命令即可。mandatory指示这个命令是否必须成功,如果设置成true,当执行不成功时会中断安装,设置成false或不设置,则执行错误不影响继续安装,命令按顺序执行。Magic目前没有需要特殊设置的,所以是:
units: []
不做任何改变。
dracut模块:
生成启动用的initrd的模块,同样功能的还有initramfs/initcpio等模块,根据发行版本不同用不同的模块,Magic用dracut。
# initramfsName: /boot/initramfs-freebsd.img
这个可以配置initramfs的名称,不设置的话用dracut默认值。
options: [ "-f" ]
这是地方指定dracut用参数,一般情况下-f是必须的。
grubcfg 模块:
这个模块用来写入grub的默认配置。
overwrite: false
设置是否覆盖/etc/default/grub文件,如果设置成true,就重新生成并覆盖原来的文件,设置为false会编辑原来的文件。
prefer_grub_d: false
是否使用/etc/default/grub.d目录,如果设置成true,则会在这个目录下生成00Calamares文件,而不是修改/etc/default/grub文件。
keep_distributor: false
是否保留配置文件中的GRUB_DISTRIBUTOR值,如果设置成true就不用安装程序中的值覆盖,设置为false就好。
kernel_params: [ "quiet" ]
内核启动参数,一般保持默认就好。
defaults:
GRUB_TIMEOUT: 5
GRUB_DEFAULT: "saved"
GRUB_DISABLE_SUBMENU: true
GRUB_TERMINAL_OUTPUT: "console"
GRUB_DISABLE_RECOVERY: true
GRUB_LANGUAGE: "zh_CN.UTF-8"
文件中的默认配置,仅在新建或选了覆盖的时候生效。
always_use_defaults: false
设置成true的话,就是不管选不选覆盖都使用上面的默认值 。
bootloader 模块:
启动器配置模块,主要针对EFI启动,BIOS启动涉及的配置内容很少。
efiBootLoader: "grub"
使用哪种efi启动器,有4种选项,grub(其实是grub2)、refind(更美观)、sb-shim(支持安全启动)、systemd-boot(更轻量),目前Magic使用的是grub。
kernelSearchPath: "/usr/lib/modules"
kernelPattern: "^vmlinuz.*"
内核的搜索路径和匹配模式设置,保持上面的就好。
loaderEntries:
- "timeout 5"
- "console-mode keep"
systemd-boot的loader.conf的附加选项。
kernelParams: [ "quiet" ]
systemd-boot和refind的附加内核启动参数,grub的在上面的grubcfg模块中配置。
grubInstall: "grub2-install"
grubMkconfig: "grub2-mkconfig"
grubCfg: "/boot/grub2/grub.cfg"
grubProbe: "grub2-probe"
efiBootMgr: "efibootmgr"
grub相关的命令名称,Magic和fedora一样,用上面的配置。
efiBootloaderId: "magic"
这个是设置EFI启动器的ID,会传递给grub2-install –bootloader-id,这个id一般是硬编码在grub中的,比如debian系基本都是debian。Magic改成了magic。其它的可以参考模块配置文件中的说明,一般不需要改动。
installEFIFallback: true
是否安装bootx64.efi(bootloonagrch64.efi)等,部分主板需要这个,保持默认的true即可。
packages模块:
这个模块用来安装、卸载有关的包,也就是如果不用unpackfs的方式安装系统 ,也可以在这里指定需要安装的程序(类似原来MI2的安装方式或者说fedora的安装方式)。
backend: dnf5
安装使用的后端,支持dnf/dnf5/apk/apt/pacman/pamac/portage/yum/zypp/luet/entropy等等,Magic目前使用dnf5。测试的时候可以设置成dummy。
skip_if_no_internet: false
update_db: false
update_system: false
一些动作的配置,skip_if_no_internet是指没有互联网时是否跳过安装,如果需要在线安装,这个就设置成true;update_db指是否更新目标系统的软件包数据库(比如执行apt update、dnf makecache、pacman -Syy 等),需要在线安装 ,就设置成true;update_system是指是否完整更新目标系统(比如执行apt upgrade、dnf upgrade、pacman -Syu等),需要在线安装,或滚动更新的,可以设置成true。Magic目前均使用false为默认值 。
pacman:
num_retries: 0
disable_download_timeout: false
needed_only: false
pacman的单独配置,与Magic无关,保持就好。
operations:
- try_remove:
- calamares
这是Magic目前在这个模块的唯一配置动作,尝试删除calamares本身,因为在安装好的目标系统上calamares应该是没有用的。try_remove代表尝试删除,即使出错,仍然继续。这个动作可以设置为install/try_install、remove/try_remove、localInstall 等操作,其中localInstall仅在pacman里有用,是安装本地包,dnf等安装本地包也是用install。install段的语法是这种:
# - install:
# - vi
# - binutils
这个就是安装vi、binutils两个包,如果是dnf5,就是执行dnf5 install vi binutils,同时安装这两个包,多个包就依次列出。还可以这样写:
# - install
# - package: vi
# pre-script: touch /tmp/installing-vi
# post-script: rm -f /tmp/installing-vi
pre是安装前脚本,post是安装后脚本,直接执行,所以不直接shell语法。rpm包本身就支持,所以Magic一般不需要这样配置。这样配置每次只能安装一个包,比较慢。install可以写多个。
umount模块:
这个模块是安装过程的最后一步,用来卸载(umount)安装过程中挂载的分区,此模块执行后,目标系统就不再修改了。
emergency: true
这个就这一个配置项,设置为true话,即使安装失败,也会强行卸载文件系统。否则安装失败就中止了。一般设置为true。

标签: