restore(8)ing new / -- boots on metal but not in a VM

Tim Judd tajudd at
Mon Oct 12 18:53:11 UTC 2009

On 10/12/09, Alex Jurkiewicz <alex at> wrote:
> Hi all,
> A little background: I'm writing a script that will allow me to
> restore(8) a standard FreeBSD partition to multiple machines. So far,
> I'm at the 'see if it works in principle' stage, and I'm finding
> something strange.
> My procedure:
> * Start with an empty hard drive (ad0).
> * Boot off the FreeBSD CD, enter the live CD filesystem shell (Fixit
> -> Live CD Filesystem)
> * Create a single slice with fdisk that spans the entire disk (fdisk
> -i /dev/ad0)
> * Create a single partition with bsdlabel that spans the entire slice
> (bsdlabel -w /dev/ad0s1)
> * Install the FreeBSD Boot Loader (boot0cfg -B /dev/ad0)
> * Format and restore the dumpfile (newfs /dev/ad0s1a && mount
> /dev/ad0s1a /mnt && cd /mnt && ssh storagebox "dd
> if=home/aj/image.dump" | restore -rvf -
> * Unmount /mnt and restart.
> The steps work fine... on physical hardware. The restored image boots
> up fine. As a VM guest, running in either VMWare or VirtualBox, it
> don't work. Everything appears to go fine, but when I get to the boot
> loader, pressing F1 just makes the PC speaker beep at me.
> Any pointers would be appreciated. I'm using FreeBSD 6.4.
> Cheers,
> Alex Jurkiewicz

Is the virtual machine using SCSI emulation to boot, or is it using IDE?

SCSI drives are da(4), IDE drives are ata(4) [aka ad(4)]

If the boot blocks (maybe boot0 specific) point to an ad/ata device,
and the virtual machine is SCSI, it won't find the boot sectors.

Personally, I use the "standard" boot blocks which don't allow
multibooting but I don't multiboot BSD anyway.

The standard boot blocks work by finding the first bsd slice, and
booting it.  I like the keyword find because it doesn't direct the
boot blocks to something unfindable.  :D

Let me know the subsystem layout, and we'll work from there.

More information about the freebsd-questions mailing list