CentOS 8 を virt-install でサクッと入れる - ngyukiの日記 のような Kickstart を使う方法はカスタマイズが柔軟ですが、その代わりやたら時間がかかります。
あり物のイメージを使って構築する方が手っ取り早いので、以下の2つのイメージで構築してその手順とかを比べてみました。
virt-builder (builder.libguestfs.org)
virt-builder centos-8.2 \ --output /var/lib/libvirt/images/centos-8.2-builder.img \ --arch x86_64 \ --hostname centos-8-2-builder \ --root-password password:password \ --timezone Asia/Tokyo \ --selinux-relabel virt-install \ --name centos-8.2-builder \ --hvm \ --virt-type kvm \ --ram 2048 \ --vcpus 1 \ --arch x86_64 \ --os-type linux \ --os-variant centos8 \ --boot hd \ --disk path=/var/lib/libvirt/images/centos-8.2-builder.img \ --network network=default \ --graphics none \ --serial pty \ --console pty \ --import
parted -l # Model: Virtio Block Device (virtblk) # Disk /dev/vda: 6442MB # Sector size (logical/physical): 512B/512B # Partition Table: gpt # Disk Flags: pmbr_boot # # Number Start End Size File system Name Flags # 1 1049kB 2097kB 1049kB bios_grub # 2 2097kB 1076MB 1074MB ext4 # 3 1076MB 1721MB 645MB linux-swap(v1) swap # 4 1721MB 6441MB 4721MB xfs df -h # Filesystem Size Used Avail Use% Mounted on # /dev/vda4 4.4G 1.3G 3.2G 29% / # /dev/vda2 976M 134M 776M 15% /boot getenforce # Enforcing cat /proc/cmdline | tr ' ' '\n' # BOOT_IMAGE=(hd0,gpt2)/vmlinuz-4.18.0-193.6.3.el8_2.x86_64 # root=UUID=5e65e2b1-bd66-4404-9403-b2a5825a2c14 # ro # console=tty0 # rd_NO_PLYMOUTH # crashkernel=auto # resume=UUID=abefcabc-5e1d-41cb-92f6-cc0230dad69d # console=ttyS0,115200
cloud.centos.org
cd /var/lib/libvirt/images/ curl https://cloud.centos.org/centos/8/x86_64/images/CentOS-8-GenericCloud-8.2.2004-20200611.2.x86_64.qcow2 -O virt-install \ --name centos-8.2-generic \ --hvm \ --virt-type kvm \ --ram 2048 \ --vcpus 1 \ --arch x86_64 \ --os-type linux \ --os-variant centos8 \ --boot hd \ --disk path=/var/lib/libvirt/images/CentOS-8-GenericCloud-8.2.2004-20200611.2.x86_64.qcow2 \ --network network=default \ --graphics none \ --serial pty \ --console pty \ --import \ --noreboot virt-customize -d centos-8.2-generic \ --hostname centos-8-2-generic \ --root-password password:password \ --timezone Asia/Tokyo \ --selinux-relabel virsh start centos-8.2-generic virsh console centos-8.2-generic parted -l # Model: Virtio Block Device (virtblk) # Disk /dev/vda: 10.7GB # Sector size (logical/physical): 512B/512B # Partition Table: msdos # Disk Flags: # # Number Start End Size Type File system Flags # 1 1049kB 8390MB 8389MB primary xfs boot df -h # Filesystem Size Used Avail Use% Mounted on # /dev/vda1 7.9G 1.3G 6.6G 16% / getenforce # Enforcing cat /proc/cmdline | tr ' ' '\n' # BOOT_IMAGE=(hd0,msdos1)/boot/vmlinuz-4.18.0-193.6.3.el8_2.x86_64 # root=UUID=7295907d-61c6-49b5-8687-5a6ae8855f6b # ro # console=ttyS0,115200n8 # no_timer_check # net.ifnames=0 # crashkernel=auto
さいごに
cloud.centos.org なら cloud-init が有効なので meta-data と user-data の ISO を用意できるのならカスタマイズは柔軟です。ただ KVM なら virt-builder や virt-customize でカスタマイズするほうが手っ取り早いので cloud-init は別になくても良いかもしれません。
cloud.centos.org のイメージのほうがパーティション 1 つだけで男前ですが、サイズが 10GB もあって大きすぎ感あります。小さいものを大きくするのは簡単でもその逆は難しいので、イメージのサイズはもっと小さく作成されているほうが嬉しいです。
virt-builder の方はパーティションがいくつか分かれています。ベアメタルサーバならともかく仮想サーバならスワップ用にパーティションを切らなくてもスワップ用のボリュームをアタッチすれば良いと思うし、LVM するわけでもないので /boot 分けなくても良いと思うし、ルートボリュームがそんなでかいサイズになることはまず無いので GPT じゃなくせば bios_grub も必要ないと思うし(でかいディスクがほしければ別途でかいデータボリュームをアタッチする)、個人的には 1 パーティションだけになっている方が好みです。
オフィシャルのネームバリューもあるので当面は cloud.centos.org のイメージを使っておこうと思います。