Adding linting for initcpio scripts
archiso/initcpio/install/*: Setting bash shebang for all scripts and making them comform with shellcheck. archiso/initcpio/{hooks,script}/*: Setting ash shebang for all scripts and making them comform with shellcheck (for dash, as shellcheck has no ash specific ruleset). Essentially the ash based scripts should be POSIX compliant as much as possible to have an easier time writing, debugging and maintaining them. Ensuring that variables are not treated as options and introducing variable quoting. .gitlab-ci.yml: Integrating shellcheck for initcpio scripts. Closes #32
This commit is contained in:
parent
550aca7124
commit
e2032db4e7
@ -15,3 +15,7 @@ lint:
|
|||||||
configs/releng/airootfs/root/.automated_script.sh
|
configs/releng/airootfs/root/.automated_script.sh
|
||||||
configs/releng/airootfs/usr/local/bin/choose-mirror
|
configs/releng/airootfs/usr/local/bin/choose-mirror
|
||||||
scripts/run_archiso.sh
|
scripts/run_archiso.sh
|
||||||
|
archiso/initcpio/install/*
|
||||||
|
- shellcheck -s dash
|
||||||
|
archiso/initcpio/hooks/*
|
||||||
|
archiso/initcpio/script/*
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#!/bin/ash
|
||||||
|
|
||||||
# args: source, newroot, mountpoint
|
# args: source, newroot, mountpoint
|
||||||
_mnt_dmsnapshot() {
|
_mnt_dmsnapshot() {
|
||||||
local img="${1}"
|
local img="${1}"
|
||||||
@ -8,19 +10,19 @@ _mnt_dmsnapshot() {
|
|||||||
local dm_snap_name="${dm_snap_prefix}_${img_name}"
|
local dm_snap_name="${dm_snap_prefix}_${img_name}"
|
||||||
local ro_dev ro_dev_size rw_dev
|
local ro_dev ro_dev_size rw_dev
|
||||||
|
|
||||||
ro_dev=$(losetup --find --show --read-only "${img}")
|
ro_dev="$(losetup --find --show --read-only -- "${img}")"
|
||||||
echo ${ro_dev} >> /run/archiso/used_block_devices
|
echo "${ro_dev}" >> /run/archiso/used_block_devices
|
||||||
ro_dev_size=$(blockdev --getsz ${ro_dev})
|
ro_dev_size="$(blockdev --getsz -- "${ro_dev}")"
|
||||||
|
|
||||||
if [[ "${cow_persistent}" == "P" ]]; then
|
if [ "${cow_persistent}" = "P" ]; then
|
||||||
if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
|
if [ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]; then
|
||||||
msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow', using as persistent."
|
msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow', using as persistent."
|
||||||
else
|
else
|
||||||
msg ":: Creating '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' as persistent."
|
msg ":: Creating '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' as persistent."
|
||||||
truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [[ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]]; then
|
if [ -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow" ]; then
|
||||||
msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' but non-persistent requested, removing."
|
msg ":: Found '/run/archiso/cowspace/${cow_directory}/${img_name}.cow' but non-persistent requested, removing."
|
||||||
rm -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
rm -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||||
fi
|
fi
|
||||||
@ -28,17 +30,18 @@ _mnt_dmsnapshot() {
|
|||||||
truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
truncate -s "${cow_spacesize}" "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
rw_dev=$(losetup --find --show "/run/archiso/cowspace/${cow_directory}/${img_name}.cow")
|
rw_dev="$(losetup --find --show "/run/archiso/cowspace/${cow_directory}/${img_name}.cow")"
|
||||||
echo ${rw_dev} >> /run/archiso/used_block_devices
|
echo "${rw_dev}" >> /run/archiso/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/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
rm -f "/run/archiso/cowspace/${cow_directory}/${img_name}.cow"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_mnt_dev "/dev/mapper/${dm_snap_name}" "${newroot}${mnt}" "-w" "defaults"
|
_mnt_dev "/dev/mapper/${dm_snap_name}" "${newroot}${mnt}" "-w" "defaults"
|
||||||
echo $(readlink -f /dev/mapper/${dm_snap_name}) >> /run/archiso/used_block_devices
|
readlink -f "/dev/mapper/${dm_snap_name}" >> /run/archiso/used_block_devices
|
||||||
}
|
}
|
||||||
|
|
||||||
# args: source, newroot, mountpoint
|
# args: source, newroot, mountpoint
|
||||||
@ -46,8 +49,10 @@ _mnt_overlayfs() {
|
|||||||
local src="${1}"
|
local src="${1}"
|
||||||
local newroot="${2}"
|
local newroot="${2}"
|
||||||
local mnt="${3}"
|
local mnt="${3}"
|
||||||
mkdir -p /run/archiso/cowspace/${cow_directory}/upperdir /run/archiso/cowspace/${cow_directory}/workdir
|
mkdir -p "/run/archiso/cowspace/${cow_directory}/upperdir" "/run/archiso/cowspace/${cow_directory}/workdir"
|
||||||
mount -t overlay -o lowerdir=${src},upperdir=/run/archiso/cowspace/${cow_directory}/upperdir,workdir=/run/archiso/cowspace/${cow_directory}/workdir airootfs "${newroot}${mnt}"
|
mount -t overlay -o \
|
||||||
|
"lowerdir=${src},upperdir=/run/archiso/cowspace/${cow_directory}/upperdir,workdir=/run/archiso/cowspace/${cow_directory}/workdir" \
|
||||||
|
airootfs "${newroot}${mnt}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -58,17 +63,18 @@ _mnt_sfs() {
|
|||||||
local img_fullname="${img##*/}"
|
local img_fullname="${img##*/}"
|
||||||
local sfs_dev
|
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..."
|
msg -n ":: Copying squashfs image to RAM..."
|
||||||
if ! cp "${img}" "/run/archiso/copytoram/${img_fullname}" ; then
|
if ! cp -- "${img}" "/run/archiso/copytoram/${img_fullname}" ; then
|
||||||
echo "ERROR: while copy '${img}' to '/run/archiso/copytoram/${img_fullname}'"
|
echo "ERROR: while copy '${img}' to '/run/archiso/copytoram/${img_fullname}'"
|
||||||
launch_interactive_shell
|
launch_interactive_shell
|
||||||
fi
|
fi
|
||||||
img="/run/archiso/copytoram/${img_fullname}"
|
img="/run/archiso/copytoram/${img_fullname}"
|
||||||
msg "done."
|
msg "done."
|
||||||
fi
|
fi
|
||||||
sfs_dev=$(losetup --find --show --read-only "${img}")
|
sfs_dev="$(losetup --find --show --read-only -- "${img}")"
|
||||||
echo ${sfs_dev} >> /run/archiso/used_block_devices
|
echo "${sfs_dev}" >> /run/archiso/used_block_devices
|
||||||
_mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults"
|
_mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,45 +108,46 @@ _mnt_dev() {
|
|||||||
|
|
||||||
_verify_checksum() {
|
_verify_checksum() {
|
||||||
local _status
|
local _status
|
||||||
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}"
|
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}" || exit 1
|
||||||
sha512sum -c airootfs.sha512 > /tmp/checksum.log 2>&1
|
sha512sum -c airootfs.sha512 > /tmp/checksum.log 2>&1
|
||||||
_status=$?
|
_status=$?
|
||||||
cd "${OLDPWD}"
|
cd -- "${OLDPWD}" || exit 1
|
||||||
return ${_status}
|
return "${_status}"
|
||||||
}
|
}
|
||||||
|
|
||||||
_verify_signature() {
|
_verify_signature() {
|
||||||
local _status
|
local _status
|
||||||
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}"
|
cd "/run/archiso/bootmnt/${archisobasedir}/${arch}" || exit 1
|
||||||
gpg --homedir /gpg --status-fd 1 --verify airootfs.sfs.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG'
|
gpg --homedir /gpg --status-fd 1 --verify airootfs.sfs.sig 2>/dev/null | grep -qE '^\[GNUPG:\] GOODSIG'
|
||||||
_status=$?
|
_status=$?
|
||||||
cd "${OLDPWD}"
|
cd -- "${OLDPWD}" || exit 1
|
||||||
return ${_status}
|
return ${_status}
|
||||||
}
|
}
|
||||||
|
|
||||||
run_hook() {
|
run_hook() {
|
||||||
[[ -z "${arch}" ]] && arch="$(uname -m)"
|
[ -z "${arch}" ] && arch="$(uname -m)"
|
||||||
[[ -z "${copytoram_size}" ]] && copytoram_size="75%"
|
[ -z "${copytoram_size}" ] && copytoram_size="75%"
|
||||||
[[ -z "${archisobasedir}" ]] && archisobasedir="arch"
|
[ -z "${archisobasedir}" ] && archisobasedir="arch"
|
||||||
[[ -z "${dm_snap_prefix}" ]] && dm_snap_prefix="arch"
|
[ -z "${dm_snap_prefix}" ] && dm_snap_prefix="arch"
|
||||||
[[ -z "${archisodevice}" ]] && archisodevice="/dev/disk/by-label/${archisolabel}"
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
[[ -z "${cow_spacesize}" ]] && cow_spacesize="256M"
|
[ -z "${archisodevice}" ] && archisodevice="/dev/disk/by-label/${archisolabel}"
|
||||||
|
[ -z "${cow_spacesize}" ] && cow_spacesize="256M"
|
||||||
if [[ -n "${cow_label}" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
|
if [ -n "${cow_label}" ]; then
|
||||||
cow_device="/dev/disk/by-label/${cow_label}"
|
cow_device="/dev/disk/by-label/${cow_label}"
|
||||||
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
[ -z "${cow_persistent}" ] && cow_persistent="P"
|
||||||
elif [[ -n "${cow_device}" ]]; then
|
elif [ -n "${cow_device}" ]; then
|
||||||
[[ -z "${cow_persistent}" ]] && cow_persistent="P"
|
[ -z "${cow_persistent}" ] && cow_persistent="P"
|
||||||
else
|
else
|
||||||
cow_persistent="N"
|
cow_persistent="N"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[[ -z "${cow_flags}" ]] && cow_flags="defaults"
|
[ -z "${cow_flags}" ] && cow_flags="defaults"
|
||||||
[[ -z "${cow_directory}" ]] && cow_directory="persistent_${archisolabel}/${arch}"
|
[ -z "${cow_directory}" ] && cow_directory="persistent_${archisolabel}/${arch}"
|
||||||
[[ -z "${cow_chunksize}" ]] && cow_chunksize="8"
|
[ -z "${cow_chunksize}" ] && cow_chunksize="8"
|
||||||
|
|
||||||
# set mount handler for archiso
|
# set mount handler for archiso
|
||||||
mount_handler="archiso_mount_handler"
|
export mount_handler="archiso_mount_handler"
|
||||||
}
|
}
|
||||||
|
|
||||||
# This function is called normally from init script, but it can be called
|
# This function is called normally from init script, but it can be called
|
||||||
@ -151,13 +158,14 @@ archiso_mount_handler() {
|
|||||||
|
|
||||||
if ! mountpoint -q "/run/archiso/bootmnt"; then
|
if ! mountpoint -q "/run/archiso/bootmnt"; then
|
||||||
_mnt_dev "${archisodevice}" "/run/archiso/bootmnt" "-r" "defaults"
|
_mnt_dev "${archisodevice}" "/run/archiso/bootmnt" "-r" "defaults"
|
||||||
if [[ "${copytoram}" != "y" ]]; then
|
if [ "${copytoram}" != "y" ]; then
|
||||||
echo $(readlink -f ${archisodevice}) >> /run/archiso/used_block_devices
|
readlink -f "${archisodevice}" >> /run/archiso/used_block_devices
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${checksum}" == "y" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
if [[ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sha512" ]]; then
|
if [ "${checksum}" = "y" ]; then
|
||||||
|
if [ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sha512" ]; then
|
||||||
msg -n ":: Self-test requested, please wait..."
|
msg -n ":: Self-test requested, please wait..."
|
||||||
if _verify_checksum; then
|
if _verify_checksum; then
|
||||||
msg "done. Checksum is OK, continue booting."
|
msg "done. Checksum is OK, continue booting."
|
||||||
@ -172,8 +180,9 @@ archiso_mount_handler() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${verify}" == "y" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
if [[ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs.sig" ]]; then
|
if [ "${verify}" = "y" ]; then
|
||||||
|
if [ -f "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs.sig" ]; then
|
||||||
msg -n ":: Signature verification requested, please wait..."
|
msg -n ":: Signature verification requested, please wait..."
|
||||||
if _verify_signature; then
|
if _verify_signature; then
|
||||||
msg "done. Signature is OK, continue booting."
|
msg "done. Signature is OK, continue booting."
|
||||||
@ -187,33 +196,34 @@ archiso_mount_handler() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${copytoram}" == "y" ]]; then
|
if [ "${copytoram}" = "y" ]; then
|
||||||
msg ":: Mounting /run/archiso/copytoram (tmpfs) filesystem, size=${copytoram_size}"
|
msg ":: Mounting /run/archiso/copytoram (tmpfs) filesystem, size=${copytoram_size}"
|
||||||
mkdir -p /run/archiso/copytoram
|
mkdir -p /run/archiso/copytoram
|
||||||
mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram /run/archiso/copytoram
|
mount -t tmpfs -o "size=${copytoram_size}",mode=0755 copytoram /run/archiso/copytoram
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n "${cow_device}" ]]; then
|
if [ -n "${cow_device}" ]; then
|
||||||
_mnt_dev "${cow_device}" "/run/archiso/cowspace" "-r" "${cow_flags}"
|
_mnt_dev "${cow_device}" "/run/archiso/cowspace" "-r" "${cow_flags}"
|
||||||
echo $(readlink -f ${cow_device}) >> /run/archiso/used_block_devices
|
readlink -f "${cow_device}" >> /run/archiso/used_block_devices
|
||||||
mount -o remount,rw "/run/archiso/cowspace"
|
mount -o remount,rw "/run/archiso/cowspace"
|
||||||
else
|
else
|
||||||
msg ":: Mounting /run/archiso/cowspace (tmpfs) filesystem, size=${cow_spacesize}..."
|
msg ":: Mounting /run/archiso/cowspace (tmpfs) filesystem, size=${cow_spacesize}..."
|
||||||
mkdir -p /run/archiso/cowspace
|
mkdir -p /run/archiso/cowspace
|
||||||
mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace /run/archiso/cowspace
|
mount -t tmpfs -o "size=${cow_spacesize}",mode=0755 cowspace /run/archiso/cowspace
|
||||||
fi
|
fi
|
||||||
mkdir -p -m 0700 "/run/archiso/cowspace/${cow_directory}"
|
mkdir -p "/run/archiso/cowspace/${cow_directory}"
|
||||||
|
chmod 0700 "/run/archiso/cowspace/${cow_directory}"
|
||||||
|
|
||||||
_mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs" "/run/archiso/sfs/airootfs"
|
_mnt_sfs "/run/archiso/bootmnt/${archisobasedir}/${arch}/airootfs.sfs" "/run/archiso/sfs/airootfs"
|
||||||
if [[ -f "/run/archiso/sfs/airootfs/airootfs.img" ]]; then
|
if [ -f "/run/archiso/sfs/airootfs/airootfs.img" ]; then
|
||||||
_mnt_dmsnapshot "/run/archiso/sfs/airootfs/airootfs.img" "${newroot}" "/"
|
_mnt_dmsnapshot "/run/archiso/sfs/airootfs/airootfs.img" "${newroot}" "/"
|
||||||
else
|
else
|
||||||
_mnt_overlayfs "/run/archiso/sfs/airootfs" "${newroot}" "/"
|
_mnt_overlayfs "/run/archiso/sfs/airootfs" "${newroot}" "/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${copytoram}" == "y" ]]; then
|
if [ "${copytoram}" = "y" ]; then
|
||||||
umount -d /run/archiso/bootmnt
|
umount -d /run/archiso/bootmnt
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim:ft=sh:ts=4:sw=4:et:
|
# vim: set ft=sh:
|
||||||
|
@ -1,10 +1,12 @@
|
|||||||
# vim: set ft=sh:
|
#!/bin/ash
|
||||||
|
|
||||||
run_hook () {
|
run_hook () {
|
||||||
[[ -n "${img_label}" ]] && img_dev="/dev/disk/by-label/${img_label}"
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
[[ -z "${img_flags}" ]] && img_flags="defaults"
|
[ -n "${img_label}" ] && img_dev="/dev/disk/by-label/${img_label}"
|
||||||
if [[ -n "${img_dev}" && -n "${img_loop}" ]]; then
|
[ -z "${img_flags}" ] && img_flags="defaults"
|
||||||
mount_handler="archiso_loop_mount_handler"
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
|
if [ -n "${img_dev}" ] && [ -n "${img_loop}" ]; then
|
||||||
|
export mount_handler="archiso_loop_mount_handler"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15,21 +17,24 @@ archiso_loop_mount_handler () {
|
|||||||
|
|
||||||
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
|
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
|
||||||
_mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r" "${img_flags}"
|
_mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r" "${img_flags}"
|
||||||
if [[ "${copytoram}" != "y" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
echo $(readlink -f ${img_dev}) >> /run/archiso/used_block_devices
|
if [ "${copytoram}" != "y" ]; then
|
||||||
|
readlink -f "${img_dev}" >> /run/archiso/used_block_devices
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if _dev_loop=$(losetup --find --show --read-only "/run/archiso/img_dev/${img_loop}"); then
|
if _dev_loop=$(losetup --find --show --read-only "/run/archiso/img_dev/${img_loop}"); then
|
||||||
archisodevice="${_dev_loop}"
|
export archisodevice="${_dev_loop}"
|
||||||
else
|
else
|
||||||
echo "ERROR: Setting loopback device for file '/run/archiso/img_dev/${img_loop}'"
|
echo "ERROR: Setting loopback device for file '/run/archiso/img_dev/${img_loop}'"
|
||||||
launch_interactive_shell
|
launch_interactive_shell
|
||||||
fi
|
fi
|
||||||
|
|
||||||
archiso_mount_handler ${newroot}
|
archiso_mount_handler "${newroot}"
|
||||||
|
|
||||||
if [[ "${copytoram}" == "y" ]]; then
|
if [ "${copytoram}" = "y" ]; then
|
||||||
losetup -d ${_dev_loop} 2>/dev/null
|
losetup -d "${_dev_loop}" 2>/dev/null
|
||||||
umount /run/archiso/img_dev
|
umount /run/archiso/img_dev
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh:
|
||||||
|
@ -1,28 +1,27 @@
|
|||||||
# vim: set ft=sh:
|
#!/bin/ash
|
||||||
|
|
||||||
run_hook () {
|
run_hook () {
|
||||||
# Do *not* declare 'bootif_dev' local! We need it in run_latehook().
|
# Do *not* declare 'bootif_dev' local! We need it in run_latehook().
|
||||||
local i net_mac bootif_mac
|
local i net_mac bootif_mac
|
||||||
|
local DNSDOMAIN HOSTNAME IPV4DNS0 IPV4DNS1 ROOTSERVER
|
||||||
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
# These variables will be parsed from /tmp/net-*.conf generated by ipconfig
|
||||||
local DEVICE
|
# shellcheck disable=SC2034
|
||||||
local IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1
|
local DEVICE IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY NISDOMAIN ROOTPATH filename
|
||||||
local HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH
|
|
||||||
local filename
|
|
||||||
# /tmp/net-*.conf
|
|
||||||
|
|
||||||
if [[ -n "${ip}" ]]; then
|
if [ -n "${ip}" ]; then
|
||||||
if [[ -n "${BOOTIF}" ]]; then
|
if [ -n "${BOOTIF}" ]; then
|
||||||
bootif_mac=${BOOTIF#01-}
|
bootif_mac="${BOOTIF#01-}"
|
||||||
bootif_mac=${bootif_mac//-/:}
|
# shellcheck disable=SC2169 # ash supports bash-like string replacment
|
||||||
|
bootif_mac="${bootif_mac//-/:}"
|
||||||
for i in /sys/class/net/*/address; do
|
for i in /sys/class/net/*/address; do
|
||||||
read net_mac < ${i}
|
read -r net_mac < "${i}"
|
||||||
if [[ "${bootif_mac}" == "${net_mac}" ]]; then
|
if [ "${bootif_mac}" = "${net_mac}" ]; then
|
||||||
bootif_dev=${i#/sys/class/net/}
|
bootif_dev=${i#/sys/class/net/}
|
||||||
bootif_dev=${bootif_dev%/address}
|
bootif_dev=${bootif_dev%/address}
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
if [[ "${ip}" == "dhcp" ]]; then
|
if [ "${ip}" = "dhcp" ]; then
|
||||||
ip=":::::${bootif_dev}:dhcp"
|
ip=":::::${bootif_dev}:dhcp"
|
||||||
else
|
else
|
||||||
ip="${ip}::${bootif_dev}"
|
ip="${ip}::${bootif_dev}"
|
||||||
@ -37,19 +36,20 @@ run_hook () {
|
|||||||
launch_interactive_shell
|
launch_interactive_shell
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC1090 # ipconfig generates these files
|
||||||
. /tmp/net-*.conf
|
. /tmp/net-*.conf
|
||||||
|
|
||||||
pxeserver=${ROOTSERVER}
|
export pxeserver="${ROOTSERVER}"
|
||||||
|
|
||||||
# setup DNS resolver
|
# setup DNS resolver
|
||||||
if [[ "${IPV4DNS0}" != "0.0.0.0" ]]; then
|
if [ "${IPV4DNS0}" != "0.0.0.0" ]; then
|
||||||
echo "# added by archiso_pxe_common hook" > /etc/resolv.conf
|
echo "# added by archiso_pxe_common hook" > /etc/resolv.conf
|
||||||
echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf
|
echo "nameserver ${IPV4DNS0}" >> /etc/resolv.conf
|
||||||
fi
|
fi
|
||||||
if [[ "${IPV4DNS1}" != "0.0.0.0" ]]; then
|
if [ "${IPV4DNS1}" != "0.0.0.0" ]; then
|
||||||
echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf
|
echo "nameserver ${IPV4DNS1}" >> /etc/resolv.conf
|
||||||
fi
|
fi
|
||||||
if [[ -n "${DNSDOMAIN}" ]]; then
|
if [ -n "${DNSDOMAIN}" ]; then
|
||||||
echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
|
echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
|
||||||
echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf
|
echo "domain ${DNSDOMAIN}" >> /etc/resolv.conf
|
||||||
fi
|
fi
|
||||||
@ -57,16 +57,19 @@ run_hook () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
run_latehook () {
|
run_latehook () {
|
||||||
if [[ -n "${ip}" ]]; then
|
if [ -n "${ip}" ]; then
|
||||||
[[ -z "${copy_resolvconf}" ]] && copy_resolvconf="y"
|
[ -z "${copy_resolvconf}" ] && copy_resolvconf="y"
|
||||||
|
|
||||||
if [[ "${copytoram}" == "y" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
if [[ -n "${bootif_dev}" ]]; then
|
if [ "${copytoram}" = "y" ]; then
|
||||||
|
if [ -n "${bootif_dev}" ]; then
|
||||||
ip addr flush dev "${bootif_dev}"
|
ip addr flush dev "${bootif_dev}"
|
||||||
ip link set "${bootif_dev}" down
|
ip link set "${bootif_dev}" down
|
||||||
fi
|
fi
|
||||||
elif [[ "${copy_resolvconf}" != "n" && -f /etc/resolv.conf ]]; then
|
elif [ "${copy_resolvconf}" != "n" ] && [ -f /etc/resolv.conf ]; then
|
||||||
cp /etc/resolv.conf /new_root/etc/resolv.conf
|
cp /etc/resolv.conf /new_root/etc/resolv.conf
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh:
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
# vim: set ft=sh:
|
#!/bin/ash
|
||||||
|
|
||||||
run_hook() {
|
run_hook() {
|
||||||
if [[ -n "${ip}" && -n "${archiso_http_srv}" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
|
if [ -n "${ip}" ] && [ -n "${archiso_http_srv}" ]; then
|
||||||
|
|
||||||
# booting with http is always copy-to-ram, so set here to make sure
|
# booting with http is always copy-to-ram, so set here to make sure
|
||||||
# addresses are flushed and interface is set down
|
# addresses are flushed and interface is set down
|
||||||
copytoram="y"
|
export copytoram="y"
|
||||||
|
|
||||||
archiso_http_srv=$(eval echo ${archiso_http_srv})
|
archiso_http_srv=$(eval echo "${archiso_http_srv}")
|
||||||
[[ -z "${archiso_http_spc}" ]] && archiso_http_spc="75%"
|
[ -z "${archiso_http_spc}" ] && archiso_http_spc="75%"
|
||||||
|
|
||||||
mount_handler="archiso_pxe_http_mount_handler"
|
export mount_handler="archiso_pxe_http_mount_handler"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,6 +24,7 @@ _curl_get() {
|
|||||||
local _dst="${2}"
|
local _dst="${2}"
|
||||||
|
|
||||||
msg ":: Downloading '${_url}'"
|
msg ":: Downloading '${_url}'"
|
||||||
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
if ! curl -L -f -o "/run/archiso/httpspace/${archisobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then
|
if ! curl -L -f -o "/run/archiso/httpspace/${archisobasedir}${_dst}/${_url##*/}" --create-dirs "${_url}"; then
|
||||||
echo "ERROR: Downloading '${_url}'"
|
echo "ERROR: Downloading '${_url}'"
|
||||||
echo " Falling back to interactive prompt"
|
echo " Falling back to interactive prompt"
|
||||||
@ -38,17 +40,22 @@ archiso_pxe_http_mount_handler () {
|
|||||||
mkdir -p "/run/archiso/httpspace"
|
mkdir -p "/run/archiso/httpspace"
|
||||||
mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace"
|
mount -t tmpfs -o size="${archiso_http_spc}",mode=0755 httpspace "/run/archiso/httpspace"
|
||||||
|
|
||||||
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs" "/${arch}"
|
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs" "/${arch}"
|
||||||
|
|
||||||
if [[ "${checksum}" == "y" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
|
if [ "${checksum}" = "y" ]; then
|
||||||
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sha512" "/${arch}"
|
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sha512" "/${arch}"
|
||||||
fi
|
fi
|
||||||
if [[ "${verify}" == "y" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
|
if [ "${verify}" = "y" ]; then
|
||||||
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs.sig" "/${arch}"
|
_curl_get "${archiso_http_srv}${archisobasedir}/${arch}/airootfs.sfs.sig" "/${arch}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mkdir -p "/run/archiso/bootmnt"
|
mkdir -p "/run/archiso/bootmnt"
|
||||||
mount -o bind /run/archiso/httpspace /run/archiso/bootmnt
|
mount -o bind /run/archiso/httpspace /run/archiso/bootmnt
|
||||||
|
|
||||||
archiso_mount_handler ${newroot}
|
archiso_mount_handler "${newroot}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh:
|
||||||
|
@ -1,19 +1,20 @@
|
|||||||
# vim: set ft=sh:
|
#!/bin/ash
|
||||||
|
|
||||||
run_earlyhook() {
|
run_earlyhook() {
|
||||||
if [[ -n "${ip}" && -n "${archiso_nbd_srv}" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
|
if [ -n "${ip}" ] && [ -n "${archiso_nbd_srv}" ]; then
|
||||||
# Module autoloading like with loop devices does not work, doing manually...
|
# Module autoloading like with loop devices does not work, doing manually...
|
||||||
modprobe nbd 2> /dev/null
|
modprobe nbd 2> /dev/null
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
run_hook() {
|
run_hook() {
|
||||||
if [[ -n "${ip}" && -n "${archiso_nbd_srv}" ]]; then
|
if [ -n "${ip}" ] && [ -n "${archiso_nbd_srv}" ]; then
|
||||||
|
|
||||||
archiso_nbd_srv=$(eval echo ${archiso_nbd_srv})
|
archiso_nbd_srv=$(eval echo "${archiso_nbd_srv}")
|
||||||
[[ -z "${archiso_nbd_name}" ]] && archiso_nbd_name="archiso"
|
[ -z "${archiso_nbd_name}" ] && archiso_nbd_name="archiso"
|
||||||
|
|
||||||
mount_handler="archiso_pxe_nbd_mount_handler"
|
export mount_handler="archiso_pxe_nbd_mount_handler"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -29,19 +30,21 @@ archiso_pxe_nbd_mount_handler () {
|
|||||||
done
|
done
|
||||||
|
|
||||||
msg ":: Setup NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
msg ":: Setup NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
||||||
if [[ "${copytoram}" != "n" ]]; then
|
if [ "${copytoram}" != "n" ]; then
|
||||||
nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} /dev/nbd0
|
nbd-client "${archiso_nbd_srv}" -N "${archiso_nbd_name}" /dev/nbd0
|
||||||
copytoram="y"
|
copytoram="y"
|
||||||
else
|
else
|
||||||
nbd-client ${archiso_nbd_srv} -N ${archiso_nbd_name} -systemd-mark -persist /dev/nbd0
|
nbd-client "${archiso_nbd_srv}" -N "${archiso_nbd_name}" -systemd-mark -persist /dev/nbd0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
archisodevice=/dev/nbd0
|
export archisodevice=/dev/nbd0
|
||||||
|
|
||||||
archiso_mount_handler ${newroot}
|
archiso_mount_handler "${newroot}"
|
||||||
|
|
||||||
if [[ "${copytoram}" == "y" ]]; then
|
if [ "${copytoram}" = "y" ]; then
|
||||||
msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
msg ":: Disconnect NBD from ${archiso_nbd_srv} at /dev/nbd0"
|
||||||
nbd-client -d /dev/nbd0
|
nbd-client -d /dev/nbd0
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh:
|
||||||
|
@ -1,30 +1,40 @@
|
|||||||
# vim: set ft=sh:
|
#!/bin/ash
|
||||||
|
|
||||||
run_hook() {
|
run_hook() {
|
||||||
if [[ -n "${ip}" && -n "${archiso_nfs_srv}" ]]; then
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
|
if [ -n "${ip}" ] && [ -n "${archiso_nfs_srv}" ]; then
|
||||||
|
|
||||||
archiso_nfs_srv=$(eval echo ${archiso_nfs_srv})
|
archiso_nfs_srv=$(eval echo "${archiso_nfs_srv}")
|
||||||
[[ -n "${archiso_nfs_opt}" ]] && archiso_nfs_opt="-o ${archiso_nfs_opt}"
|
|
||||||
|
|
||||||
mount_handler="archiso_nfs_mount_handler"
|
export mount_handler="archiso_nfs_mount_handler"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
archiso_nfs_mount_handler() {
|
archiso_nfs_mount_handler() {
|
||||||
|
local mount_status
|
||||||
newroot="${1}"
|
newroot="${1}"
|
||||||
mkdir -p "/run/archiso/bootmnt"
|
mkdir -p "/run/archiso/bootmnt"
|
||||||
msg ":: Mounting '${archiso_nfs_srv}'"
|
msg ":: Mounting '${archiso_nfs_srv}'"
|
||||||
# Do not put "${archiso_nfs_opt}" nfsmount fails!
|
# shellcheck disable=SC2154 # defined via initcpio's parse_cmdline()
|
||||||
if ! nfsmount ${archiso_nfs_opt} "${archiso_nfs_srv}" "/run/archiso/bootmnt"; then
|
if [ -n "${archiso_nfs_opt}" ]; then
|
||||||
|
nfsmount -o "${archiso_nfs_opt}" "${archiso_nfs_srv}" "/run/archiso/bootmnt"
|
||||||
|
mount_status=$?
|
||||||
|
else
|
||||||
|
nfsmount "${archiso_nfs_srv}" "/run/archiso/bootmnt"
|
||||||
|
mount_status=$?
|
||||||
|
fi
|
||||||
|
if [ $mount_status -gt 0 ]; then
|
||||||
echo "ERROR: Mounting '${archiso_nfs_srv}'"
|
echo "ERROR: Mounting '${archiso_nfs_srv}'"
|
||||||
echo " Falling back to interactive prompt"
|
echo " Falling back to interactive prompt"
|
||||||
echo " You can try to fix the problem manually, log out when you are finished"
|
echo " You can try to fix the problem manually, log out when you are finished"
|
||||||
launch_interactive_shell
|
launch_interactive_shell
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${copytoram}" != "n" ]]; then
|
if [ "${copytoram}" != "n" ]; then
|
||||||
copytoram="y"
|
copytoram="y"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
archiso_mount_handler ${newroot}
|
archiso_mount_handler "${newroot}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# vim: set ft=sh:
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
|
#!/bin/ash
|
||||||
|
|
||||||
run_cleanuphook() {
|
run_cleanuphook() {
|
||||||
rm -rf /usr/lib/modules
|
rm -rf /usr/lib/modules
|
||||||
cp -ax / /run/initramfs
|
cp -ax / /run/initramfs
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
# vim: set ft=sh:
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_module "cdrom"
|
add_module "cdrom"
|
||||||
@ -22,9 +22,7 @@ build() {
|
|||||||
add_file /usr/lib/udev/rules.d/95-dm-notify.rules
|
add_file /usr/lib/udev/rules.d/95-dm-notify.rules
|
||||||
add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules
|
add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules
|
||||||
if [[ $ARCHISO_GNUPG_FD ]]; then
|
if [[ $ARCHISO_GNUPG_FD ]]; then
|
||||||
mkdir -p "$BUILDROOT$dest"/gpg
|
mkdir -p "$BUILDROOT/gpg"
|
||||||
gpg --homedir "$BUILDROOT$dest"/gpg --import <&$ARCHISO_GNUPG_FD
|
gpg --homedir "$BUILDROOT/gpg" --import <& "$ARCHISO_GNUPG_FD"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_module "amdgpu"
|
add_module "amdgpu"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_runscript
|
add_runscript
|
||||||
@ -9,5 +9,3 @@ cat<<HELPEOF
|
|||||||
This hook loads the necessary modules for boot via loop device.
|
This hook loads the necessary modules for boot via loop device.
|
||||||
HELPEOF
|
HELPEOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_checked_modules -f "(irda|phy|wimax|wireless|ppp_|plip|pppoe)" "/drivers/net/"
|
add_checked_modules -f "(irda|phy|wimax|wireless|ppp_|plip|pppoe)" "/drivers/net/"
|
||||||
@ -8,13 +8,13 @@ build() {
|
|||||||
add_binary /usr/lib/initcpio/ipconfig /bin/ipconfig
|
add_binary /usr/lib/initcpio/ipconfig /bin/ipconfig
|
||||||
|
|
||||||
# Add hosts support files+dns
|
# Add hosts support files+dns
|
||||||
add_symlink /usr/lib/libnss_files.so.2 $(readlink /usr/lib/libnss_files.so.2)
|
add_symlink /usr/lib/libnss_files.so.2 "$(readlink /usr/lib/libnss_files.so.2)"
|
||||||
add_binary $(readlink -f /usr/lib/libnss_files.so.2)
|
add_binary "$(readlink -f /usr/lib/libnss_files.so.2)"
|
||||||
add_symlink /usr/lib/libnss_dns.so.2 $(readlink /usr/lib/libnss_dns.so.2)
|
add_symlink /usr/lib/libnss_dns.so.2 "$(readlink /usr/lib/libnss_dns.so.2)"
|
||||||
add_binary $(readlink -f /usr/lib/libnss_dns.so.2)
|
add_binary "$(readlink -f /usr/lib/libnss_dns.so.2)"
|
||||||
|
|
||||||
add_dir /etc
|
add_dir /etc
|
||||||
echo "hosts: files dns" > $BUILDROOT/etc/nsswitch.conf
|
echo "hosts: files dns" > "$BUILDROOT/etc/nsswitch.conf"
|
||||||
}
|
}
|
||||||
|
|
||||||
help() {
|
help() {
|
||||||
@ -22,5 +22,3 @@ cat<<HELPEOF
|
|||||||
This hook loads the necessary modules for boot via PXE.
|
This hook loads the necessary modules for boot via PXE.
|
||||||
HELPEOF
|
HELPEOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_runscript
|
add_runscript
|
||||||
|
|
||||||
add_binary curl
|
add_binary curl
|
||||||
|
|
||||||
add_file $(readlink -f /etc/ssl/certs/ca-certificates.crt) /etc/ssl/certs/ca-certificates.crt
|
add_file "$(readlink -f /etc/ssl/certs/ca-certificates.crt)" /etc/ssl/certs/ca-certificates.crt
|
||||||
}
|
}
|
||||||
|
|
||||||
help() {
|
help() {
|
||||||
@ -13,5 +13,3 @@ cat<<HELPEOF
|
|||||||
This hook loads the necessary modules for boot via PXE and HTTP.
|
This hook loads the necessary modules for boot via PXE and HTTP.
|
||||||
HELPEOF
|
HELPEOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_module "nbd"
|
add_module "nbd"
|
||||||
@ -13,5 +13,3 @@ cat<<HELPEOF
|
|||||||
This hook loads the necessary modules for boot via PXE and NBD.
|
This hook loads the necessary modules for boot via PXE and NBD.
|
||||||
HELPEOF
|
HELPEOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_module "nfs"
|
add_module "nfs"
|
||||||
@ -13,5 +13,3 @@ help() {
|
|||||||
This hook loads the necessary modules for boot via PXE and NFS.
|
This hook loads the necessary modules for boot via PXE and NFS.
|
||||||
HELPEOF
|
HELPEOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
add_binary cp
|
add_binary cp
|
||||||
@ -12,9 +12,7 @@ help() {
|
|||||||
cat <<HELPEOF
|
cat <<HELPEOF
|
||||||
This hook will create a shutdown initramfs in /run/initramfs
|
This hook will create a shutdown initramfs in /run/initramfs
|
||||||
that we can pivot to on shutdown in order to unmount / and
|
that we can pivot to on shutdown in order to unmount / and
|
||||||
and others mount points, dm-snapshot devices and loopback devices.
|
and other mount points, dm-snapshot and loopback devices.
|
||||||
Mostly usefull for dm-snapshot persistent.
|
Mostly useful for persistent dm-snapshot.
|
||||||
HELPEOF
|
HELPEOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: set ft=sh ts=4 sw=4 et:
|
|
||||||
|
@ -5,15 +5,15 @@ mkdir /oldrun
|
|||||||
mount -n --move /oldroot/run /oldrun
|
mount -n --move /oldroot/run /oldrun
|
||||||
|
|
||||||
# Unmount all mounts now.
|
# Unmount all mounts now.
|
||||||
umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)
|
umount "$(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)"
|
||||||
|
|
||||||
# Remove all dm-snapshot devices.
|
# Remove all dm-snapshot devices.
|
||||||
dmsetup remove_all
|
dmsetup remove_all
|
||||||
|
|
||||||
# Remove all loopback devices.
|
# Remove all loopback devices.
|
||||||
for _lup in $(grep ^/dev/loop /oldrun/archiso/used_block_devices | tac); do
|
for _lup in $(grep ^/dev/loop /oldrun/archiso/used_block_devices | tac); do
|
||||||
if ! losetup -d ${_lup} 2> /dev/null; then
|
if ! losetup -d -- "${_lup}" 2> /dev/null; then
|
||||||
umount -d ${_lup}
|
umount -d -- "${_lup}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@ -21,8 +21,8 @@ done
|
|||||||
umount /oldrun/archiso/cowspace
|
umount /oldrun/archiso/cowspace
|
||||||
|
|
||||||
# Unmount boot device if needed (no copytoram=y used)
|
# Unmount boot device if needed (no copytoram=y used)
|
||||||
if [[ ! -d /oldrun/archiso/copytoram ]]; then
|
if [ ! -d /oldrun/archiso/copytoram ]; then
|
||||||
if [[ -d /oldrun/archiso/img_dev ]]; then
|
if [ -d /oldrun/archiso/img_dev ]; then
|
||||||
umount /oldrun/archiso/img_dev
|
umount /oldrun/archiso/img_dev
|
||||||
else
|
else
|
||||||
umount /oldrun/archiso/bootmnt
|
umount /oldrun/archiso/bootmnt
|
||||||
@ -35,3 +35,5 @@ case "$1" in
|
|||||||
reboot|poweroff|halt) "$1" -f ;;
|
reboot|poweroff|halt) "$1" -f ;;
|
||||||
*) halt -f;;
|
*) halt -f;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# vim: set ft=sh:
|
||||||
|
Loading…
Reference in New Issue
Block a user