blob: f08a9208675307d7ae0ed06aa1c1d9b892d1b5cd [file] [log] [blame]
Patrick Williamsc124f4f2015-09-15 14:41:29 -05001#!/bin/sh
2# Copyright (C) 2011 O.S. Systems Software LTDA.
3# Licensed on MIT
4
5finish_enabled() {
6 return 0
7}
8
9finish_run() {
10 if [ -n "$ROOTFS_DIR" ]; then
Patrick Williamsc124f4f2015-09-15 14:41:29 -050011 if [ ! -d $ROOTFS_DIR/dev ]; then
12 fatal "ERROR: There's no '/dev' on rootfs."
13 fi
14
Andrew Geissler7e0e3c02022-02-25 20:34:39 +000015 # 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 Williamsc124f4f2015-09-15 14:41:29 -050027 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}