summaryrefslogtreecommitdiff
path: root/init
blob: e8041ef9ccbaf730821c62864e61935e3b513b67 (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
#!/bin/sh

trap 'kill $dropbear_pid; exec sh' EXIT

case "$PATH" in
    */*) ;;
    *) export PATH="/usr/sbin:/usr/bin:/sbin:/bin" ;;
esac

mount -t proc proc /proc
mount -t devtmpfs devtmpfs /dev
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
mount -t sysfs sysfs /sys

(
ip link set eth0 up
ip addr add 192.168.0.7/24 dev eth0
exec dropbear -F -s -p 2222 -K 30
) &
dropbear_pid=$!

enc_root=$(findfs UUID=26748575-d7a7-418b-8f68-21be7c937500) || exit
cryptsetup open --tries 65535 --allow-discards "$enc_root" root || [ -e /dev/mapper/root ] || exit

kill $dropbear_pid
dropbear_pid=

e2fsck -C 0 -E inode_count_fullmap -p /dev/mapper/root
e2fsck_r=$?
if [ $(( e2fsck_r & 2 )) = 2 ]; then
    reboot -f
fi
case "$e2fsck_r" in
    0|1) ;;
    *) exit
esac

mount -o nodev,commit=30 /dev/mapper/root /mnt || exit
cd /mnt
umount /dev/pts
mount --move /dev dev
mount --move /proc proc
mount --move /sys sys

exec switch_root /mnt /usr/lib/systemd/systemd