From f63664db672844dcfded8121535987d952a25267 Mon Sep 17 00:00:00 2001 From: David P Date: Sat, 23 Jan 2021 21:00:41 -0300 Subject: sync with archiso imported changes: d153b48 (HEAD -> master, origin/master, origin/HEAD) mkarchiso: fix typos 0ae5cd9 lint ALL (future) scripts/*.sh, not just run_archiso.sh 608d110 add -c => -cdrom cloud-init.iso support to run_archiso.sh 8830471 add cloud-init files to .gitignore (and loosen out/ and work/) 9553439 make run_archiso forward VM's port 22 to host 60022, for easy SSH testing 833cbd5 enable SSH server in releng profile 9b03e0b add cloud-init to releng e556491 add VNC support to run_archiso.sh 64091a1 Combine sed commands to reduce file writes Signed-off-by: David P --- .gitignore | 7 ++++-- Makefile | 2 +- configs/lxde-openrc/packages.both | 1 + configs/releng-openrc/packages.both | 1 + .../cloud-init.target.wants/cloud-config.service | 1 + .../cloud-init.target.wants/cloud-final.service | 1 + .../cloud-init-local.service | 1 + .../cloud-init.target.wants/cloud-init.service | 1 + .../system/multi-user.target.wants/sshd.service | 1 + configs/releng/packages.both | 1 + parabolaiso/mkparabolaiso | 13 +++++------ scripts/run_parabolaiso.sh | 26 ++++++++++++++++++---- 12 files changed, 41 insertions(+), 15 deletions(-) create mode 120000 configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service create mode 120000 configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service create mode 120000 configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service create mode 120000 configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service create mode 120000 configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service diff --git a/.gitignore b/.gitignore index 8a5be0a..54c4c42 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ *~ parabolaiso-*.tar.gz* -configs/*/work -configs/*/out +work/ +out/ +*.iso +user-data +meta-data diff --git a/Makefile b/Makefile index 90e80c3..cbd85dd 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ check: lint lint: shellcheck -s bash parabolaiso/mkparabolaiso \ - scripts/run_parabolaiso.sh \ + $(wildcard scripts/*.sh) \ $(INSTALL_FILES) \ $(wildcard configs/*/build.sh) \ $(wildcard configs/*/profiledef.sh) \ diff --git a/configs/lxde-openrc/packages.both b/configs/lxde-openrc/packages.both index 29fac2d..d911619 100644 --- a/configs/lxde-openrc/packages.both +++ b/configs/lxde-openrc/packages.both @@ -5,6 +5,7 @@ arch-install-scripts base bind-tools btrfs-progs +cloud-init crda darkhttpd ddrescue diff --git a/configs/releng-openrc/packages.both b/configs/releng-openrc/packages.both index 989f9d6..c55658a 100644 --- a/configs/releng-openrc/packages.both +++ b/configs/releng-openrc/packages.both @@ -4,6 +4,7 @@ arch-install-scripts base bind-tools btrfs-progs +cloud-init crda darkhttpd ddrescue diff --git a/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service new file mode 120000 index 0000000..ebc50f0 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/cloud-config.service \ No newline at end of file diff --git a/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service new file mode 120000 index 0000000..80fa3c8 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/cloud-final.service \ No newline at end of file diff --git a/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service new file mode 120000 index 0000000..dd8e9f1 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/cloud-init-local.service \ No newline at end of file diff --git a/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service new file mode 120000 index 0000000..24c7a26 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/cloud-init.service \ No newline at end of file diff --git a/configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service b/configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service new file mode 120000 index 0000000..d21ebd9 --- /dev/null +++ b/configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/sshd.service \ No newline at end of file diff --git a/configs/releng/packages.both b/configs/releng/packages.both index 1a7bbf7..3d41dfb 100644 --- a/configs/releng/packages.both +++ b/configs/releng/packages.both @@ -6,6 +6,7 @@ base bind-tools brltty btrfs-progs +cloud-init crda darkhttpd ddrescue diff --git a/parabolaiso/mkparabolaiso b/parabolaiso/mkparabolaiso index 97462ed..a3bb49b 100755 --- a/parabolaiso/mkparabolaiso +++ b/parabolaiso/mkparabolaiso @@ -264,17 +264,14 @@ _make_pacman_conf() { fi _msg_info "Copying custom pacman.conf to work directory..." - # take the profile pacman.conf and strip all settings that would break in chroot when using pacman -r - # see `man 8 pacman` for further info - setarch "${arch}" pacman-conf --config "${pacman_conf}" | \ - sed '/CacheDir/d;/DBPath/d;/HookDir/d;/LogFile/d;/RootDir/d' > "${work_dir}/pacman_${arch}.conf" - _msg_info "Using pacman CacheDir: ${_cache_dirs}" + # take the profile pacman.conf and strip all settings that would break in chroot when using pacman -r # append CacheDir and HookDir to [options] section # HookDir is *always* set to the airootfs' override directory - sed "/\[options\]/a CacheDir = ${_cache_dirs} - /\[options\]/a HookDir = ${airootfs_dir}/etc/pacman.d/hooks/" \ - -i "${work_dir}/pacman_${arch}.conf" + # see `man 8 pacman` for further info + setarch "${arch}" pacman-conf --config "${pacman_conf}" | \ + sed "/CacheDir/d;/DBPath/d;/HookDir/d;/LogFile/d;/RootDir/d;/\[options\]/a CacheDir = ${_cache_dirs} + /\[options\]/a HookDir = ${airootfs_dir}/etc/pacman.d/hooks/" > "${work_dir}/pacman_${arch}.conf" } # Prepare working directory and copy custom airootfs files (airootfs) diff --git a/scripts/run_parabolaiso.sh b/scripts/run_parabolaiso.sh index b3063a5..cea5d2c 100755 --- a/scripts/run_parabolaiso.sh +++ b/scripts/run_parabolaiso.sh @@ -28,6 +28,8 @@ Options: -i [image] image to boot into -s use Secure Boot (only relevant when using UEFI) -u set boot type to 'UEFI' + -v use VNC display (instead of default SDL) + -c [image] attach an additional optical disc image (e.g. for cloud-init) Example: Run an image using UEFI: @@ -84,20 +86,27 @@ run_image() { ) fi + if [[ -n "${oddimage}" ]]; then + qemu_options+=( + '-device' 'scsi-cd,bus=scsi0.0,drive=cdrom1' + '-drive' "id=cdrom1,if=none,format=raw,media=cdrom,readonly=on,file=${oddimage}" + ) + fi + qemu-system-x86_64 \ -boot order=d,menu=on,reboot-timeout=5000 \ -m "size=3072,slots=0,maxmem=$((3072*1024*1024))" \ - -k en \ + -k en-us \ -name parabolaiso,process=parabolaiso_0 \ -device virtio-scsi-pci,id=scsi0 \ -device "scsi-${mediatype%rom},bus=scsi0.0,drive=${mediatype}0" \ -drive "id=${mediatype}0,if=none,format=raw,media=${mediatype/hd/disk},readonly=on,file=${image}" \ - -display sdl \ + -display "${display}" \ -vga virtio \ -audiodev pa,id=snd0 \ -device ich9-intel-hda \ -device hda-output,audiodev=snd0 \ - -device virtio-net-pci,romfile=,netdev=net0 -netdev user,id=net0 \ + -device virtio-net-pci,romfile=,netdev=net0 -netdev user,id=net0,hostfwd=tcp::60022-:22 \ -machine type=q35,smm=on,accel=kvm,usb=on,pcspk-audiodev=snd0 \ -global ICH9-LPC.disable_s3=1 \ -enable-kvm \ @@ -119,16 +128,18 @@ set_image() { } image='' +oddimage='' accessibility='' boot_type='bios' mediatype='cdrom' secure_boot='off' +display='sdl' qemu_options=() working_dir="$(mktemp -dt run_parabolaiso.XXXXXXXXXX)" trap cleanup_working_dir EXIT if (( ${#@} > 0 )); then - while getopts 'abdhi:su' flag; do + while getopts 'abc:dhi:suv' flag; do case "$flag" in a) accessibility='on' @@ -136,6 +147,9 @@ if (( ${#@} > 0 )); then b) boot_type='bios' ;; + c) + oddimage="$OPTARG" + ;; d) mediatype='hd' ;; @@ -152,6 +166,10 @@ if (( ${#@} > 0 )); then s) secure_boot='on' ;; + v) + display='none' + qemu_options+=(-vnc 'vnc=0.0.0.0:0,vnc=[::]:0') + ;; *) printf '%s\n' "Error: Wrong option. Try 'run_parabolaiso -h'." exit 1 -- cgit v1.2.2