Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | # Copyright (C) 2011 O.S. Systems Software LTDA. |
| 3 | # Licensed on MIT |
| 4 | |
| 5 | finish_enabled() { |
| 6 | return 0 |
| 7 | } |
| 8 | |
| 9 | finish_run() { |
| 10 | if [ -n "$ROOTFS_DIR" ]; then |
Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 11 | if [ ! -d $ROOTFS_DIR/dev ]; then |
| 12 | fatal "ERROR: There's no '/dev' on rootfs." |
| 13 | fi |
| 14 | |
Andrew Geissler | 7e0e3c0 | 2022-02-25 20:34:39 +0000 | [diff] [blame^] | 15 | # Unmount anything that was automounted by busybox via mdev-mount.sh. |
| 16 | # We're about to switch_root, and leaving anything mounted will prevent |
| 17 | # the next rootfs from modifying the block device. Ignore ROOT_DISK, |
| 18 | # if it was set by setup-live, because it'll be mounted over loopback |
| 19 | # to ROOTFS_DIR. |
| 20 | local dev |
| 21 | for dev in /run/media/*; do |
| 22 | if mountpoint -q "${dev}" && [ "${dev##*/}" != "${ROOT_DISK}" ]; then |
| 23 | umount -f "${dev}" || debug "Failed to unmount ${dev}" |
| 24 | fi |
| 25 | done |
| 26 | |
Patrick Williams | c124f4f | 2015-09-15 14:41:29 -0500 | [diff] [blame] | 27 | info "Switching root to '$ROOTFS_DIR'..." |
| 28 | |
| 29 | debug "Moving /dev, /proc and /sys onto rootfs..." |
| 30 | mount --move /dev $ROOTFS_DIR/dev |
| 31 | mount --move /proc $ROOTFS_DIR/proc |
| 32 | mount --move /sys $ROOTFS_DIR/sys |
| 33 | |
| 34 | cd $ROOTFS_DIR |
| 35 | exec switch_root -c /dev/console $ROOTFS_DIR ${bootparam_init:-/sbin/init} |
| 36 | else |
| 37 | debug "No rootfs has been set" |
| 38 | fi |
| 39 | } |