/archvm

Set up scripts for my Arch Linux VM

Primary LanguageShellThe UnlicenseUnlicense

Arch VM

This set of scripts performs a minimal Arch Linux install in a QEMU VM configured to use UEFI firmware and virtio-blk driver (/dev/vda storage device). It embodies the results of my numerous experiments with Arch installs and uses my (hardcoded for now) preferences for that task, meaning:

  • UEFI + GPT partitioning
  • 512 MiB FAT32 ESP partition mounted on /boot + XFS root partition using the remaining space
  • Unified kernel image booting directly configured with efibootmgr, enabling...
  • root param-less, fstab-less config by relying on the DIscoverable Partitions Spec and systemd-gpt-auto-generator (/boot is automounted after boot upon first access)
  • systemd basic stack: initramfs, network (DHCP), resolver, timesync
  • basic system config done pre-chroot with systemd-firstboot
  • locked root account with archvm user configured for sudo
  • Zsh with the grml config, shell completions and syntax highlighting (i.e. the same setup as on the Arch install media)
  • micro text editor
  • French locale, keymap & timezone
  • hardcoded pacman mirrorlist with trusted servers from France & Germany

The aim is to provide a minimal, solid foundation which may serve as the basis for any kind of Arch VM.

Usage

Once booted

  1. in a UEFI QEMU VM
  2. using the virtio-blk storage driver (and therefore with a /dev/vda as storage device)
  3. in the Arch Live environment

Follow the installation guide from this point until you have Internet access, and then download the script:

curl -OL https://github.com/neitsab/archvm/raw/master/install.sh

Review and edit it as desired, and when ready execute it:

bash install.sh

(If you are ok with what the script does, you can combine both steps with curl -sL https://github.com/neitsab/archvm/raw/master/install.sh | bash.)

/!\ Warning: This will irremediably destroy anything that was on /dev/vda.

Perspectives

  • verify whether the two disjointed scripts can be merged into one single file
  • make the script more modular to support a wider range of use cases, maybe making use of the excellent Setting Variables and Collecting User Input.

Credits

Credits go to the original author from which I forked this repo. It was the first time I had seen an Arch install script that felt manageable and close enough to what I personally wanted. This led me to finally push forward and get one out myself. Nanos gigantum umeris insidentes indeed!