Make update-initrd(8) invoke its sysmerge replacement if any.

This commit is contained in:
Jonas 'Sortie' Termansen 2016-10-09 21:47:05 +02:00
parent 0bb608b09e
commit 2a143e6875
2 changed files with 26 additions and 27 deletions

View File

@ -1,5 +1,5 @@
#!/bin/sh -e #!/bin/sh
# Copyright (c) 2015 Jonas 'Sortie' Termansen. # Copyright (c) 2015, 2016 Jonas 'Sortie' Termansen.
# #
# Permission to use, copy, modify, and distribute this software for any # Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above # purpose with or without fee is hereby granted, provided that the above
@ -16,27 +16,7 @@
# update-initrd # update-initrd
# Generate a mkinitrd that locates and chain boots the real root filesystem. # Generate a mkinitrd that locates and chain boots the real root filesystem.
show_version() { set -e
cat << EOF
$0 (Sortix)
EOF
exit 0
}
show_help() {
cat << EOF
Usage: $0 [OPTION]...
Generate a mkinitrd that locates and chain boots the real root filesystem.
Configuration:
--help display this help and exit
--version display version information and exit
--sysroot=DIR operate on this root filesystem [/]
EOF
exit 0
}
sysroot= sysroot=
@ -66,16 +46,22 @@ for argument do
esac esac
done done
if [ ! -e "$sysroot/etc/fstab" ]; then
echo "$0: $sysroot/etc/fstab: Need a filesystem table to make an initrd" >&2
exit 1
fi
sysmerge=false sysmerge=false
exec_prefix="$sysroot" exec_prefix="$sysroot"
if [ -d "$sysroot/sysmerge" ]; then if [ -d "$sysroot/sysmerge" ]; then
# If an upgrade is pending, invoke the update-initrd of the new system, if
# we're not already it.
if [ "$(realpath -- "$(which -- "$0")")" != \
"$(realpath -- "$sysroot/sysmerge/sbin/update-initrd")" ]; then
exec "$sysroot/sysmerge/sbin/update-initrd" "$@"
fi
sysmerge=true sysmerge=true
exec_prefix="$sysroot/sysmerge" exec_prefix="$sysroot/sysmerge"
fi fi
if [ ! -e "$sysroot/etc/fstab" ]; then
echo "$0: $sysroot/etc/fstab: Need a filesystem table to make an initrd" >&2
exit 1
fi
tmp=$(mktemp -d) tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' EXIT HUP INT QUIT TERM trap 'rm -rf "$tmp"' EXIT HUP INT QUIT TERM
mkdir "$tmp/bin" mkdir "$tmp/bin"

View File

@ -30,6 +30,18 @@ If any of those files are updated then the
should be regenerated by invoking should be regenerated by invoking
.Nm . .Nm .
.Pp .Pp
.Nm
is aware of
.Xr sysmerge 8
pending upgrades and will instead invoke the new
.Nm
in
.Pa /sysmerge
if an upgrade is pending.
.Nm
is written as a script so the initrd of the new system can produced even
across incompatible ABI changes.
.Pp
The options are as follows: The options are as follows:
.Bl -tag -width "12345678" .Bl -tag -width "12345678"
.It Fl \-sysroot Ns "=" Ns Ar sysroot .It Fl \-sysroot Ns "=" Ns Ar sysroot
@ -58,4 +70,5 @@ will exit 0 on success and non-zero otherwise.
.Xr init 8 , .Xr init 8 ,
.Xr initrdfs 8 , .Xr initrdfs 8 ,
.Xr mkinitrd 8 , .Xr mkinitrd 8 ,
.Xr sysmerge 8 ,
.Xr update-grub 8 .Xr update-grub 8