Howto mkosi
installation
install package on archlinux:
pacman -S mkosi mtools systemd-ukify --noconfirm
create temporary directory to store images:
mkdir mkosimages && cd mkosimages
create debian img
install packages:
pacman -S debootstrap debian-archive-keyring apt --noconfirm
create image:
mkosi \ --distribution debian \ --release bookworm \ --format disk \ --bootable \ --checksum \ --root-password debian \ --package linux-image-generic,systemd,systemd-boot,systemd-sysv,udev,dbus \ --package openssh-client,vim \ --output debian.img
boot image using systemd:
systemd-nspawn --boot --image debian.img
boot image using qemu/kvm:
mkosi --output debian.img --qemu-smp 2 qemu
create arch img
install packages:
pacman -S arch-install-scripts --noconfirm
create image:
mkosi \ --distribution arch \ --format disk \ --bootable \ --checksum \ --root-password arch \ --package linux,systemd,udev,dbus \ --package openssh-client,vim \ --output arch.img
boot image using systemd:
systemd-nspawn --boot --image arch.img
boot image using qemu/kvm:
mkosi --output arch.img --qemu-smp 2 qemu
create ubuntu img
install packages:
pacman -S debootstrap ubuntu-keyring apt --noconfirm
create image:
mkosi \ --distribution ubuntu \ --release noble \ --format disk \ --bootable \ --checksum \ --root-password ubuntu \ --package linux-image-generic,systemd,systemd-boot,systemd-sysv,udev,dbus \ --package openssh-client,vim \ --output ubuntu.img
boot image using systemd:
systemd-nspawn --boot --image ubuntu.img
boot image using qemu/kvm:
mkosi --output ubuntu.img --qemu-smp 2 qemu
create almalinux img
install the following package using yay:
yay -S dnf-legacy-utils
create image:
mkosi --distribution alma --release 9 --format disk --bootable --checksum --root-password password --package bash,coreutils,util-linux,systemd,rpm --output almalinux.img
boot image using systemd:
systemd-nspawn --boot --image almalinux.img
boot image using qemu/kvm:
mkosi --output almalinux.img --qemu-smp 2 qemu
create rhel image
create image:
mkosi \ --distribution rhel-ubi \ --release 9 \ --format disk \ --bootable \ --checksum \ --root-password redhat \ --package bash,coreutils,util-linux,systemd,rpm \ --output rhel9.img
boot image using systemd:
systemd-nspawn --boot --image rhel9.img
boot image using qemu/kvm:
mkosi --output rhel9.img --qemu-smp 2 qemu
build image using mkosi.conf
create mkosi.conf:
cat >mkosi.conf <<'EOF' [Output] Format=disk Output=centos-stream ImageVersion=0.0.1 ImageId=centos-stream [Distribution] Distribution=centos Release=9 Architecture=x86-64 RepositoryKeyCheck=no [Content] Packages=kernel-core,bash,coreutils,util-linux,iproute,systemd,systemd-boot,systemd-udev,dnf Bootable=yes Bootloader=systemd-boot WithNetwork=yes CleanPackageMetadata=yes Locale=en_US.UTF-8 Timezone=America/Puerto_Rico Hostname=centos-stream RootPassword=centos RootShell=/usr/bin/bash Autologin=no WithDocs=no EOF
create post install script:
cat >mkosi.postinst.chroot <<'EOF' useradd -c centosuser -G wheel -m centosuser echo "centosuser:centosuser:" chpasswd EOF
set file permissions:
chmod +x mkosi.postinst.chroot
check configuration:
mkosi summary
build the image:
mkosi build
boot image using qemu:
mkosi qemu