From c25220a76722854a29e12bd8f94d839b1dfd30f0 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Mon, 28 Jun 2021 19:27:49 -0700 Subject: [PATCH] Switch from Docker to vagrant --- rip_docker/.gitignore | 1 + rip_docker/README.md | 9 +++--- rip_docker/Vagrantfile | 2 +- rip_docker/build-iso.sh | 68 +++++++++++++++++------------------------ rip_docker/configure.sh | 4 --- 5 files changed, 35 insertions(+), 49 deletions(-) delete mode 100755 rip_docker/configure.sh diff --git a/rip_docker/.gitignore b/rip_docker/.gitignore index 73b3d4e..37d5497 100644 --- a/rip_docker/.gitignore +++ b/rip_docker/.gitignore @@ -1 +1,2 @@ vm +.vagrant \ No newline at end of file diff --git a/rip_docker/README.md b/rip_docker/README.md index 4f741b8..2b5aac0 100644 --- a/rip_docker/README.md +++ b/rip_docker/README.md @@ -1,13 +1,12 @@ # Build the Dangerzone VM for running podman -## Build the podman container storage (with vagrant) +## Build the ISO You need vagrant: `brew install vagrant` -## Build the ISO image (with docker) - ```sh -docker run -v $(pwd):/build alpine:latest /build/build-iso.sh +vagrant up +vagrant ssh -- /vagrant/build-iso.sh ``` ## Run the VM @@ -21,3 +20,5 @@ You can ssh in as the unprivileged user like this: ```sh ssh -i ./ssh-key/id_ed25519 -o StrictHostKeyChecking=no user@192.168.65.3 ``` + +(doesn't work yet) diff --git a/rip_docker/Vagrantfile b/rip_docker/Vagrantfile index 5dd1c8a..cef17a3 100644 --- a/rip_docker/Vagrantfile +++ b/rip_docker/Vagrantfile @@ -4,7 +4,7 @@ Vagrant.configure("2") do |config| config.vm.box = "generic/alpine313" config.vm.synced_folder "../../dangerzone-converter", "/opt/dangerzone-converter" - config.vm.synced_folder ".", "/opt/build" + config.vm.synced_folder ".", "/vagrant" config.vm.provision "shell", inline: <<-SHELL apk update apk add alpine-sdk build-base apk-tools alpine-conf busybox fakeroot syslinux xorriso squashfs-tools sudo diff --git a/rip_docker/build-iso.sh b/rip_docker/build-iso.sh index 3067ee0..914fd25 100755 --- a/rip_docker/build-iso.sh +++ b/rip_docker/build-iso.sh @@ -1,60 +1,48 @@ #!/bin/sh -# Following: https://wiki.alpinelinux.org/wiki/How_to_make_a_custom_ISO_image_with_mkimage +cd ~/ -# Install dependencies -apk update -apk add alpine-sdk build-base apk-tools alpine-conf busybox fakeroot syslinux xorriso squashfs-tools sudo -apk add mtools dosfstools grub-efi -apk add p7zip - -# Create a new user -adduser build -D -G abuild -echo "%abuild ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/abuild - -cat << EOF > /home/build/go.sh -#!/bin/sh - -cd /home/build +# Add build user +sudo adduser build -D -G abuild +sudo sh -c 'echo "%abuild ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/abuild' # Create signing keys -abuild-keygen -i -a -n +sudo -u build abuild-keygen -i -a -n # Setup aports -wget https://gitlab.alpinelinux.org/alpine/aports/-/archive/master/aports-master.tar.gz -tar -xf aports-master.tar.gz -mv aports-master aports -cp /build/mkimg.dangerzone.sh aports/scripts/ -cp /build/genapkovl-dangerzone.sh aports/scripts/ -chmod +x aports/scripts/mkimg.dangerzone.sh -chmod +x aports/scripts/genapkovl-dangerzone.sh +if [ -d aports ]; then + echo "already downloaded" +else + wget https://gitlab.alpinelinux.org/alpine/aports/-/archive/master/aports-master.tar.gz + tar -xf aports-master.tar.gz + mv aports-master aports +fi +cp /vagrant/mkimg.dangerzone.sh ~/aports/scripts/ +cp /vagrant/genapkovl-dangerzone.sh ~/aports/scripts/ +chmod +x ~/aports/scripts/mkimg.dangerzone.sh +chmod +x ~/aports/scripts/genapkovl-dangerzone.sh + +# Set up the vm dir +rm -r /vagrant/vm +mkdir -p /vagrant/vm +chmod 777 /vagrant/vm # Make the iso -cd aports/scripts -sh mkimage.sh --tag v3.14 \ - --outdir /build/vm \ +cd ~/aports/scripts +sudo -u build sh mkimage.sh --tag v3.14 \ + --outdir /vagrant/vm \ --arch x86_64 \ --repository http://dl-cdn.alpinelinux.org/alpine/v3.14/main \ --repository http://dl-cdn.alpinelinux.org/alpine/v3.14/community \ --profile dangerzone -EOF -chmod +x /home/build/go.sh - -# Set up the vm dir -rm -r /build/vm -mkdir -p /build/vm -chmod 777 /build/vm - -# Start the build -sudo -u build /home/build/go.sh # Fix permissions -chmod 755 /build/vm -chmod 644 /build/vm/* -chown root:root /build/vm/* +chown -R vagrant:vangrant /vagrant/vm +chmod 755 /vagrant/vm +chmod 644 /vagrant/vm/* # Extract vmlinuz and initramfs -cd /build/vm +cd /vagrant/vm 7z x alpine-dangerzone-v3.14-x86_64.iso boot/vmlinuz-virt 7z x alpine-dangerzone-v3.14-x86_64.iso boot/initramfs-virt mv boot/* . diff --git a/rip_docker/configure.sh b/rip_docker/configure.sh deleted file mode 100755 index d6d91a5..0000000 --- a/rip_docker/configure.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -# TODO: create podman user -# TODO: set /home/podman/.ssh/authorized_keys