Create a bootable NetBSD disk image (still missing init and dynamic loader)

This commit is contained in:
Pierre Pronchery 2009-02-19 15:39:54 +00:00
parent 726f060fd3
commit 39d7686e76
4 changed files with 52 additions and 54 deletions

View File

@ -2,22 +2,50 @@
[ -z "$KERNEL" ]&& KERNEL="/netbsd" [ -z "$FDISK" ] && FDISK="fdisk"
[ -z "$MKFS" ] && MKFS="newfs -F" [ -z "$INSTALLBOOT" ] && INSTALLBOOT="installboot"
[ -z "$MOUNT" ] && MOUNT="_netbsd_mount" [ -z "$KERNEL" ] && KERNEL="/netbsd"
[ -z "$UMOUNT" ]&& UMOUNT="_netbsd_umount" [ -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 #functions
_netbsd_mount() #private
#image_image
_image_image()
{ {
$SUDO vnconfig -c vnd0 "$1" && USAGE="Options for $IMAGE_TYPE on $TARGET:\n\
$SUDO mount /dev/vnd0a "$2" 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() $MKDIR "$DESTDIR" || exit 2
{ $UMOUNT "$DESTDIR"
$SUDO umount "$1" && $DD if="$DEVZERO" of="$IMAGE_FILE" count="$IMAGE_SIZE" &&
$SUDO vnconfig -u vnd0 $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
} }

View File

@ -3,4 +3,12 @@
#includes #includes
. "`dirname $0`/Apps/Devel/src/scripts/targets/NetBSD-i386" . "`dirname $0`/Apps/Devel/src/scripts/targets/NetBSD"
#functions
#public
target_image()
{
_image_image
}

View File

@ -10,23 +10,5 @@
#public #public
target_image() target_image()
{ {
USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ _image_image
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
} }

View File

@ -8,28 +8,8 @@
#functions #functions
#public #public
#target_image
target_image() target_image()
{ {
USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ _image_image
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
} }