From 79fe539784c4b4d6121b8ac7acf299e6edfb2098 Mon Sep 17 00:00:00 2001 From: Anton Hvornum Date: Fri, 16 Apr 2021 10:36:31 +0200 Subject: [PATCH] Created Testing a specific disk layout (markdown) --- Testing-a-specific-disk-layout.md | 139 ++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 Testing-a-specific-disk-layout.md diff --git a/Testing-a-specific-disk-layout.md b/Testing-a-specific-disk-layout.md new file mode 100644 index 0000000..e4404a1 --- /dev/null +++ b/Testing-a-specific-disk-layout.md @@ -0,0 +1,139 @@ +One of the current issues is disk layout and cache issues. +In order to test this some what reliably, the following script can be run. + +It will create two partitions: + * /dev/sda1 -> fat32 + * /dev/sda2 -> Encrypted -> ext4 + +It will also install a base linux on this setup (including bootloader). +Nothing will be configured, just the binaries put in place for testing the partitioner. + +```python +#!/bin/bash + +if [ -z "$1" ] +then + echo "Need to define a output folder for the archiso:" + echo "Example (build and run):" + echo " ./test.sh ./archiso true" + echo "Example (skip building and run ISO as given path):" + echo " ./test.sh ./archiso" + exit 1 +fi + +REPO="https://github.com/Torxed/archinstall.git" +ARCHISO_FOLDER=$1 +REBUILD=$2 +BRANCH="master" + +if [ $REBUILD ] +then + echo "Making a clean build!" + `rm -rf "${ARCHISO_FOLDER}" 2>/dev/null` || ( + echo "Could not delete protected folder:"; + echo "-> ${ARCHISO_FOLDER}"; + echo "Running as sudo."; + sudo rm -rf "${ARCHISO_FOLDER}" + ) + + mkdir -p "${ARCHISO_FOLDER}" + cp -r /usr/share/archiso/configs/releng/* "${ARCHISO_FOLDER}/" + + git clone "${REPO}" "${ARCHISO_FOLDER}/airootfs/root/archinstall-git" + (cd "${ARCHISO_FOLDER}/airootfs/root/archinstall-git"; git checkout "${BRANCH}" ) + + echo "git" >> "${ARCHISO_FOLDER}/packages.x86_64" + echo "python" >> "${ARCHISO_FOLDER}/packages.x86_64" + echo "python-pip" >> "${ARCHISO_FOLDER}/packages.x86_64" + echo "python-setuptools" >> "${ARCHISO_FOLDER}/packages.x86_64" + + cat <<\EOF >> "${ARCHISO_FOLDER}/airootfs/root/.zprofile" +if [[ -z $DISPLAY && $XDG_VTNR -eq 1 ]]; then + cd /root/archinstall-git + pip uninstall archinstall -y >/dev/null 2>&1 + git pull + python setup.py install >/dev/null 2>&1 + cd /root + + RED='\033[0;31m' + YEL='\033[1;33m' + NC='\033[0m' + + umount -R /mnt + cryptsetup close /dev/mapper/luksloop + + wipefs -a -f -i -q /dev/sda + parted -s /dev/sda mklabel gpt + parted -s /dev/sda mkpart primary fat32 1MiB 513MiB + parted -s /dev/sda name 1 EFI + parted -s /dev/sda set 1 boot on + parted -s /dev/sda set 1 esp on + parted -s /dev/sda mkpart primary 513MiB 100% + + mkfs.fat -F32 /dev/sda1 + + echo -n "test" > /tmp/disk.pw + + cryptsetup \ + --batch-mode \ + --verbose \ + --type luks2 \ + --pbkdf argon2i \ + --hash sha512 \ + --key-size 512 \ + --iter-time 10 \ + --key-file /tmp/disk.pw \ + --use-urandom \ + luksFormat /dev/sda2 + + cryptsetup open /dev/sda2 luksloop --key-file /tmp/disk.pw --type luks2 + mkfs.ext4 /dev/mapper/luksloop + mount /dev/mapper/luksloop /mnt + + mkdir -p /mnt/boot + mount /dev/sda1 /mnt/boot + + pacstrap /mnt base linux efibootmgr + arch-chroot /mnt bootctl --no-variables --path=/boot install + + lsblk -f -o+TYPE,SIZE + + umount -R /mnt + cryptsetup close /dev/mapper/luksloop + + echo "" + echo -e "${RED}Note:${NC} This is a release candidate! (Experimental release: v2.1.4)" + echo -e "Do not bother Arch Linux support staff about issues in this specific release candidate!" + echo -e "Instead, ${YEL}create an Issue ticket on the Upstream GithHub page for support:${NC}" + echo -e " https://github.com/archlinux/archinstall/issues" + echo "" + echo "Run 'python -m archinstall' when you are ready to test (configure your network first if needed)!" +fi +EOF + + ( cd "${ARCHISO_FOLDER}/"; sudo mkarchiso -v -w work/ -o out/ ./; ) +fi + +if [ ! -f "./test.qcow2" ]; +then + qemu-img create -f qcow2 ./test.qcow2 15G +fi + +sudo qemu-system-x86_64 \ + -cpu host \ + -enable-kvm \ + -machine q35,accel=kvm \ + -device intel-iommu \ + -m 8192 \ + -drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/OVMF_CODE.fd \ + -drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/OVMF_VARS.fd \ + -device virtio-scsi-pci,bus=pcie.0,id=scsi0 \ + -device scsi-hd,drive=hdd0,bus=scsi0.0,id=scsi0.0,bootindex=2 \ + -drive file=./test.qcow2,if=none,format=qcow2,discard=unmap,aio=native,cache=none,id=hdd0 \ + -device virtio-scsi-pci,bus=pcie.0,id=scsi1 \ + -device scsi-cd,drive=cdrom0,bus=scsi1.0,bootindex=1 \ + -drive file=$(ls -t $ARCHISO_FOLDER/out/*.iso | head -n 1),media=cdrom,if=none,format=raw,cache=none,id=cdrom0 +``` + +This will run against latest `master` and have a fixed partition setup on every login/re-login to the ISO. +This enables quick testing by hitting Ctrl-D in the shell of the ISO. \ No newline at end of file