#$Id$ #Copyright (c) 2009 Pierre Pronchery #variables [ -z "$FDISK" ] && FDISK="fdisk" [ -z "$INSTALLBOOT" ] && INSTALLBOOT="installboot" [ -z "$MBRLABEL" ] && MBRLABEL="mbrlabel" [ -z "$MKFS" ] && MKFS="newfs" [ -z "$MKISOFS" ] && MKISOFS="makefs -t cd9660" [ -z "$MOUNT" ] && MOUNT="mount" [ -z "$UMOUNT" ] && UMOUNT="umount" [ -z "$VNCONFIG" ] && VNCONFIG="vnconfig" [ -z "$VND" ] && VND="vnd0" #functions #private #image_image _image_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" CHOWN DD DESTDIR DEVZERO FDISK IMAGE_FILE IMAGE_KERNEL \ IMAGE_SIZE INSTALL INSTALLBOOT LN MBRLABEL MKDIR MKFS MKNOD \ MOUNT MV UMOUNT VNCONFIG VND $MKDIR "$DESTDIR" || exit 2 $SUDO $UMOUNT "$DESTDIR" $SUDO $VNCONFIG -u "$VND" $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 $SUDO $VNCONFIG -c "$VND" "$IMAGE_FILE" || exit 2 $SUDO $MBRLABEL -frw "$VND" && $SUDO $MKFS "${VND}e" && $SUDO $MOUNT "/dev/${VND}e" "$DESTDIR" && $SUDO $MKDIR "$DESTDIR$PREFIX" && $SUDO $CHOWN "$UID:$GID" "$DESTDIR$PREFIX" && target "install" && $SUDO $CHOWN -R "0:0" "$DESTDIR$PREFIX" && $SUDO $MKDIR "$DESTDIR/bin" && $SUDO $MV "$DESTDIR$PREFIX/bin/sh" "$DESTDIR/bin/sh" && $SUDO $MKDIR "$DESTDIR/dev" && $SUDO $MKNOD -m 600 "$DESTDIR/dev/console" c 0 0 && $SUDO $MKDIR "$DESTDIR/libexec" "$DESTDIR/usr/libexec" && $SUDO $INSTALL -m 555 "/libexec/ld.elf_so" \ "$DESTDIR/libexec" && $SUDO $LN -s "/libexec/ld.elf_so" "$DESTDIR/usr/libexec"&& $SUDO $MKDIR "$DESTDIR/sbin" && SUBDIRS="Apps/Unix/src/others/tools" target oinit && $SUDO $INSTALL -m 755 "Apps/Unix/src/others/tools/oinit" \ "$DESTDIR/sbin/init" && $SUDO $INSTALL -m 644 "/usr/mdec/boot" "$DESTDIR/boot" && $SUDO $INSTALL -m 755 "$IMAGE_KERNEL" "$DESTDIR/netbsd" && $SUDO $INSTALLBOOT -m "$MACHINE" "/dev/r${VND}e" /usr/mdec/bootxx_ffsv1 RET=$? $SUDO $UMOUNT "$DESTDIR" $SUDO $VNCONFIG -u "$VND" return $RET } #image_iso _image_iso() { USAGE="Options for $IMAGE_TYPE on $TARGET:\n\ IMAGE_FILE Where to write the filesystem image\n\ IMAGE_KERNEL Path to the kernel MKISOFS Command used to format the filesystem" MKISOFS_ARGS="-o bootimage=i386;bootxx,no-emul-boot,rockridge" #sanity check check "$USAGE" IMAGE_FILE IMAGE_KERNEL MKISOFS target "install" || exit 2 $MKDIR "$DESTDIR/dev" || exit 2 $SUDO $MKNOD -m 600 "$DESTDIR/dev/console" c 0 0 || exit 2 $MKDIR "$DESTDIR/libexec" "$DESTDIR/usr/libexec" || exit 2 $INSTALL -m 555 "/libexec/ld.elf_so" "$DESTDIR/libexec" || exit 2 $LN -s "/libexec/ld.elf_so" "$DESTDIR/usr/libexec" || exit 2 $MKDIR "$DESTDIR/sbin" || exit 2 SUBDIRS="Apps/Unix/src/others/tools" target oinit || exit 2 $INSTALL -m 755 "Apps/Unix/src/others/tools/oinit" \ "$DESTDIR/sbin/init" || exit 2 $INSTALL -m 755 "$IMAGE_KERNEL" "$DESTDIR/netbsd" || exit 2 $INSTALL -m 644 "/usr/mdec/boot" "$DESTDIR/boot" || exit 2 $INSTALL -m 644 "/usr/mdec/bootxx_cd9660" "bootxx" || exit 2 $INSTALLBOOT -m amd64 -o console=pc -e bootxx || exit 2 $MKISOFS $MKISOFS_ARGS "$IMAGE_FILE" "$DESTDIR" || exit 2 }