From cfd5bf337ced3058012051fc00e808a41221f5ae Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Tue, 25 Apr 2017 20:01:31 +0200 Subject: [PATCH 151/325] release/rc.local: Add /tmp/savecore-and-go-to-jail script Obtained from: ElectroBSD --- release/rc.local | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/release/rc.local b/release/rc.local index 776ab73e9719..a5977c3a8f84 100755 --- a/release/rc.local +++ b/release/rc.local @@ -39,6 +39,33 @@ tar xf /usr/electrobsd-dist/src.txz -C "${JAILROOT}" time jail -c path="${JAILROOT}" mount.devfs host.hostname=ElectroBSD command=sh /usr/src/reproduce.sh EOF +# create a script to recover a core dump and go to the jail to analyze it +cat << 'EOF' > /tmp/savecore-and-go-to-jail +set -x -e +# Fingers crossed that the first disk is the boot disk ... +DISK=$(geom disk status -s | head -n 1 | cut -f 1 -w) +JAILROOT="$(mktemp -d /tmp/ElectroBSD-jail-XXXXXX)" +SWAP_PARTITION_INDEX=3 +BUILD_PARTITION_INDEX=4 + +gpart recover "${DISK}" +gpart add -t freebsd-swap -s 1500M "${DISK}" +swapon "/dev/${DISK}p${SWAP_PARTITION_INDEX}" +dumpon "/dev/${DISK}p${SWAP_PARTITION_INDEX}" +gpart add -t freebsd-ufs "${DISK}" +# gpart partition changes made in bhyve are currently +# lost. The cause hasn't been diagnosed yet. +# Explicitly include the partition layout in the +# presumably logged output so it can be restored +# afterwards. +gpart show "${DISK}" # More convenient format for humans +gpart backup "${DISK}" # Same data in format understood by "gpart restore" +fsck -C -y "/dev/${DISK}p${BUILD_PARTITION_INDEX}" +mount -o async,noatime "/dev/${DISK}p${BUILD_PARTITION_INDEX}" "${JAILROOT}" +savecore -v "${JAILROOT}/var/crash" "/dev/${DISK}p${SWAP_PARTITION_INDEX}" +time jail -c path="${JAILROOT}" mount.devfs host.hostname=ElectroBSD command=sh +EOF + # resolv.conf from DHCP ends up in here, so make sure the directory exists mkdir /tmp/bsdinstall_etc -- 2.32.0