1#/bin/sh 2 3# 4# Copyright (c) 2025 Peter Holm <pho@FreeBSD.org> 5# 6# SPDX-License-Identifier: BSD-2-Clause 7# 8 9[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1 10 11. ../default.cfg 12 13[ -f "`which rsync`" ] || exit 0 14[ -d /usr/src/sys ] || exit 0 15 16set -eu 17prog=$(basename "$0" .sh) 18log=/tmp/$prog.log 19mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint 20[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart 21mdconfig -a -t swap -s 15g -u $mdstart 22newfs $newfs_flags md$mdstart > /dev/null 23mount /dev/md$mdstart $mntpoint 24set +e 25 26mkdir -p $mntpoint/usr/src 27rsync -avrq /usr/src/sys $mntpoint/usr/src; s=$? 28if [ $s -eq 0 ]; then 29 (cd $mntpoint; umount $mntpoint > /dev/null 2>&1) # sync 30 rsync -avrq /usr/src/sys $mntpoint/usr/src; s=$? 31fi 32 33if [ $s -eq 0 ]; then 34 diff -rq /usr/src/sys $mntpoint/usr/src/sys > $log; s=$? 35 [ $s -ne 0 ] && 36 { echo "/usr/src $mntpoint/usr/src differ!"; head -10 $log; } 37fi 38 39while mount | grep -q "on $mntpoint "; do 40 umount $mntpoint || break 41 sleep 1 42done 43if [ $s -eq 0 ]; then 44 fsck_ffs -fy /dev/md$mdstart > $log 2>&1; s=$? 45 grep -Eq "WAS MODIFIED" $log && { cat $log; s=1; } 46fi 47mdconfig -d -u $mdstart 48rm -f $log 49exit $s 50