diff --git a/.gitignore b/.gitignore index 376bdbd535..54c865e011 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,7 @@ requirements.txt /cmd_output.txt node_modules/ uv.lock +test_tooling/mkosi/mkosi.output/*image* +test_tooling/mkosi/mkosi.cache/** +test_tooling/mkosi/mkosi.tools/** +test_tooling/mkosi/mkosi.tools.manifest diff --git a/build_iso.sh b/test_tooling/mkarchiso/build_iso.sh similarity index 100% rename from build_iso.sh rename to test_tooling/mkarchiso/build_iso.sh diff --git a/test_tooling/mkosi/README.md b/test_tooling/mkosi/README.md new file mode 100644 index 0000000000..d26d0d9fee --- /dev/null +++ b/test_tooling/mkosi/README.md @@ -0,0 +1,12 @@ +# To build + + mkosi build -B + +# To run + + mkosi qemu \ + --drive=archinstall_small:25G \ + -- \ + -device nvme,serial=archinstall_small,drive=archinstall_small + +*note: in order to boot the installation, we need to disable UKI being added to -kernel. I don't know of a way to do this yet, unless we tinker with mkosi/qemu.py - https://github.com/Torxed/mkosi/commit/6f3c20802bd73f88b672cc96ef0db1e542084316 - in which case we could do: `mkosi qemu --drive=archinstall_small:25G -- -device nvme,serial=archinstall_small,drive=archinstall_small,bootindex=0 -kernel none` but it still won't boot properly.* \ No newline at end of file diff --git a/test_tooling/mkosi/mkosi.cache/.gitkeep b/test_tooling/mkosi/mkosi.cache/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test_tooling/mkosi/mkosi.conf b/test_tooling/mkosi/mkosi.conf new file mode 100644 index 0000000000..fdc366132d --- /dev/null +++ b/test_tooling/mkosi/mkosi.conf @@ -0,0 +1,50 @@ +[Distribution] +Distribution=arch +# LocalMirror=file:///var/lib/localmirror + +[Output] +Format=uki +# Format=disk + +[Include] +Include=mkosi-vm + +[Validation] +SecureBoot=false +SecureBootAutoEnroll=false +Sign=false +# Signing artifacts (hashsums etc) using a GPG key: +# Key=D4B58E897A929F2E +# Signing secure boot using PIV on yubikey: +# SecureBoot=true +# SecureBootKey=pkcs11: +# SecureBootCertificate=secureboot.crt + +[Content] +Packages= + pacman + archlinux-keyring + amd-ucode + intel-ucode +# tpm2-tss +# libfido2 +# libp11-kit +WithDocs=false +RootPassword=toor +Timezone=Europe/Stockholm +Keymap=sv-latin1 +InitrdProfiles=network + +[Config] +Profiles=archinstall + +[Build] +Incremental=true +ToolsTree=default +ToolsTreeProfiles=devel,misc,package-manager,runtime,gui +WithNetwork=yes + +[Runtime] +Console=gui +CPUs=4 +RAM=8G diff --git a/test_tooling/mkosi/mkosi.extra/etc/systemd/system/getty@tty1.service.d/autologin.conf b/test_tooling/mkosi/mkosi.extra/etc/systemd/system/getty@tty1.service.d/autologin.conf new file mode 100644 index 0000000000..161d4952ef --- /dev/null +++ b/test_tooling/mkosi/mkosi.extra/etc/systemd/system/getty@tty1.service.d/autologin.conf @@ -0,0 +1,3 @@ +[Service] +ExecStart= +ExecStart=-/usr/bin/agetty --noreset --noclear --autologin root - ${TERM} \ No newline at end of file diff --git a/test_tooling/mkosi/mkosi.extra/root/.profile b/test_tooling/mkosi/mkosi.extra/root/.profile new file mode 100644 index 0000000000..c8d1791bdd --- /dev/null +++ b/test_tooling/mkosi/mkosi.extra/root/.profile @@ -0,0 +1,5 @@ +cd archinstall-git +rm -rf dist + +uv build --no-build-isolation --wheel +uv pip install dist/*.whl --break-system-packages --system --no-build --no-deps \ No newline at end of file diff --git a/test_tooling/mkosi/mkosi.output/.gitkeep b/test_tooling/mkosi/mkosi.output/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test_tooling/mkosi/mkosi.postinst.chroot b/test_tooling/mkosi/mkosi.postinst.chroot new file mode 100755 index 0000000000..096857e8ee --- /dev/null +++ b/test_tooling/mkosi/mkosi.postinst.chroot @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +git clone https://github.com/archlinux/archinstall.git /root/archinstall-git +(cd /root/archinstall-git && git checkout master) + +# TODO: Set geo-mirrors statically instead +curl -s "https://archlinux.org/mirrorlist/?country=SE&protocol=https&use_mirror_status=on" | sed -e 's/^#Server/Server/' -e '/^#/d' | rankmirrors -n 5 - > /etc/pacman.d/mirrorlist + +pacman-key --init +pacman-key --populate archlinux \ No newline at end of file diff --git a/test_tooling/mkosi/mkosi.profiles/archinstall b/test_tooling/mkosi/mkosi.profiles/archinstall new file mode 100644 index 0000000000..75628b6154 --- /dev/null +++ b/test_tooling/mkosi/mkosi.profiles/archinstall @@ -0,0 +1,56 @@ +[Content] +Packages= + acpid + intel-media-driver + linux-firmware + linux-firmware-intel + ca-certificates-mozilla + ca-certificates-utils + nano + gvfs + noto-fonts + cantarell-fonts + ttf-dejavu + polkit + bash + bzip2 + coreutils + file + filesystem + findutils + gawk + gcc-libs + gettext + glibc + grep + gzip + iproute2 + iputils + licenses + pciutils + procps-ng + psmisc + sed + tar + linux + diffutils + less + strace + util-linux + xz + pacman-contrib + gcc + git + pkgconfig + python + python-pip + python-uv + python-setuptools + python-pyparted + python-pydantic + python-textual + dosfstools + btrfs-progs + arch-install-scripts +WithDocs=false +KernelCommandLine=quiet splash \ No newline at end of file diff --git a/test_tooling/mkosi/mkosi.version b/test_tooling/mkosi/mkosi.version new file mode 100644 index 0000000000..3cacc0b93c --- /dev/null +++ b/test_tooling/mkosi/mkosi.version @@ -0,0 +1 @@ +12 \ No newline at end of file