-
Notifications
You must be signed in to change notification settings - Fork 536
Testing a specific disk layout
Anton Hvornum edited this page Apr 16, 2021
·
1 revision
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.
#!/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.