Several assumptions regarding recording DVDs under the FreeBSD system:
4.7GB advertised by the DVD media makers is 4 700 000 000 bytes.
This is what I typically use:
mkisofs -R -J -hide-rr-moved -f -V "$NAME" -o $outputfile.iso /dir...
-R enables RockRidge extension
-J enables Joliet. Note that long filenames with repetitive phrases at the beggining of a filename will cause mkisofs(1) to exit with appropriate error message. You'll have to rename files so that after proper file name truncations, they'll be unique.
-hide-rr-moved hides rr_moved directory.
-f follows symbolic links. Very useful for creating dedicated directory with a links to other places in a filesystem, which in turn lets you to control capacity of a data to be backed up.
-V "$NAME" names this ISO image respectively. This string will appear in /dev/iso9660 if module geom_label.ko is loaded, or options GEOM_LABEL is present in your kernel configuration file.
-o outputfile.iso is a destination file of the ISO that is being created
/dir directory upon interest
Those options let me to easily record DVD usable by two separate FreeBSD systems, the GNU/Linux ones and probably Microsoft Windows family.
Just like with cdrecord(1), the atapicam.ko module must be loaded or device atapicam line must be present in your configuration file. Once it's done and /dev/cd0 device is present, one can execute growisofs with following flags:
growisofs -speed=12 -Z /dev/cd0=file.iso
-speed=12 limits DVD recorder speed to 12. This might differ for your hardware, but my DVD recorder (being able to record DVDs at speed 18x) is unable to flush it's internal buffer, and recording fails.
-Z /dev/cd0=file.iso points to the DVD recorded device and appropriate ISO image. Please note growisofs(1) is advertised as a tool being able to automatically create ISO images on the fly, without previous mkisofs(1) usage. I prefer to create ISOs by hand, as I rarely record only one DVD. Hence, preparing several ISO lets to to easily automate this process.
Additional options, which I occasionally use:
-dry-run lets to check whether the recording has a chance to succeed. I think it does only minimal test. For me, it's proven to not protect DVD media from failing at burn process.
If you want to skip sysinstall stage so that you could populate previously prepared slice, one can use bsdlabel command to create labels. Just after labels has been made, filesystem must be created with newfs command.
Remember about proper population of /boot directory. Forgetting about files will disallow you to boot without a problem--lack of /boot/kernel makes FreeBSD installation unbootable, while lack of /boot/device.hints causes at least lack of messages at boot time.