saving uncommitted changes in /etc prior to emerge run
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#!/sbin/runscript
|
||||
#!/sbin/openrc-run
|
||||
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
|
||||
# Released under the 2-clause BSD license.
|
||||
|
||||
@@ -6,7 +6,7 @@ depend()
|
||||
{
|
||||
need localmount
|
||||
before logger
|
||||
after clock sysctl
|
||||
after clock root sysctl
|
||||
keyword -prefix -timeout
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ cleanup_var_run_dir()
|
||||
do
|
||||
# Clean stale sockets
|
||||
if [ -S "$x" ]; then
|
||||
if type fuser >/dev/null 2>&1; then
|
||||
if command -v fuser >/dev/null 2>&1; then
|
||||
fuser "$x" >/dev/null 2>&1 || rm -- "$x"
|
||||
else
|
||||
rm -- "$x"
|
||||
@@ -117,19 +117,42 @@ migrate_to_run()
|
||||
|
||||
clean_run()
|
||||
{
|
||||
[ "$RC_SYS" = VSERVER ] && return 0
|
||||
[ "$RC_SYS" = VSERVER -o "$RC_SYS" = LXC ] && return 0
|
||||
local dir
|
||||
# If / is still read-only due to a problem, this will fail!
|
||||
if ! checkpath -W /; then
|
||||
eerror "/ is not writable; unable to clean up underlying /run"
|
||||
return 1
|
||||
fi
|
||||
if ! checkpath -W /tmp; then
|
||||
eerror "/tmp is not writable; unable to clean up underlying /run"
|
||||
return 1
|
||||
fi
|
||||
# Now we know that we can modify /tmp and /
|
||||
# if mktemp -d fails, it returns an EMPTY string
|
||||
# STDERR: mktemp: failed to create directory via template ‘/tmp/tmp.XXXXXXXXXX’: Read-only file system
|
||||
# STDOUT: ''
|
||||
rc=0
|
||||
dir=$(mktemp -d)
|
||||
mount --bind / $dir
|
||||
rm -rf $dir/run/*
|
||||
umount $dir
|
||||
rm -rf $dir
|
||||
if [ -n "$dir" -a -d $dir -a -w $dir ]; then
|
||||
mount --bind / $dir && rm -rf $dir/run/* || rc=1
|
||||
umount $dir
|
||||
rm -rf $dir
|
||||
else
|
||||
rc=1
|
||||
fi
|
||||
if [ $rc -ne 0 ]; then
|
||||
eerror "Could not clean up underlying /run on /"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
start()
|
||||
{
|
||||
# Remove any added console dirs
|
||||
rm -rf "$RC_LIBEXECDIR"/console/*
|
||||
if checkpath -W "$RC_LIBEXECDIR"; then
|
||||
rm -rf "$RC_LIBEXECDIR"/console/*
|
||||
fi
|
||||
|
||||
local logw=false runw=false extra=
|
||||
# Ensure that our basic dirs exist
|
||||
@@ -191,10 +214,13 @@ start()
|
||||
if yesno $log_dmesg; then
|
||||
if $logw || checkpath -W /var/log; then
|
||||
# Create an 'after-boot' dmesg log
|
||||
if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ -a "$RC_SYS" != LXC ]; then
|
||||
dmesg > /var/log/dmesg
|
||||
chmod 640 /var/log/dmesg
|
||||
fi
|
||||
case "$RC_SYS" in
|
||||
VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;;
|
||||
*)
|
||||
dmesg > /var/log/dmesg
|
||||
chmod 640 /var/log/dmesg
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user