1#!/usr/bin/env bash 2set -e 3 4# 5# This script creates a bootable image and should at some point in the future 6# be replaced by the proper NetBSD infrastructure. 7# 8 9: ${ARCH=i386} 10: ${OBJ=../obj.${ARCH}} 11: ${TOOLCHAIN_TRIPLET=i586-elf32-minix-} 12: ${BUILDSH=build.sh} 13 14: ${SETS="minix-base"} 15: ${IMG=minix_x86.iso} 16 17if [ ! -f ${BUILDSH} ] 18then 19 echo "Please invoke me from the root source dir, where ${BUILDSH} is." 20 exit 1 21fi 22 23# set up disk creation environment 24. releasetools/image.defaults 25. releasetools/image.functions 26 27# where the kernel & boot modules will be 28MODDIR=${DESTDIR}/boot/minix/.temp 29 30echo "Building work directory..." 31build_workdir "$SETS" 32 33echo "Adding extra files..." 34workdir_add_sets 35workdir_add_cdfiles 36 37# create a fstab entry in /etc 38cat >${ROOT_DIR}/etc/fstab <<END_FSTAB 39none /sys devman rw,rslabel=devman 0 0 40none /dev/pts ptyfs rw,rslabel=ptyfs 0 0 41END_FSTAB 42add_file_spec "etc/fstab" extra.fstab 43 44workdir_add_kernel minix_default 45 46# add boot.cfg 47cat >${ROOT_DIR}/boot.cfg <<END_BOOT_CFG 48banner=Welcome to the MINIX 3 installation CD 49banner================================================================================ 50banner= 51menu=Regular MINIX 3:multiboot /boot/minix_default/kernel bootcd=1 cdproberoot=1 disable=inet 52menu=Regular MINIX 3 (with AHCI):multiboot /boot/minix_default/kernel bootcd=1 cdproberoot=1 disable=inet ahci=yes 53menu=Edit menu option:edit 54menu=Drop to boot prompt:prompt 55clear=1 56timeout=10 57default=1 58load=/boot/minix_default/mod01_ds 59load=/boot/minix_default/mod02_rs 60load=/boot/minix_default/mod03_pm 61load=/boot/minix_default/mod04_sched 62load=/boot/minix_default/mod05_vfs 63load=/boot/minix_default/mod06_memory 64load=/boot/minix_default/mod07_tty 65load=/boot/minix_default/mod08_mib 66load=/boot/minix_default/mod09_vm 67load=/boot/minix_default/mod10_pfs 68load=/boot/minix_default/mod11_mfs 69load=/boot/minix_default/mod12_init 70END_BOOT_CFG 71add_file_spec "boot.cfg" extra.cdfiles 72 73# add README.TXT 74cp releasetools/release/cd/README.TXT ${ROOT_DIR}/README.TXT 75add_file_spec "README.TXT" extra.cdfiles 76 77# set correct message of the day (log in and install tip) 78cp releasetools/release/cd/etc/issue ${ROOT_DIR}/etc/issue 79add_file_spec "etc/issue" extra.cdfiles 80 81echo "Bundling packages..." 82bundle_packages "$BUNDLE_PACKAGES" 83 84echo "Creating specification files..." 85create_input_spec 86create_protos 87 88# Clean image 89if [ -f ${IMG} ] # IMG might be a block device 90then 91 rm -f ${IMG} 92fi 93 94echo "Writing ISO..." 95${CROSS_TOOLS}/nbmakefs -t cd9660 -F ${WORK_DIR}/input -o "rockridge,bootimage=i386;${DESTDIR}/usr/mdec/bootxx_cd9660,label=MINIX" ${IMG} ${ROOT_DIR} 96 97#mods=$(cd ${MODDIR}; echo mod* | tr ' ' ',') 98 99echo "ISO image at `pwd`/${IMG}" 100echo "To boot this image on kvm:" 101#echo "cd ${MODDIR} && qemu-system-i386 --enable-kvm -kernel kernel -append \"bootcd=1 cdproberoot=1 disable=inet\" -initrd \"${mods}\" -cdrom `pwd`/${IMG}" 102echo "qemu-system-i386 --enable-kvm -cdrom `pwd`/${IMG}" 103