summaryrefslogtreecommitdiff
path: root/parabolaiso/initcpio/hooks/parabolaiso
diff options
context:
space:
mode:
authorDavid P <megver83@parabola.nu>2020-08-01 15:11:02 -0400
committerDavid P <megver83@parabola.nu>2020-08-01 15:11:02 -0400
commite03b9539e946803923267b1e60bfc450b5a918f9 (patch)
treedaa52ea0fbcd261961ac75279e716c2d578f5b42 /parabolaiso/initcpio/hooks/parabolaiso
parentd1e535ec9761cc78c95ea756d470fb68f8b25109 (diff)
sync mkparabolaiso and initcpios with archiso v46
Signed-off-by: David P <megver83@parabola.nu>
Diffstat (limited to 'parabolaiso/initcpio/hooks/parabolaiso')
-rw-r--r--parabolaiso/initcpio/hooks/parabolaiso117
1 files changed, 67 insertions, 50 deletions
diff --git a/parabolaiso/initcpio/hooks/parabolaiso b/parabolaiso/initcpio/hooks/parabolaiso
index 6499310..975894f 100644
--- a/parabolaiso/initcpio/hooks/parabolaiso
+++ b/parabolaiso/initcpio/hooks/parabolaiso
@@ -1,3 +1,7 @@
+#!/bin/ash
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
# args: source, newroot, mountpoint
_mnt_dmsnapshot() {
local img="${1}"
@@ -8,19 +12,19 @@ _mnt_dmsnapshot() {
local dm_snap_name="${dm_snap_prefix}_${img_name}"
local ro_dev ro_dev_size rw_dev
- ro_dev=$(losetup --find --show --read-only "${img}")
- echo ${ro_dev} >> /run/parabolaiso/used_block_devices
- ro_dev_size=$(blockdev --getsz ${ro_dev})
+ ro_dev="$(losetup --find --show --read-only -- "${img}")"
+ echo "${ro_dev}" >> /run/parabolaiso/used_block_devices
+ ro_dev_size="$(blockdev --getsz -- "${ro_dev}")"
- if [[ "${cow_persistent}" == "P" ]]; then
- if [[ -f "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
+ if [ "${cow_persistent}" = "P" ]; then
+ if [ -f "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow" ]; then
msg ":: Found '/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow', using as persistent."
else
msg ":: Creating '/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow' as persistent."
truncate -s "${cow_spacesize}" "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow"
fi
else
- if [[ -f "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
+ if [ -f "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow" ]; then
msg ":: Found '/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow' but non-persistent requested, removing."
rm -f "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow"
fi
@@ -28,17 +32,18 @@ _mnt_dmsnapshot() {
truncate -s "${cow_spacesize}" "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow"
fi
- rw_dev=$(losetup --find --show "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow")
- echo ${rw_dev} >> /run/parabolaiso/used_block_devices
+ rw_dev="$(losetup --find --show "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow")"
+ echo "${rw_dev}" >> /run/parabolaiso/used_block_devices
- dmsetup create ${dm_snap_name} --table "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}"
+ dmsetup create "${dm_snap_name}" --table \
+ "0 ${ro_dev_size} snapshot ${ro_dev} ${rw_dev} ${cow_persistent} ${cow_chunksize}"
- if [[ "${cow_persistent}" != "P" ]]; then
+ if [ "${cow_persistent}" != "P" ]; then
rm -f "/run/parabolaiso/cowspace/${cow_directory}/${img_name}.cow"
fi
_mnt_dev "/dev/mapper/${dm_snap_name}" "${newroot}${mnt}" "-w" "defaults"
- echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/parabolaiso/used_block_devices
+ readlink -f "/dev/mapper/${dm_snap_name}" >> /run/parabolaiso/used_block_devices
}
# args: source, newroot, mountpoint
@@ -46,8 +51,10 @@ _mnt_overlayfs() {
local src="${1}"
local newroot="${2}"
local mnt="${3}"
- mkdir -p /run/parabolaiso/cowspace/${cow_directory}/upperdir /run/parabolaiso/cowspace/${cow_directory}/workdir
- mount -t overlay -o lowerdir=${src},upperdir=/run/parabolaiso/cowspace/${cow_directory}/upperdir,workdir=/run/parabolaiso/cowspace/${cow_directory}/workdir airootfs "${newroot}${mnt}"
+ mkdir -p "/run/parabolaiso/cowspace/${cow_directory}/upperdir" "/run/parabolaiso/cowspace/${cow_directory}/workdir"
+ mount -t overlay -o \
+ "lowerdir=${src},upperdir=/run/parabolaiso/cowspace/${cow_directory}/upperdir,workdir=/run/parabolaiso/cowspace/${cow_directory}/workdir" \
+ airootfs "${newroot}${mnt}"
}
@@ -58,17 +65,19 @@ _mnt_sfs() {
local img_fullname="${img##*/}"
local sfs_dev
- if [[ "${copytoram}" == "y" ]]; then
+ # shellcheck disable=SC2154
+ # defined via initcpio's parse_cmdline()
+ if [ "${copytoram}" = "y" ]; then
msg -n ":: Copying squashfs image to RAM..."
- if ! cp "${img}" "/run/parabolaiso/copytoram/${img_fullname}" ; then
+ if ! cp -- "${img}" "/run/parabolaiso/copytoram/${img_fullname}" ; then
echo "ERROR: while copy '${img}' to '/run/parabolaiso/copytoram/${img_fullname}'"
launch_interactive_shell
fi
img="/run/parabolaiso/copytoram/${img_fullname}"
msg "done."
fi
- sfs_dev=$(losetup --find --show --read-only "${img}")
- echo ${sfs_dev} >> /run/parabolaiso/used_block_devices
+ sfs_dev="$(losetup --find --show --read-only -- "${img}")"
+ echo "${sfs_dev}" >> /run/parabolaiso/used_block_devices
_mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults"
}
@@ -102,45 +111,48 @@ _mnt_dev() {
_verify_checksum() {
local _status
- cd "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}"
+ cd "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}" || exit 1
sha512sum -c airootfs.sha512 > /tmp/checksum.log 2>&1
_status=$?
- cd "${OLDPWD}"
- return ${_status}
+ cd -- "${OLDPWD}" || exit 1
+ return "${_status}"
}
_verify_signature() {
local _status
- cd "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}"
+ cd "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}" || exit 1
gpg --homedir /gpg --status-fd 1 --verify airootfs.sfs.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG'
_status=$?
- cd "${OLDPWD}"
+ cd -- "${OLDPWD}" || exit 1
return ${_status}
}
run_hook() {
- [[ -z "${arch}" ]] && arch="$(uname -m)"
- [[ -z "${copytoram_size}" ]] && copytoram_size="75%"
- [[ -z "${parabolaisobasedir}" ]] && parabolaisobasedir="parabola"
- [[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="parabola"
- [[ -z "${parabolaisodevice}" ]] && parabolaisodevice="/dev/disk/by-label/${parabolaisolabel}"
- [[ -z "${cow_spacesize}" ]] && cow_spacesize="256M"
-
- if [[ -n "${cow_label}" ]]; then
+ [ -z "${arch}" ] && arch="$(uname -m)"
+ [ -z "${copytoram_size}" ] && copytoram_size="75%"
+ [ -z "${parabolaisobasedir}" ] && parabolaisobasedir="arch"
+ [ -z "${dm_snap_prefix}" ] && dm_snap_prefix="arch"
+ # shellcheck disable=SC2154
+ # defined via initcpio's parse_cmdline()
+ [ -z "${parabolaisodevice}" ] && parabolaisodevice="/dev/disk/by-label/${parabolaisolabel}"
+ [ -z "${cow_spacesize}" ] && cow_spacesize="256M"
+ # shellcheck disable=SC2154
+ # defined via initcpio's parse_cmdline()
+ if [ -n "${cow_label}" ]; then
cow_device="/dev/disk/by-label/${cow_label}"
- [[ -z "${cow_persistent}" ]] && cow_persistent="P"
- elif [[ -n "${cow_device}" ]]; then
- [[ -z "${cow_persistent}" ]] && cow_persistent="P"
+ [ -z "${cow_persistent}" ] && cow_persistent="P"
+ elif [ -n "${cow_device}" ]; then
+ [ -z "${cow_persistent}" ] && cow_persistent="P"
else
cow_persistent="N"
fi
- [[ -z "${cow_flags}" ]] && cow_flags="defaults"
- [[ -z "${cow_directory}" ]] && cow_directory="persistent_${parabolaisolabel}/${arch}"
- [[ -z "${cow_chunksize}" ]] && cow_chunksize="8"
+ [ -z "${cow_flags}" ] && cow_flags="defaults"
+ [ -z "${cow_directory}" ] && cow_directory="persistent_${parabolaisolabel}/${arch}"
+ [ -z "${cow_chunksize}" ] && cow_chunksize="8"
# set mount handler for parabolaiso
- mount_handler="parabolaiso_mount_handler"
+ export mount_handler="parabolaiso_mount_handler"
}
# This function is called normally from init script, but it can be called
@@ -151,13 +163,15 @@ parabolaiso_mount_handler() {
if ! mountpoint -q "/run/parabolaiso/bootmnt"; then
_mnt_dev "${parabolaisodevice}" "/run/parabolaiso/bootmnt" "-r" "defaults"
- if [[ "${copytoram}" != "y" ]]; then
- echo $(readlink -f ${parabolaisodevice}) >> /run/parabolaiso/used_block_devices
+ if [ "${copytoram}" != "y" ]; then
+ readlink -f "${parabolaisodevice}" >> /run/parabolaiso/used_block_devices
fi
fi
- if [[ "${checksum}" == "y" ]]; then
- if [[ -f "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}/airootfs.sha512" ]]; then
+ # shellcheck disable=SC2154
+ # defined via initcpio's parse_cmdline()
+ if [ "${checksum}" = "y" ]; then
+ if [ -f "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}/airootfs.sha512" ]; then
msg -n ":: Self-test requested, please wait..."
if _verify_checksum; then
msg "done. Checksum is OK, continue booting."
@@ -172,8 +186,10 @@ parabolaiso_mount_handler() {
fi
fi
- if [[ "${verify}" == "y" ]]; then
- if [[ -f "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}/airootfs.sfs.sig" ]]; then
+ # shellcheck disable=SC2154
+ # defined via initcpio's parse_cmdline()
+ if [ "${verify}" = "y" ]; then
+ if [ -f "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}/airootfs.sfs.sig" ]; then
msg -n ":: Signature verification requested, please wait..."
if _verify_signature; then
msg "done. Signature is OK, continue booting."
@@ -187,33 +203,34 @@ parabolaiso_mount_handler() {
fi
fi
- if [[ "${copytoram}" == "y" ]]; then
+ if [ "${copytoram}" = "y" ]; then
msg ":: Mounting /run/parabolaiso/copytoram (tmpfs) filesystem, size=${copytoram_size}"
mkdir -p /run/parabolaiso/copytoram
mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram /run/parabolaiso/copytoram
fi
- if [[ -n "${cow_device}" ]]; then
+ if [ -n "${cow_device}" ]; then
_mnt_dev "${cow_device}" "/run/parabolaiso/cowspace" "-r" "${cow_flags}"
- echo $(readlink -f ${cow_device}) >> /run/parabolaiso/used_block_devices
+ readlink -f "${cow_device}" >> /run/parabolaiso/used_block_devices
mount -o remount,rw "/run/parabolaiso/cowspace"
else
msg ":: Mounting /run/parabolaiso/cowspace (tmpfs) filesystem, size=${cow_spacesize}..."
mkdir -p /run/parabolaiso/cowspace
mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace /run/parabolaiso/cowspace
fi
- mkdir -p -m 0700 "/run/parabolaiso/cowspace/${cow_directory}"
+ mkdir -p "/run/parabolaiso/cowspace/${cow_directory}"
+ chmod 0700 "/run/parabolaiso/cowspace/${cow_directory}"
_mnt_sfs "/run/parabolaiso/bootmnt/${parabolaisobasedir}/${arch}/airootfs.sfs" "/run/parabolaiso/sfs/airootfs"
- if [[ -f "/run/parabolaiso/sfs/airootfs/airootfs.img" ]]; then
+ if [ -f "/run/parabolaiso/sfs/airootfs/airootfs.img" ]; then
_mnt_dmsnapshot "/run/parabolaiso/sfs/airootfs/airootfs.img" "${newroot}" "/"
else
_mnt_overlayfs "/run/parabolaiso/sfs/airootfs" "${newroot}" "/"
fi
- if [[ "${copytoram}" == "y" ]]; then
+ if [ "${copytoram}" = "y" ]; then
umount -d /run/parabolaiso/bootmnt
fi
}
-# vim:ft=sh:ts=4:sw=4:et:
+# vim: set ft=sh: