Easy VMware images



  • Apart from installing from the ISO onto a hard disk image there is an alternative with VMware, simply use the embedded image directly!  Create a VMware machine and simply replace the vmdk file with something like this:

    
    # Disk DescriptorFile
    version=1
    CID=5330bc69
    parentCID=ffffffff
    createType="monolithicFlat"
    
    # Extent description
    RW 124086 FLAT "pfSense.img" 0
    
    # The Disk Data Base
    #DDB
    
    ddb.adapterType = "ide"
    ddb.geometry.sectors = "63"
    ddb.geometry.heads = "16"
    ddb.geometry.cylinders = "208"
    ddb.virtualHWVersion = "4"
    
    

    With pfSense.img being the embedded image from downloads.  The number preceeding is the image size in 512 blocks, so simply divide the image size by 512.

    Note a serial port will need to be enabled in the virtual machine as the embedded image has no video support.

    
    Named Pipe:  /tmp/.pfsense
    
    This end is the server.
    The other end is an application.
    
    

    Connect to the serial console via the named pipe on the host machine.

    
    $ socat /tmp/.pfsense stdio,raw,echo=0
    
    

    This should make it easier to test HDD/CF image builds of pfSense.



  • And for the rest of the people on windows, use the named pipes tcp proxy to access the serial port from running vmware hosts:

    http://www.vmware.com/community/thread.jspa?threadID=28508&tstart=0

    I use this all the time and it works great.



  • I've been trying to work up a developer's image for Qemu for those interested.  For some reason pfsense can't locate /conf on this one though.  Help is appreciated in getting this working, Qemu being free and all. ;)  Not mention much more multi-platform. (I'm on a mac here.)

    http://www.numbski.net.nyud.net:8080/downloads/pfSense Developer Qemu 9-12-2006.qcow.gz

    (Nevermind, figured it out.  You need to boot to single user mode, do /sbin/mount -a, then rm /conf, mkdir /conf.  Seems that /conf is a symlink leading to nowhere. Doing this fixes it.  Then just type "exit" and the boot process will complete just fine. :)



  • If anyone is reading this or following at all, you might want to hold up.  The developer bootstrap doesn't happen automagically on the image I have posted right now.  You have to get into the OS, go to a shell, and then manually run dhclient (myinterface) to get an ip address from qemu's dhcp server (which proxies to your interface), then manually run the bootstrap, which, on top of qemu being slow due to emulation, takes ages.  If you're patient I'll post an updated developer image that already has the bootstrap done. :)

    I'll also document setup for Macs in the wiki.  I'm using a compressed disk image to keep the size as small as possible.



  • @Numbski:

    If anyone is reading this or following at all, you might want to hold up.  The developer bootstrap doesn't happen automagically on the image I have posted right now.  You have to get into the OS, go to a shell, and then manually run dhclient (myinterface) to get an ip address from qemu's dhcp server (which proxies to your interface), then manually run the bootstrap, which, on top of qemu being slow due to emulation, takes ages.  If you're patient I'll post an updated developer image that already has the bootstrap done. :)

    You are not necessarily required to use Qemu's user mode network stack (see: http://www.qemu.com/qemu-doc.html#SEC23). It is also possible to use a OS X tun/tap driver (see: http://www-user.rhrk.uni-kl.de/~nissler/tuntap/), which enables you to use Qemu's TAP network interface (see: http://www.qemu.com/qemu-doc.html#SEC22).

    Regards
    Daniel S. Haischt



  • To update this for the 128MB embedded images the vmware virtual disk file should be

    
    # Disk DescriptorFile
    version=1
    CID=95a2f971
    parentCID=ffffffff
    createType="monolithicFlat"
    
    # Extent description
    RW 239144 FLAT "pfSense.img" 0
    
    # The Disk Data Base 
    #DDB
    
    ddb.virtualHWVersion = "4"
    ddb.geometry.cylinders = "1024"
    ddb.geometry.heads = "64"
    ddb.geometry.sectors = "32"
    ddb.adapterType = "ide"
    
    

Log in to reply