MidnightBSD on USB Flash Drive
One of the most common requests to the MidnightBSD project is a method to create bootable flash media. I've come up with an ad hoc process to do just that.
Prerequisites
You must be familiar with the LiveCD creation process, have a USB flash drive of at least 1GB, and patience.
Implementation
Creating the image
Create a LiveCD.
Look at the script: install-iso2img.sh This script does not work as is, but it is a rough outline of what needs to be done.
dd if=/dev/zero of=theimgfilename.img count=${SECTS} where SECTS is enough to fit the OS on. This number can be tricky to come up with. The method in the script is not large enough. See Creating a file with a given size with dd. For example, dd if=/dev/zero of=imagefile bs=1048576 count=900 will give you a 900MB file.
- Make a temp directory such as /usr/flash and create two subdirectories img and iso. This will be tmpdir
- mdconfig -a -t vnode -f ${isoimage} (path to iso image obviously) note the device name isodev
- mdconfig -a -t vnode -f ${imgoutfile} (path to file you dd'd above) note the device name as imgdev
- bsdlabel -w -B ${imgdev} (should be something like /dev/md6)
- newfs -n /dev/${imgdev}a (should be something like /dev/md6a)
- mount -t cd9660 /dev/${isodev} ${tmpdir}/iso
- mount /dev/${imgdev}a ${tmpdir}/img
cd ${tmpdir}/iso && find . -print -depth | cpio -dump ${tmpdir}/img (i had better luck with gcpio from mports, one could use pax or cpdup too)
- Fix the etc/fstab in ${tmpdir}: /dev/da0a / ufs rw 1 1
- umount ${tmpdir}/iso
- mdconfig -d -u ${isodev}
- umount ${tmpdir}/img
- mdconfig -d -u ${imgdev}
Putting it on flash media
(assumes flash is /dev/da0)
- dd if=${imgoutfile} of=/dev/da0 bs=1m
Test Environment
This setup was tested on 0.3-CURRENT (Jan 4, 2009) i386 with an Intel DP965LT motherboard. It worked well.
I also attempted to use it on a Mac Pro (Quad 2.0Ghz), and while holding option showed an EFI boot option, nothing would work with the flash. I have not tried GPT yet. Suggestions welcome.
Possible Uses
Aside from using the Live CD image, one could copy the disc1 iso (install) and use that instead of CD-ROM media for installation. In that case, you would need to pick a few different options in sysinstall. This has not been tested to date; if you have success, please update the wiki or send us an email.
It would be nice to modify make release to create a flash boot image for install and live cd like use.