Verified Commit 10fd8787 authored by nl6720's avatar nl6720
Browse files

Merge branch 'rm-archiso_shutdown'

* rm-archiso_shutdown:
  hooks/archiso{,_loop_mnt}: remove /run/archiso/used_block_devices
  Remove obsolete archiso_shutdown hook
parents 5dfbb532 d0d7eb25
......@@ -4,12 +4,10 @@
PREFIX ?= /usr/local
INSTALL_DIR=$(DESTDIR)$(PREFIX)/lib/initcpio/install
HOOKS_DIR=$(DESTDIR)$(PREFIX)/lib/initcpio/hooks
SCRIPT_DIR=$(DESTDIR)$(PREFIX)/lib/initcpio
DOC_DIR=$(DESTDIR)$(PREFIX)/share/doc/mkinitcpio-archiso
INSTALL_FILES=$(wildcard install/*)
HOOKS_FILES=$(wildcard hooks/*)
SCRIPT_FILES=$(wildcard script/*)
DOC_FILES=$(wildcard docs/*) $(wildcard *.rst)
all:
......@@ -18,15 +16,14 @@ check: shellcheck shfmt
shellcheck:
shellcheck -s bash $(INSTALL_FILES)
shellcheck -s dash $(HOOKS_FILES) $(SCRIPT_FILES)
shellcheck -s dash $(HOOKS_FILES)
shfmt:
shfmt -i 4 -d $(HOOKS_FILES) $(INSTALL_FILES) $(SCRIPT_FILES)
shfmt -i 4 -d $(HOOKS_FILES) $(INSTALL_FILES)
install: install-initcpio install-doc
install-initcpio:
install -vDm 755 $(SCRIPT_FILES) -t $(SCRIPT_DIR)
install -vDm 644 $(HOOKS_FILES) -t $(HOOKS_DIR)
install -vDm 644 $(INSTALL_FILES) -t $(INSTALL_DIR)
......
......@@ -13,7 +13,6 @@ _mnt_dmsnapshot() {
local ro_dev ro_dev_size rw_dev
ro_dev="$(losetup --find --show --read-only -- "${img}")"
printf '%s\n' "${ro_dev}" >>/run/archiso/used_block_devices
ro_dev_size="$(blockdev --getsz "${ro_dev}")"
if [ "${cow_persistent}" = "P" ]; then
......@@ -33,7 +32,6 @@ _mnt_dmsnapshot() {
fi
rw_dev="$(losetup --find --show "/run/archiso/cowspace/${cow_directory}/${img_name}.cow")"
printf '%s\n' "${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}"
......@@ -43,7 +41,6 @@ _mnt_dmsnapshot() {
fi
_mnt_dev "/dev/mapper/${dm_snap_name}" "${newroot}${mnt}" "-w" "defaults"
readlink -f "/dev/mapper/${dm_snap_name}" >>/run/archiso/used_block_devices
}
# args: source, newroot, mountpoint
......@@ -89,7 +86,6 @@ _mnt_sfs() {
msg "done."
fi
sfs_dev="$(losetup --find --show --read-only -- "${img}")"
echo "${sfs_dev}" >>/run/archiso/used_block_devices
_mnt_dev "${sfs_dev}" "${mnt}" "-r" "defaults"
}
......@@ -112,7 +108,6 @@ _mnt_erofs() {
msg "done."
fi
erofs_dev="$(losetup --find --show --read-only -- "${img}")"
echo "${erofs_dev}" >>/run/archiso/used_block_devices
_mnt_dev "${erofs_dev}" "${mnt}" "-r" "defaults"
}
......@@ -200,9 +195,6 @@ archiso_mount_handler() {
if ! mountpoint -q "/run/archiso/bootmnt"; then
_mnt_dev "${archisodevice}" "/run/archiso/bootmnt" "-r" "defaults"
if [ "${copytoram}" != "y" ]; then
readlink -f "${archisodevice}" >>/run/archiso/used_block_devices
fi
fi
# shellcheck disable=SC2154
......@@ -252,9 +244,7 @@ archiso_mount_handler() {
fi
if [ -n "${cow_device}" ]; then
_mnt_dev "${cow_device}" "/run/archiso/cowspace" "-r" "${cow_flags}"
readlink -f "${cow_device}" >>/run/archiso/used_block_devices
mount -o remount,rw "/run/archiso/cowspace"
_mnt_dev "${cow_device}" "/run/archiso/cowspace" "-w" "${cow_flags}"
else
msg ":: Mounting /run/archiso/cowspace (tmpfs) filesystem, size=${cow_spacesize}..."
mkdir -p /run/archiso/cowspace
......
......@@ -21,11 +21,6 @@ archiso_loop_mount_handler() {
msg ":: Setup a loop device from ${img_loop} located at device ${img_dev}"
_mnt_dev "${img_dev}" "/run/archiso/img_dev" "-r" "${img_flags}"
# shellcheck disable=SC2154
# defined via initcpio's parse_cmdline()
if [ "${copytoram}" != "y" ]; then
readlink -f "${img_dev}" >>/run/archiso/used_block_devices
fi
if _dev_loop=$(losetup --find --show --read-only "/run/archiso/img_dev/${img_loop}"); then
export archisodevice="${_dev_loop}"
......@@ -36,6 +31,8 @@ archiso_loop_mount_handler() {
archiso_mount_handler "${newroot}"
# shellcheck disable=SC2154
# defined via initcpio's parse_cmdline()
if [ "${copytoram}" = "y" ]; then
losetup -d "${_dev_loop}" 2>/dev/null
umount /run/archiso/img_dev
......
#!/bin/ash
#
# SPDX-License-Identifier: GPL-3.0-or-later
run_cleanuphook() {
rm -rf /usr/lib/modules
cp -ax / /run/initramfs
}
# vim: set ft=sh:
#!/usr/bin/env bash
#
# SPDX-License-Identifier: GPL-3.0-or-later
build() {
add_binary cp
add_runscript
add_file /usr/lib/initcpio/archiso_shutdown /shutdown
}
help() {
cat <<HELPEOF
This hook will create a shutdown initramfs in /run/initramfs
that we can pivot to on shutdown in order to unmount / and
and other mount points, dm-snapshot and loopback devices.
Mostly useful for persistent dm-snapshot.
HELPEOF
}
#!/bin/ash
#
# SPDX-License-Identifier: GPL-3.0-or-later
# /oldroot depends on things inside /oldroot/run/archiso...
mkdir /oldrun
mount -n --move /oldroot/run /oldrun
# Unmount all mounts now.
umount "$(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)"
# Remove all dm-snapshot devices.
dmsetup remove_all
# Remove all loopback devices.
for _lup in $(grep ^/dev/loop /oldrun/archiso/used_block_devices | tac); do
if ! losetup -d -- "${_lup}" 2>/dev/null; then
umount -d -- "${_lup}"
fi
done
# Unmount the space used to store *.cow.
umount /oldrun/archiso/cowspace
# Unmount boot device if needed (no copytoram=y used)
if [ ! -d /oldrun/archiso/copytoram ]; then
if [ -d /oldrun/archiso/img_dev ]; then
umount /oldrun/archiso/img_dev
else
umount /oldrun/archiso/bootmnt
fi
fi
# reboot / poweroff / halt, depending on the argument passed by init
# if something invalid is passed, we halt
case "$1" in
reboot | poweroff | halt) "$1" -f ;;
*) halt -f ;;
esac
# vim: set ft=sh:
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment