I built a small FreeBSD LiveUSB a while ago using syslinux and isolinux. I can use the same image & syslinux config for booting both from USB and CD.
In my case I just load the entire image in memory and go from there, since the image is fairly small in my case (~15M) this is not a problem. More advanced solutions would be required for larger images.
For FreeBSD I use:
Code:
KERNEL /boot/syslinux/memdisk
APPEND initrd=/boot/freebsd.img.gz harddisk raw
I would expect that this will also work for OpenBSD. Now the `raw' keyword, this is vital.
The main advantage of using syslinux is that you can just format your drive as FAT32 and use it for other things too.