Go to file
2024-12-14 16:41:47 +02:00
dtrfs_api allow multiple nics to be configured via cmdline 2024-12-14 16:41:47 +02:00
scripts allow multiple nics to be configured via cmdline 2024-12-14 16:41:47 +02:00
.gitignore move *.sh to the scripts folder 2024-11-22 16:00:01 +02:00
README.md improved handling of modules and cleaned a bit 2024-11-13 04:15:36 +02:00

OS template

You will need a working OS template to work with this project.

Easy solution create an OS template:

  • start any archlinux machine (the arch installer also works)
  • install arch-install-scripts
  • run pacstrap /mnt base openssh to install base packages to /mnt
  • run ln -s /usr/lib/systemd/system/sshd.service /mnt/etc/systemd/system/multi-user.target.wants/sshd.service
  • run fsarchiver savedir /tmp/os_template.fsa /mnt to save your OS template
  • download /tmp/os_template.fsa to your machine
  • upload the os_template.fsa anywhere so that it can be downloaded with wget

Some notes on the above:

  • base is the only package required to run a dtrfs VM; the kernel is not needed cause we are using SNP
  • you will need sshd to operate the VM, so create the symlink to make it start with the OS
  • fsarchiver is very good at preserving OS data
  • fsarchiver saves the absolute path (which means you must use /mnt as this is hardcoded)
  • the initrd will dump that template to the encrypted disk
  • the same procedure can be used with any distribution, but we didn't test that yet

initrd and linux

You will need an initrd and a kernel to run SNP VMs.

  • start any archlinux machine
  • clone this repo
  • inspect your kernel version by running file -sL /boot/vmlinuz-linux.
  • (optional) update the kernel version in ./creator_exports.sh
  • create the initrd by running ./create.sh; this will save the initrd in the build folder
  • grab your kernel from /boot/vmlinuz-linux and...
  • ... upload kernel and initrd to your hypervizor

module scanner

Optionally, you can use ./remote_create.sh to upload this repo to remote node and build your initrd. This will automatically scan the kernel modules running on the remote host, and package all modules in the initrd. This is ideal if your VM has a setup that is not cover by the modules hardcoded in this repo.