Difference between revisions of "FreeBSD"

From coreboot
Jump to: navigation, search
(Remove LinuxBIOS reference...)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This article describes how to build coreboot v2 on FreeBSD and boot FreeBSD using coreboot and [[ADLO]] inside [[QEMU]].
+
FreeBSD should work out of the box with SeaBIOS. In case of problems, please tell us through the [[Mailinglist]]
 
+
Alternatively you can boot FreeBSD using [[GRUB2]] as payload.
= Requirements =
+
All steps outlined in this article have been performed using FreeBSD 7.0-BETA1/i386. Other versions or architectures of FreeBSD might work, too, but have not been tested. The patches mentioned in this article have been created against coreboot v2, revision 2897.
+
 
+
In order to build ADLO on FreeBSD, you need the following ports installed:
+
 
+
* <tt>devel/gmake</tt>
+
* <tt>devel/dev86</tt>. See [[#Building the 8086 development environment|details below]].
+
 
+
To build coreboot on FreeBSD, you need
+
 
+
* <tt>devel/gmake</tt>
+
* <tt>lang/python</tt>. At the time of writing this article, that port installs Python 2.4. Possibly other versions of Python also work but haven't been tried.
+
 
+
To boot FreeBSD in QEMU you need
+
 
+
* <tt>emulators/qemu</tt> with modifications. Please refer to the [[QEMU Build Tutorial]] for details.
+
 
+
= Obtaining coreboot =
+
 
+
See [[Download coreboot|this page]] on how to download coreboot. I recommend you checkout the latest version of coreboot v2 using Subversion.
+
 
+
== Applying the required patches ==
+
 
+
The coreboot build process currently assumes that the <tt>make</tt> utility is GNU make. This isn't true on FreeBSD (or the other BSDs for that matter), where GNU make is installed as <tt>gmake</tt>.
+
 
+
A patch which addresses this can be found [http://www.coreboot.org/images/b/b6/LinuxBIOS_ADLO_FreeBSD.tgz here]. To download and apply this patch, run the following commands from the top-level directory of your coreboot source tree (e.g. /home/phs/LinuxBIOSv2):
+
 
+
$ ftp http://www.coreboot.org/images/b/b6/LinuxBIOS_ADLO_FreeBSD.tgz
+
$ tar xzf LinuxBIOS_ADLO_FreeBSD.tgz
+
$ patch -p0 < LinuxBIOS_ADLO_FreeBSD.diff
+
 
+
Alternatively, the patch [http://www.linuxbios.org/pipermail/linuxbios/attachments/20071105/923a1f3f/attachment.bat attached] to this [http://www.coreboot.org/pipermail/linuxbios/2007-November/026759.html message] can be used.
+
 
+
= Building ADLO =
+
 
+
In order to boot FreeBSD using coreboot, ADLO is used as a payload. Therefore, it must be built before the coreboot image can be built. Building ADLO on FreeBSD requires that the 8086 development environment is installed. See the [[#Building the 8086 development environment|following section]] for details.
+
 
+
ADLO is part of the coreboot v2 source tree. Assuming you have [[#Applying the required patches|applied the required patches]], it can be built by issuing the following commands from the top-level directory of your local source tree:
+
 
+
$ cd util/ADLO
+
$ gmake
+
 
+
You will now find the ADLO payload at <tt>util/ADLO/payload</tt>.
+
 
+
== Building the 8086 development environment ==
+
ADLO requires the <tt>devel/dev86</tt> port which installs the 8086 development environment. This is a new port not yet included in the FreeBSD Ports tree, see Problem Report [http://www.freebsd.org/cgi/query-pr.cgi?pr=117480 ports/117480]. To build the port, download and extract the shell archive attached to the problem report.
+
 
+
$ ftp -o devel_dev.shar http://www.freebsd.org/cgi/query-pr.cgi?prp=117480-1-shar
+
$ sh devel_dev.shar
+
$ cd dev86
+
$ su
+
# make install
+
 
+
This has to be done only once, before building ADLO. You don't have to reinstall the port if you rebuild ADLO.
+
 
+
= Building coreboot =
+
 
+
The [[QEMU_Build_Tutorial|QEMU build tutorial]] covers all steps required to build coreboot for QEMU. As a quick reference, assuming you have [[#Applying the required patches|applied the required patches]] do:
+
 
+
$ cd targets
+
$ ./buildtarget emulation/qemu-i386
+
$ cd emulation/qemu-i386/qemu-i386
+
$ gmake
+
 
+
Make sure you use the <tt>gmake</tt> utility on FreeBSD!
+
 
+
This should give you a file called <tt>qemu-bios.rom</tt> in <tt>targets/emulation/qemu-i386/qemu-i386</tt>. Copy this file to a convenient location, e.g. your home directory, and rename it to <tt>bios.bin</tt>.
+
 
+
$ cp qemu-bios.rom ~/bios.bin
+
 
+
You will need it later.
+
 
+
= Booting FreeBSD inside QEMU =
+
If you already have a FreeBSD installation inside QEMU, you can boot it using coreboot with the following command:
+
 
+
$ qemu -kernel-kqemu -hda freebsd.img -nographic -L ~
+
 
+
This assumes, that there is a file called <tt>bios.bin</tt> in your home directory that contains coreboot with an ADLO payload. The file <tt>freebsd.img</tt> should contain your FreeBSD installation. Make sure it uses the serial console, though, as graphical output will not work when booted using coreboot.
+
 
+
== Installing FreeBSD inside QEMU ==
+
Installing FreeBSD inside QEMU is pretty straight forward. If you already have a working installation, you can skip this section.
+
 
+
First you need to create a QEMU disk:
+
 
+
$ qemu-img create freebsd.img 1024M
+
 
+
This will create a QEMU virtual disk named <tt>freebsd.img</tt> with a capacity of 1 GByte. Next, install the base system using one of the ISO files provided by the FreeBSD Project at [ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386 ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386] and have QEMU use it as the boot device. In this example, the FreeBSD 7.0-BETA1 bootonly disc [ftp://ftp.freebsd.org/pub/FreeBSD/ISO-IMAGES-i386/7.0/7.0-BETA1-i386-bootonly.iso] is used:
+
 
+
$ qemu -kernel-kqemu -hda freebsd.img -cdrom 7.0-BETA1-i386-bootonly.iso -boot d
+
 
+
Inside QEMU, perform an installation as you normally would. See the [http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/install.html FreeBSD Handbook] for details. After the installation has finished, boot up FreeBSD once ''without'' using coreboot.
+
 
+
$ qemu -kernel-kqemu -hda freebsd.img
+
 
+
In the FreeBSD installation running inside QEMU add the following to the file <tt>/boot/loader.conf</tt>:
+
 
+
console=comconsole
+
 
+
This will cause FreeBSD to use the first serial port as a console. Both the Loader's and the Kernel's messages will end up there. This is important as graphical output won't work once FreeBSD is booted using coreboot and ADLO.
+
 
+
{{Cc-by-sa-3.0}}
+

Latest revision as of 16:27, 19 January 2014

FreeBSD should work out of the box with SeaBIOS. In case of problems, please tell us through the Mailinglist Alternatively you can boot FreeBSD using GRUB2 as payload.