blob: 0708028c4d4f5121f1e0f8bbf1b57b80bc79a8a9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#!/bin/ash
# /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
if [[ -f /oldrun/archiso/nbd_client.pid ]]; then
nbd-client -d /dev/nbd0
fi
fi
#JM
#This is where the reboot would go
echo "------------------------"
echo "Checking if CDROM needs to be ejected..."
#bootdev is created in rc.local on startup
bootdev=$( cat /bootdev.txt )
if [ -f /proc/sys/dev/cdrom/info ]
then
cdroms=$( cat /proc/sys/dev/cdrom/info | { while read a b c; do
#echo $a $b $c
if [ "${a}" = "drive" -a "${b}" = "name:" ]; then
echo ${c}
break
fi
done
} )
for d in ${cdroms}
do
if [ "/dev/${d}" = "${bootdev}" ]
then
echo " Boot device is a cdrom, ejecting..."
eject ${bootdev}
break
fi
done
fi
echo "------------------------"
sleep 1
#
# 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
|