diff options
Diffstat (limited to 'recipes-sota/ostree-initrd/files/init.sh')
-rw-r--r-- | recipes-sota/ostree-initrd/files/init.sh | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/recipes-sota/ostree-initrd/files/init.sh b/recipes-sota/ostree-initrd/files/init.sh index 1814ca3..0b0693d 100644 --- a/recipes-sota/ostree-initrd/files/init.sh +++ b/recipes-sota/ostree-initrd/files/init.sh | |||
@@ -1,17 +1,13 @@ | |||
1 | #!/bin/sh | 1 | #!/bin/sh |
2 | 2 | set -eu | |
3 | # global variables | ||
4 | |||
5 | SMACK=n | ||
6 | DEBUG=n | ||
7 | 3 | ||
8 | # ------------------------------------------- | 4 | # ------------------------------------------- |
9 | 5 | ||
10 | log_info() { echo "$0[$$]: $@" >&2; } | 6 | log_info() { echo "$0[$$]: $*" >&2; } |
11 | log_error() { echo "$0[$$]: ERROR $@" >&2; } | 7 | log_error() { echo "$0[$$]: ERROR $*" >&2; } |
12 | 8 | ||
13 | do_mount_fs() { | 9 | do_mount_fs() { |
14 | log_info "mounting FS: $@" | 10 | log_info "mounting FS: $*" |
15 | [[ -e /proc/filesystems ]] && { grep -q "$1" /proc/filesystems || { log_error "Unknown filesystem"; return 1; } } | 11 | [[ -e /proc/filesystems ]] && { grep -q "$1" /proc/filesystems || { log_error "Unknown filesystem"; return 1; } } |
16 | [[ -d "$2" ]] || mkdir -p "$2" | 12 | [[ -d "$2" ]] || mkdir -p "$2" |
17 | [[ -e /proc/mounts ]] && { grep -q -e "^$1 $2 $1" /proc/mounts && { log_info "$2 ($1) already mounted"; return 0; } } | 13 | [[ -e /proc/mounts ]] && { grep -q -e "^$1 $2 $1" /proc/mounts && { log_info "$2 ($1) already mounted"; return 0; } } |
@@ -26,10 +22,10 @@ bail_out() { | |||
26 | } | 22 | } |
27 | 23 | ||
28 | get_ostree_sysroot() { | 24 | get_ostree_sysroot() { |
29 | for opt in `cat /proc/cmdline`; do | 25 | for opt in $(cat /proc/cmdline); do |
30 | arg=`echo $opt | cut -d'=' -f1` | 26 | arg=$(echo "$opt" | cut -d'=' -f1) |
31 | if [ $arg == "ostree_root" ]; then | 27 | if [ "$arg" == "ostree_root" ]; then |
32 | echo $opt | cut -d'=' -f2- | 28 | echo "$opt" | cut -d'=' -f2- |
33 | return | 29 | return |
34 | fi | 30 | fi |
35 | done | 31 | done |
@@ -38,7 +34,7 @@ get_ostree_sysroot() { | |||
38 | 34 | ||
39 | export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/ostree | 35 | export PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/ostree |
40 | 36 | ||
41 | log_info "starting initrd script" | 37 | log_info "Starting OSTree initrd script" |
42 | 38 | ||
43 | do_mount_fs proc /proc | 39 | do_mount_fs proc /proc |
44 | do_mount_fs sysfs /sys | 40 | do_mount_fs sysfs /sys |
@@ -50,8 +46,6 @@ do_mount_fs tmpfs /run | |||
50 | 46 | ||
51 | # check if smack is active (and if so, mount smackfs) | 47 | # check if smack is active (and if so, mount smackfs) |
52 | grep -q smackfs /proc/filesystems && { | 48 | grep -q smackfs /proc/filesystems && { |
53 | SMACK=y | ||
54 | |||
55 | do_mount_fs smackfs /sys/fs/smackfs | 49 | do_mount_fs smackfs /sys/fs/smackfs |
56 | 50 | ||
57 | # adjust current label and network label | 51 | # adjust current label and network label |
@@ -62,14 +56,20 @@ grep -q smackfs /proc/filesystems && { | |||
62 | mkdir -p /sysroot | 56 | mkdir -p /sysroot |
63 | ostree_sysroot=$(get_ostree_sysroot) | 57 | ostree_sysroot=$(get_ostree_sysroot) |
64 | 58 | ||
65 | mount $ostree_sysroot /sysroot || bail_out "Unable to mount $ostree_sysroot as physical sysroot" | 59 | mount "$ostree_sysroot" /sysroot || { |
60 | # The SD card in the R-Car M3 takes a bit of time to come up | ||
61 | # Retry the mount if it fails the first time | ||
62 | log_info "Mounting $ostree_sysroot failed, waiting 5s for the device to be available..." | ||
63 | sleep 5 | ||
64 | mount "$ostree_sysroot" /sysroot || bail_out "Unable to mount $ostree_sysroot as physical sysroot" | ||
65 | } | ||
66 | ostree-prepare-root /sysroot | 66 | ostree-prepare-root /sysroot |
67 | 67 | ||
68 | # move mounted devices to new root | 68 | # move mounted devices to new root |
69 | cd /sysroot | 69 | cd /sysroot |
70 | for x in dev proc; do | 70 | for x in dev proc; do |
71 | log_info "Moving /$x to new rootfs" | 71 | log_info "Moving /$x to new rootfs" |
72 | mount -o move /$x $x | 72 | mount -o move "/$x" "$x" |
73 | done | 73 | done |
74 | 74 | ||
75 | # switch to new rootfs | 75 | # switch to new rootfs |