diff --git a/BUILD.md b/BUILD.md index ce7d99d..edee536 100644 --- a/BUILD.md +++ b/BUILD.md @@ -54,23 +54,32 @@ Create a .rpm: ## macOS -Install [Docker Desktop](https://www.docker.com/products/docker-desktop). - -Install python@3.9 from Homebrew: +Ensure you have the git submodules checked out: ``` -brew install python@3.9 create-dmg +git submodule init +git submodule update ``` -If you don't have it already, install poetry (`pip3 install --user poetry`). Then install dependencies: +Install Xcode from the App Store. + +Install Python 3.9.9 [[from python.org])(https://www.python.org/downloads/release/python-399/). + +Install Python dependencies: ```sh +pip3 install --user poetry poetry install ``` -Make sure [Docker Desktop](https://www.docker.com/products/docker-desktop) and vagrant (`brew install vagrant`) are installed. +Install [Homebrew](https://brew.sh/) dependencies: -Run this to build a custom Alpine Linux ISO for Dangerzone, and copy it into the `share` folder: +``` +brew install vagrant create-dmg +brew install wget opam pkg-config +``` + +Run this to compile hyperkit and vpnkit, and build a custom Alpine Linux ISO for Dangerzone, and copy it into the `share` folder: ```sh ./install/macos/make-vm.sh diff --git a/install/macos/make-vm.sh b/install/macos/make-vm.sh index 60d4d17..6f25762 100755 --- a/install/macos/make-vm.sh +++ b/install/macos/make-vm.sh @@ -1,17 +1,28 @@ #!/bin/sh -# Extract hyperkit and vpnkit from Docker Desktop +# Compile hyperkit +cd vendor/hyperkit/ +make || { echo 'Failed to compile hyperkit' ; exit 1; } +cd ../.. + +# Compile vpnkit +cd vendor/vpnkit/ +unset OPAMROOT +make || { echo 'Failed to compile vpnkit' ; exit 1; } +cd ../.. + +# Copy binaries to share mkdir -p share/bin -cp /Applications/Docker.app/Contents/Resources/bin/com.docker.hyperkit share/bin/hyperkit -cp /Applications/Docker.app/Contents/Resources/bin/com.docker.vpnkit share/bin/vpnkit +cp vendor/hyperkit/build/hyperkit share/bin/hyperkit +cp vendor/vpnkit/build/vpnkit share/bin/vpnkit # Build ISO -cd install/vm-builder +cd vm-builder vagrant up vagrant ssh -- /vagrant/build-iso.sh vagrant halt -cd ../.. +cd .. # Copy the ISO to resources mkdir -p share/vm -cp install/vm-builder/vm/* share/vm +cp vm-builder/vm/* share/vm diff --git a/vm-builder/.vagrant/bundler/global.sol b/vm-builder/.vagrant/bundler/global.sol new file mode 100644 index 0000000..6c80468 --- /dev/null +++ b/vm-builder/.vagrant/bundler/global.sol @@ -0,0 +1 @@ +{"dependencies":[["vagrant-vmware-desktop",["= 3.0.1"]]],"checksum":"0ad00f1ec196455770fca952e89c309b84036297f2a9b4b560b24f477e0315e1","vagrant_version":"2.2.19"} \ No newline at end of file diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware-cl1.vmdk b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware-cl1.vmdk new file mode 100644 index 0000000..278241c Binary files /dev/null and b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware-cl1.vmdk differ diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.nvram b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.nvram new file mode 100644 index 0000000..9aaad80 Binary files /dev/null and b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.nvram differ diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.plist b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.plist new file mode 100644 index 0000000..86eee6b --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.plist @@ -0,0 +1,8 @@ + + + + + disallowUpgrade + + + diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmsd b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmsd new file mode 100644 index 0000000..e624ed1 --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmsd @@ -0,0 +1,5 @@ +.encoding = "UTF-8" +cloneOf0 = "/Users/user/.vagrant.d/boxes/generic-VAGRANTSLASH-alpine314/3.5.2/vmware_desktop/generic-alpine314-vmware.vmx" +numCloneOf = "1" +sentinel0 = "generic-alpine314-vmware-cl1.vmdk" +numSentinels = "1" diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmx b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmx new file mode 100755 index 0000000..ceb8a5f --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmx @@ -0,0 +1,106 @@ +.encoding = "UTF-8" +bios.bootorder = "hdd,cdrom" +checkpoint.vmstate = "" +cleanshutdown = "TRUE" +config.version = "8" +cpuid.corespersocket = "1" +displayname = "vm-builder: default" +ehci.pcislotnumber = "-1" +ehci.present = "FALSE" +ethernet0.addresstype = "generated" +ethernet0.connectiontype = "nat" +ethernet0.present = "TRUE" +ethernet0.virtualdev = "e1000" +extendedconfigfile = "generic-alpine314-vmware.vmxf" +filesearchpath = ".;/Users/user/.vagrant.d/boxes/generic-VAGRANTSLASH-alpine314/3.5.2/vmware_desktop" +floppy0.present = "FALSE" +guestos = "otherlinux-64" +gui.fullscreenatpoweron = "FALSE" +gui.viewmodeatpoweron = "windowed" +hgfs.linkrootshare = "TRUE" +hgfs.maprootshare = "TRUE" +ide0:0.clientdevice = "TRUE" +ide0:0.devicetype = "cdrom-raw" +ide0:0.filename = "auto detect" +ide0:0.present = "TRUE" +invmteam = "FALSE" +isolation.tools.hgfs.disable = "FALSE" +memsize = "2048" +monitor.phys_bits_used = "42" +msg.autoanswer = "true" +numa.autosize.cookie = "20001" +numa.autosize.vcpu.maxpervirtualnode = "2" +numvcpus = "2" +nvme0.present = "FALSE" +nvram = "generic-alpine314-vmware.nvram" +parallel0.autodetect = "FALSE" +parallel0.bidirectional = "" +parallel0.filename = "" +parallel0.present = "FALSE" +parallel0.startconnected = "FALSE" +pcibridge0.pcislotnumber = "17" +pcibridge0.present = "TRUE" +pcibridge4.functions = "8" +pcibridge4.pcislotnumber = "21" +pcibridge4.present = "TRUE" +pcibridge4.virtualdev = "pcieRootPort" +pcibridge5.functions = "8" +pcibridge5.pcislotnumber = "22" +pcibridge5.present = "TRUE" +pcibridge5.virtualdev = "pcieRootPort" +pcibridge6.functions = "8" +pcibridge6.pcislotnumber = "23" +pcibridge6.present = "TRUE" +pcibridge6.virtualdev = "pcieRootPort" +pcibridge7.functions = "8" +pcibridge7.pcislotnumber = "24" +pcibridge7.present = "TRUE" +pcibridge7.virtualdev = "pcieRootPort" +policy.vm.mvmtid = "" +powertype.poweroff = "hard" +powertype.poweron = "hard" +powertype.reset = "hard" +powertype.suspend = "hard" +proxyapps.publishtohost = "FALSE" +remotedisplay.vnc.enabled = "FALSE" +remotedisplay.vnc.ip = "127.0.0.1" +remotedisplay.vnc.port = "5993" +replay.filename = "" +replay.supported = "FALSE" +sata0.present = "FALSE" +scsi0.pcislotnumber = "16" +scsi0.present = "TRUE" +scsi0.virtualdev = "lsilogic" +scsi0:0.filename = "generic-alpine314-vmware-cl1.vmdk" +scsi0:0.present = "TRUE" +scsi0:0.redo = "" +serial0.autodetect = "FALSE" +serial0.filename = "" +serial0.filetype = "" +serial0.pipe.endpoint = "" +serial0.present = "FALSE" +serial0.startconnected = "FALSE" +serial0.trynorxloss = "" +serial0.yieldonmsrread = "" +softpoweroff = "FALSE" +sound.autodetect = "TRUE" +sound.filename = "-1" +sound.present = "FALSE" +sound.startconnected = "FALSE" +svga.guestbackedprimaryaware = "TRUE" +svga.vramsize = "134217728" +tools.synctime = "TRUE" +tools.upgrade.policy = "upgradeAtPowerCycle" +usb.pcislotnumber = "-1" +usb.present = "FALSE" +uuid.action = "create" +uuid.bios = "" +uuid.location = "" +vc.uuid = "" +virtualhw.productcompatibility = "hosted" +virtualhw.version = "12" +vmci0.id = "1861462631" +vmci0.pcislotnumber = "35" +vmci0.present = "TRUE" +vmotion.checkpointfbsize = "134217728" +vmotion.checkpointsvgaprimarysize = "134217728" diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmxf b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmxf new file mode 100644 index 0000000..db1765d --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmxf @@ -0,0 +1,8 @@ + + + + + + +52 59 c0 38 41 3e 81 21-fb fe 13 82 cc 38 5e 9d +generic-alpine314-vmware.vmx diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/box_meta b/vm-builder/.vagrant/machines/default/vmware_desktop/box_meta new file mode 100644 index 0000000..ed10a2b --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/box_meta @@ -0,0 +1 @@ +{"name":"generic/alpine314","version":"3.5.2","provider":"vmware_desktop","directory":"boxes/generic-VAGRANTSLASH-alpine314/3.5.2/vmware_desktop"} \ No newline at end of file diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/creator_uid b/vm-builder/.vagrant/machines/default/vmware_desktop/creator_uid new file mode 100644 index 0000000..99f9f07 --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/creator_uid @@ -0,0 +1 @@ +502 \ No newline at end of file diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/id b/vm-builder/.vagrant/machines/default/vmware_desktop/id new file mode 100644 index 0000000..bcc8d87 --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/id @@ -0,0 +1 @@ +/Users/user/code/dangerzone/install/vm-builder/.vagrant/machines/default/vmware_desktop/1a6cd45d-9c66-466a-8102-8e7fbbe66804/generic-alpine314-vmware.vmx \ No newline at end of file diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/index_uuid b/vm-builder/.vagrant/machines/default/vmware_desktop/index_uuid new file mode 100644 index 0000000..132f8de --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/index_uuid @@ -0,0 +1 @@ +8055cfc1c36c4fe0af1dc2f53d5369ae \ No newline at end of file diff --git a/vm-builder/.vagrant/machines/default/vmware_desktop/vagrant_cwd b/vm-builder/.vagrant/machines/default/vmware_desktop/vagrant_cwd new file mode 100644 index 0000000..499ce03 --- /dev/null +++ b/vm-builder/.vagrant/machines/default/vmware_desktop/vagrant_cwd @@ -0,0 +1 @@ +/Users/user/code/dangerzone/install/vm-builder \ No newline at end of file diff --git a/vm-builder/.vagrant/rgloader/loader.rb b/vm-builder/.vagrant/rgloader/loader.rb new file mode 100644 index 0000000..c3c05b0 --- /dev/null +++ b/vm-builder/.vagrant/rgloader/loader.rb @@ -0,0 +1,9 @@ +# This file loads the proper rgloader/loader.rb file that comes packaged +# with Vagrant so that encoded files can properly run with Vagrant. + +if ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"] + require File.expand_path( + "rgloader/loader", ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"]) +else + raise "Encoded files can't be read outside of the Vagrant installer." +end diff --git a/install/vm-builder/README.md b/vm-builder/README.md similarity index 100% rename from install/vm-builder/README.md rename to vm-builder/README.md diff --git a/install/vm-builder/Vagrantfile b/vm-builder/Vagrantfile similarity index 88% rename from install/vm-builder/Vagrantfile rename to vm-builder/Vagrantfile index 194b33c..8c96f4d 100644 --- a/install/vm-builder/Vagrantfile +++ b/vm-builder/Vagrantfile @@ -2,11 +2,10 @@ # vi: set ft=ruby : Vagrant.configure("2") do |config| - config.vm.box = "generic/alpine313" + config.vm.box = "generic/alpine314" config.vm.synced_folder "../../dangerzone-converter", "/opt/dangerzone-converter" config.vm.synced_folder ".", "/vagrant" config.vm.provision "shell", inline: <<-SHELL - sed -i 's/3.13/3.14/' /etc/apk/repositories 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 diff --git a/install/vm-builder/build-iso.sh b/vm-builder/build-iso.sh similarity index 98% rename from install/vm-builder/build-iso.sh rename to vm-builder/build-iso.sh index 4be1a1f..7066d92 100755 --- a/install/vm-builder/build-iso.sh +++ b/vm-builder/build-iso.sh @@ -1,6 +1,6 @@ #!/bin/sh -ALPINE_TAG=v3.14.1 +ALPINE_TAG=v3.14.3 # Set up podman sudo modprobe fuse diff --git a/install/vm-builder/etc/apk/world b/vm-builder/etc/apk/world similarity index 100% rename from install/vm-builder/etc/apk/world rename to vm-builder/etc/apk/world diff --git a/install/vm-builder/etc/init.d/dangerzone b/vm-builder/etc/init.d/dangerzone similarity index 100% rename from install/vm-builder/etc/init.d/dangerzone rename to vm-builder/etc/init.d/dangerzone diff --git a/install/vm-builder/etc/setup-ssh.py b/vm-builder/etc/setup-ssh.py similarity index 100% rename from install/vm-builder/etc/setup-ssh.py rename to vm-builder/etc/setup-ssh.py diff --git a/install/vm-builder/genapkovl-dangerzone.sh b/vm-builder/genapkovl-dangerzone.sh similarity index 100% rename from install/vm-builder/genapkovl-dangerzone.sh rename to vm-builder/genapkovl-dangerzone.sh diff --git a/install/vm-builder/mkimg.dangerzone.sh b/vm-builder/mkimg.dangerzone.sh similarity index 100% rename from install/vm-builder/mkimg.dangerzone.sh rename to vm-builder/mkimg.dangerzone.sh diff --git a/install/vm-builder/run-vm.sh b/vm-builder/run-vm.sh similarity index 100% rename from install/vm-builder/run-vm.sh rename to vm-builder/run-vm.sh diff --git a/install/vm-builder/windows.sh b/vm-builder/windows.sh similarity index 100% rename from install/vm-builder/windows.sh rename to vm-builder/windows.sh