From 39d7686e7622b92f0d4dcbc7d13b74bec94184e6 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Thu, 19 Feb 2009 15:39:54 +0000 Subject: [PATCH] Create a bootable NetBSD disk image (still missing init and dynamic loader) --- targets/NetBSD | 52 ++++++++++++++++++++++++++++++++++---------- targets/NetBSD-amd64 | 10 ++++++++- targets/NetBSD-i386 | 20 +---------------- targets/NetBSD-sparc | 24 ++------------------ 4 files changed, 52 insertions(+), 54 deletions(-) diff --git a/targets/NetBSD b/targets/NetBSD index be41c81..e6c4232 100644 --- a/targets/NetBSD +++ b/targets/NetBSD @@ -2,22 +2,50 @@ -[ -z "$KERNEL" ]&& KERNEL="/netbsd" -[ -z "$MKFS" ] && MKFS="newfs -F" -[ -z "$MOUNT" ] && MOUNT="_netbsd_mount" -[ -z "$UMOUNT" ]&& UMOUNT="_netbsd_umount" +[ -z "$FDISK" ] && FDISK="fdisk" +[ -z "$INSTALLBOOT" ] && INSTALLBOOT="installboot" +[ -z "$KERNEL" ] && KERNEL="/netbsd" +[ -z "$MBRLABEL" ] && MBRLABEL="mbrlabel" +[ -z "$MKFS" ] && MKFS="newfs" +[ -z "$MOUNT" ] && MOUNT="mount" +[ -z "$UMOUNT" ] && UMOUNT="umount" +[ -z "$VNCONFIG" ] && VNCONFIG="vnconfig" +[ -z "$VND" ] && VND="vnd0" #functions -_netbsd_mount() +#private +#image_image +_image_image() { - $SUDO vnconfig -c vnd0 "$1" && - $SUDO mount /dev/vnd0a "$2" -} + USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ + IMAGE_FILE Where to write the filesystem image\n\ + IMAGE_KERNEL Path to the kernel\n\ + IMAGE_SIZE Size of the filesystem image in kilobytes\n\ + MKFS Command used to format the filesystem" + #sanity check + check "$USAGE" DD DESTDIR DEVZERO FDISK IMAGE_FILE IMAGE_KERNEL \ + IMAGE_SIZE INSTALLBOOT MBRLABEL MKDIR MKFS MOUNT UMOUNT \ + VNCONFIG VND -_netbsd_umount() -{ - $SUDO umount "$1" && - $SUDO vnconfig -u vnd0 + $MKDIR "$DESTDIR" || exit 2 + $UMOUNT "$DESTDIR" + $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" && + $FDISK -Ffi "$IMAGE_FILE" || exit 2 + SIZE=$((IMAGE_SIZE - 63)) + $FDISK -Ffu0s "169/63/$SIZE" "$IMAGE_FILE" || exit 2 + $FDISK -Ffa0 "$IMAGE_FILE" || exit 2 + $VNCONFIG -c "$VND" "$IMAGE_FILE" || exit 2 + $MBRLABEL -frw "$VND" && + $MKFS "${VND}e" && + $MOUNT "/dev/${VND}e" "$DESTDIR" && + target "install" && + $INSTALL -m 644 "/usr/mdec/boot" "$DESTDIR/boot" && + $INSTALL -m 755 "$IMAGE_KERNEL" "$DESTDIR/netbsd" && + $INSTALLBOOT -m "$MACHINE" "/dev/r${VND}e" /usr/mdec/bootxx_ffsv1 + RET=$? + $UMOUNT "$DESTDIR" + $VNCONFIG -u "$VND" + exit $RET } diff --git a/targets/NetBSD-amd64 b/targets/NetBSD-amd64 index 9536609..707840d 100644 --- a/targets/NetBSD-amd64 +++ b/targets/NetBSD-amd64 @@ -3,4 +3,12 @@ #includes -. "`dirname $0`/Apps/Devel/src/scripts/targets/NetBSD-i386" +. "`dirname $0`/Apps/Devel/src/scripts/targets/NetBSD" + + +#functions +#public +target_image() +{ + _image_image +} diff --git a/targets/NetBSD-i386 b/targets/NetBSD-i386 index 0792c9a..707840d 100644 --- a/targets/NetBSD-i386 +++ b/targets/NetBSD-i386 @@ -10,23 +10,5 @@ #public target_image() { - USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ - IMAGE_FILE Where to write the filesystem image\n\ - IMAGE_KERNEL Path to the kernel\n\ - IMAGE_SIZE Size of the filesystem image in kilobytes\n\ - MKFS Command used to create the filesystem" - - #sanity check - check "$USAGE" DD DESTDIR DEVZERO IMAGE_FILE IMAGE_KERNEL IMAGE_SIZE \ - MKDIR MKFS MOUNT UMOUNT - - $MKDIR "$DESTDIR" || exit 2 - $UMOUNT "$DESTDIR" - $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" && - $MKFS "$IMAGE_FILE" || exit 2 - $MOUNT "$IMAGE_FILE" "$DESTDIR" || exit 2 - target "install" - RET=$? - $UMOUNT "$DESTDIR" - exit $RET + _image_image } diff --git a/targets/NetBSD-sparc b/targets/NetBSD-sparc index 1c15bb3..779946a 100644 --- a/targets/NetBSD-sparc +++ b/targets/NetBSD-sparc @@ -8,28 +8,8 @@ #functions #public +#target_image target_image() { - USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ - IMAGE_FILE Where to write the filesystem image\n\ - IMAGE_KERNEL Path to the kernel\n\ - IMAGE_SIZE Size of the filesystem image in kilobytes\n\ - MKFS Command used to format the filesystem" - - #sanity check - check "$USAGE" DD DESTDIR DEVZERO IMAGE_FILE IMAGE_SIZE INSTALL MKDIR \ - MKFS MOUNT UMOUNT - - $MKDIR "$DESTDIR" || exit 2 - $UMOUNT "$DESTDIR" - $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" && - $MKFS "$IMAGE_FILE" || exit 2 - $MOUNT "$IMAGE_FILE" "$DESTDIR" || exit 2 - target "install" - RET=$? - #FIXME detect errors here too - [ ! -z "$IMAGE_KERNEL" ] && - $INSTALL -m 755 "$IMAGE_KERNEL" "$DESTDIR/$KERNEL" - $UMOUNT "$DESTDIR" - exit $RET + _image_image }