| #!/bin/sh |
| |
| PATH=/sbin:/bin:/usr/sbin:/usr/bin |
| RDEV="" |
| ROOT_DIR="/new_root" |
| |
| mkdir -p /proc |
| mkdir -p /sys |
| mkdir -p /run |
| mkdir -p /tmp |
| mount -t proc proc /proc |
| mount -t sysfs sysfs /sys |
| mount -t devtmpfs none /dev |
| |
| udevd --daemon |
| udevadm trigger --type=subsystems --action=add |
| udevadm trigger --type=devices --action=add |
| udevadm settle --timeout=10 |
| |
| for PARAM in $(cat /proc/cmdline); do |
| case $PARAM in |
| root=*) |
| RDEV=${PARAM#root=} |
| ;; |
| esac |
| done |
| |
| if ! [ -b $RDEV ]; then |
| echo "Missing root command line argument!" |
| exit 1 |
| fi |
| |
| case $RDEV in |
| UUID=*) |
| RDEV=$(realpath /dev/disk/by-uuid/${RDEV#UUID=}) |
| ;; |
| esac |
| |
| . /usr/share/dm-verity.env |
| |
| echo "Mounting $RDEV over dm-verity as the root filesystem" |
| |
| veritysetup --data-block-size=1024 --hash-offset=$DATA_SIZE create rootfs $RDEV $RDEV $ROOT_HASH |
| mkdir -p $ROOT_DIR |
| mount -o ro /dev/mapper/rootfs $ROOT_DIR |
| exec switch_root $ROOT_DIR /sbin/init |