CoreOS在启动过程中,先加载内核,内核再加一个参数,来判断是不是第一次启动。
如果第一次启动,就执行ignitoin配置。
通过研究,在/boot/coreos下touch一个名称为first_boot的空文档 ,内核就认为是第一次启动了
注: 查看 /boot/coreos/grub/grub.cfg.tar 的解压后文档,可以知道整个启动流程。
在 /usr/share/oem/config.ign 这个文档中,保存的就是我们首次安装CoreOS时,配置文档 ignition.json 的内容
通过查看系统挂载信息可以知道目录 /usr/share/oem 是可写的
core@localhost ~ $ mount
/dev/mapper/usr on /usr type ext4 (ro,relatime,seclabel)
/dev/sda6 on /usr/share/oem type ext4 (rw,nodev,relatime,seclabel)
...
那么问题就简单了,要重新配置,则:
- 编写新的
config.yaml配置文档再使用ct 工具,转换为.json格式的文档; - 用将新的配置文档内容替换掉
/usr/share/oem/config.ign的内容; - 在
/boot/coreos/目录下, touch 一个 名为first_boot的空文档; - reboot;
Ignition是coreos开发的一种新型的系统初始化配置方式,有以下特点:
- 只运行一次。在系统安装完成后,第一次开机启动时运行。
- 执行时间非常早,在内核加载后,initramfs阶段执行。
- 所以可以进行很多在系统阶段无法操作的工作。如格式化磁盘,调整网络配置,对只读文件系统进行写操作等。
本文介绍如何在CoreOS中使用Ignition进行系统初始化配置,包括创建配置文档、转换格式、更新配置以及触发首次启动流程。Ignition是CoreOS特有的配置工具,可在内核加载后、initramfs阶段执行,适用于格式化磁盘、调整网络配置等任务。

被折叠的 条评论
为什么被折叠?



