======================= 試したこと Alma Linux のbootcイメージを使って仮想マシンで9.7と10.1の環境を用意して使う *自前でビルドしたbootcイメージは本来はコンテナレジストリにpush するなどしてやるべきだが検証なのでそれはしていない *試していないがこの仕組みを使って、コンテナで動作検証し、その検証済みのbootcイメージをコンテナレジストリにアップし、 他の仮想マシンや物理サーバでアップしたbootcイメージに更新するってことも出来るよう。 ======================= ======================= 参考URL https://docs.fedoraproject.org/en-US/bootc/getting-started/ https://zenn.dev/orimanabu/articles/try-rhel-image-mode https://bootc.dev/bootc/intro.html https://zenn.dev/orimanabu/articles/try-rhel-image-mode https://www.slideshare.net/slideshow/ostree-osgit/35039499 https://www.youtube.com/watch?v=Rby_0yF9b5Y ======================= ◆Alma Linux 9.7のbootcイメージをpull podman image pull quay.io/almalinuxorg/almalinux-bootc:9.7 ◆ビルドの際に使うIP固定化用の設定ファイル生成(enp1s0.nmconnection) podman run --rm -ti quay.io/almalinuxorg/almalinux-bootc:9.7 \ nmcli --offline connection add \ type ethernet ifname enp1s0 \ ipv4.method manual \ ipv4.addresses 172.16.2.253/24 ipv4.gateway 172.16.2.254 \ ipv4.dns "172.16.2.8 172.16.2.9"\ ipv6.method disabled \ | tee enp1s0.nmconnection 表示される設定------------------------------------- [connection] id=ethernet-enp1s0 uuid=8f9c1c2a-7923-4dbf-94ea-b96f707101dd type=ethernet interface-name=enp1s0 [ethernet] [ipv4] address1=172.16.2.253/24 dns=172.16.2.8;172.16.2.9; gateway=172.16.2.254 method=manual [ipv6] addr-gen-mode=default method=disabled [proxy] --------------------------------------- ◆Containerfileを作成 FROM quay.io/almalinuxorg/almalinux-bootc:9.7 # Copy NetworkManager configuration file COPY enp1s0.nmconnection /etc/NetworkManager/system-connections/ RUN chmod 600 /etc/NetworkManager/system-connections/enp1s0.nmconnection ◆カスタムのbootcイメージのビルド、確認 podman build -t almalinux-bootc-custom-9.7 . podman container run --rm -ti localhost/almalinux-bootc-custom-9.7 ls -l /etc/NetworkManager/system-connections/enp1s0.nmconnection podman container run --rm -ti localhost/almalinux-bootc-custom-9.7 cat /etc/NetworkManager/system-connections/enp1s0.nmconnection ◆bootc-image-builderのビルド設定ファイル作成(config.toml) [[customizations.user]] name = "user" password = "password" groups = ["wheel"] ◆ビルドしたカスタムのbootcイメージから仮想ディスクを作成する(almalinux-bootc-custom-9.7) mkdir output podman run \ --rm \ -it \ --privileged \ --pull=newer \ --security-opt label=type:unconfined_t \ -v ./config.toml:/config.toml:ro \ -v ./output:/output \ -v /var/lib/containers/storage:/var/lib/containers/storage \ quay.io/centos-bootc/bootc-image-builder:latest \ --type qcow2 \ --use-librepo=True \ localhost/almalinux-bootc-custom-9.7 ◆仮想ディスクのmove、リサイズ mv -i output/qcow2/disk.qcow2 /var/lib/libvirt/nfspool/vm/almalinux-bootc-custom.qcow2 rm -fr output/* qemu-img resize /var/lib/libvirt/nfspool/vm/almalinux-bootc-custom.qcow2 25G qemu-img info /var/lib/libvirt/nfspool/vm/almalinux-bootc-custom.qcow2 ◆仮想マシンのインポート(UEFI、セキュアブートなし)、確認 virt-install --import \ --name almalinux-bootc-custom \ --memory 4096 \ --vcpus 2 \ --disk /var/lib/libvirt/nfspool/vm/almalinux-bootc-custom.qcow2,format=qcow2 \ --os-variant almalinux9 \ --network bridge=br.202,model=virtio \ --graphics vnc,keymap=ja \ --noautoconsole \ --boot uefi,firmware.feature0.name=secure-boot,firmware.feature0.enabled=no virsh dominfo almalinux-bootc-custom ◆自動更新無効(almaのbootcイメージはもとから無効だった) ## systemctl disable bootc-fetch-apply-updates.timer ◆コンテナイメージソースの変更 bootc status bootc switch quay.io/almalinuxorg/almalinux-bootc:10.1 bootc status cp -i /etc/NetworkManager/system-connections/enp1s0.nmconnection /var/ ls -l /var/ reboot mv- i /var/enp1s0.nmconnection /etc/NetworkManager/system-connections/ ls -l /etc/NetworkManager/system-connections/ reboot ◆9.7, 10.1 環境切り替え bootc rollback --apply ★確認 ・lsblk # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 6.3M 1 loop zram0 251:0 0 3.8G 0 disk [SWAP] vda 252:0 0 25G 0 disk ├─vda1 252:1 0 1M 0 part ├─vda2 252:2 0 501M 0 part /boot/efi ├─vda3 252:3 0 1G 0 part /boot └─vda4 252:4 0 23.5G 0 part /var /sysroot/ostree/deploy/default/var /sysroot /etc # ・rw/ro 確認 # mount | grep -i vda /dev/vda4 on /etc type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) /dev/vda4 on /sysroot type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) /dev/vda4 on /sysroot/ostree/deploy/default/var type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) /dev/vda4 on /var type xfs (rw,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) /dev/vda3 on /boot type xfs (ro,relatime,seclabel,attr2,inode64,logbufs=8,logbsize=32k,noquota) /dev/vda2 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro) # ・ブートエントリ [root@localhost ~]# cat /boot/loader/entries/ostree-1.conf title AlmaLinux 9.7 (Moss Jungle Cat) (ostree:1) version 1 options root=UUID=7fbe7dc7-7b89-43d4-a4cc-cf13fba07f63 rw boot=UUID=da6b7f15-b58d-4391-afd4-4cd39883d781 rw console=tty0 console=ttyS0 ostree=/ostree/boot.0/default/b9eb3655f2401c14273bb61d3999938ce014c4d121d61e6805474aa5bc0db313/0 linux /boot/ostree/default-b9eb3655f2401c14273bb61d3999938ce014c4d121d61e6805474aa5bc0db313/vmlinuz-5.14.0-611.54.3.el9_7.x86_64 initrd /boot/ostree/default-b9eb3655f2401c14273bb61d3999938ce014c4d121d61e6805474aa5bc0db313/initramfs-5.14.0-611.54.3.el9_7.x86_64.img [root@localhost ~]# cat /boot/loader/entries/ostree-2.conf title AlmaLinux 10.1 (Heliotrope Lion) (ostree:0) version 2 options root=UUID=7fbe7dc7-7b89-43d4-a4cc-cf13fba07f63 rw boot=UUID=da6b7f15-b58d-4391-afd4-4cd39883d781 rw console=tty0 console=ttyS0 ostree=/ostree/boot.0/default/f528f8e6c4c16bd5bab8c68426414d482be922792c1d3736b30e16a5c0bee419/0 linux /boot/ostree/default-f528f8e6c4c16bd5bab8c68426414d482be922792c1d3736b30e16a5c0bee419/vmlinuz-6.12.0-124.55.3.el10_1.x86_64 initrd /boot/ostree/default-f528f8e6c4c16bd5bab8c68426414d482be922792c1d3736b30e16a5c0bee419/initramfs-6.12.0-124.55.3.el10_1.x86_64.img [root@localhost ~]# *9.7起動時の/proc/cmdline # cat /proc/cmdline BOOT_IMAGE=(hd0,gpt3)/boot/ostree/default-b9eb3655f2401c14273bb61d3999938ce014c4d121d61e6805474aa5bc0db313/vmlinuz-5.14.0-611.54.3.el9_7.x86_64 root=UUID=7fbe7dc7-7b89-43d4-a4cc-cf13fba07f63 rw boot=UUID=da6b7f15-b58d-4391-afd4-4cd39883d781 rw console=tty0 console=ttyS0 ostree=/ostree/boot.1/default/b9eb3655f2401c14273bb61d3999938ce014c4d121d61e6805474aa5bc0db313/0 # *10.1起動時の/proc/cmdline # cat /proc/cmdline BOOT_IMAGE=(hd0,gpt3)/boot/ostree/default-f528f8e6c4c16bd5bab8c68426414d482be922792c1d3736b30e16a5c0bee419/vmlinuz-6.12.0-124.55.3.el10_1.x86_64 root=UUID=7fbe7dc7-7b89-43d4-a4cc-cf13fba07f63 rw boot=UUID=da6b7f15-b58d-4391-afd4-4cd39883d781 rw console=tty0 console=ttyS0 ostree=/ostree/boot.0/default/f528f8e6c4c16bd5bab8c68426414d482be922792c1d3736b30e16a5c0bee419/0 # =================== ★/etc, /var は読み書きOK ★bootc rollback で環境切り替えると、/var は保持されるが /etc は元に戻される (git でブランチ切り替えてるみたいな感じかな・・)