summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid P <megver83@parabola.nu>2021-01-23 21:00:41 -0300
committerDavid P <megver83@parabola.nu>2021-01-23 21:05:16 -0300
commitf63664db672844dcfded8121535987d952a25267 (patch)
treee06dfbef2e4707704618cc2d3afc33810b0dc1db
parentc1247cad56aef820a18f51ea013c146027030b07 (diff)
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 <megver83@parabola.nu>
-rw-r--r--.gitignore7
-rw-r--r--Makefile2
-rw-r--r--configs/lxde-openrc/packages.both1
-rw-r--r--configs/releng-openrc/packages.both1
l---------configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-config.service1
l---------configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-final.service1
l---------configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init-local.service1
l---------configs/releng/airootfs/etc/systemd/system/cloud-init.target.wants/cloud-init.service1
l---------configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/sshd.service1
-rw-r--r--configs/releng/packages.both1
-rwxr-xr-xparabolaiso/mkparabolaiso13
-rwxr-xr-xscripts/run_parabolaiso.sh26
12 files changed, 41 insertions, 15 deletions
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