Difference between revisions of "FreeBSD"

From coreboot
Jump to: navigation, search
(Booting FreeBSD inside QEMU)
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This article describes how to build LinuxBIOS v2 on FreeBSD and boot FreeBSD using LinuxBIOS 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. Other versions of FreeBSD might work, too, but have not been tested. The patches mentioned in this article have been created against LinuxBIOSv2, Revision 2897.
+
 
+
In order to build ADLO on FreeBSD, you need the following ports installed:
+
 
+
* <tt>devel/gmake</tt>
+
* <tt>devel/dev86</tt>. See [[Booting_FreeBSD_using_LinuxBIOS#Building_the_8086_development_environment | details below]].
+
 
+
To build LinuxBIOS 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 version 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#Building_Qemu_on_FreeBSD | QEMU Build Tutorial]] for details.
+
 
+
= Obtaining LinuxBIOS =
+
 
+
See [[Download_LinuxBIOS | this page]] on how to download LinuxBIOS. I recomment you checkout the latest Version of LinuxBIOS v2 using Subversion.
+
 
+
== Applying the required patches ==
+
 
+
The LinuxBIOS build process 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://linuxbios.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 LinuxBIOS source tree (e.g. /home/phs/LinuxBIOSv2):
+
 
+
$ ftp http://linuxbios.org/images/b/b6/LinuxBIOS_ADLO_FreeBSD.tgz
+
$ tar xzf LinuxBIOS_ADLO_FreeBSD.tgz
+
$ patch -p0 < LinuxBIOS_ADLO_FreeBSD.diff
+
 
+
= Building ADLO =
+
 
+
In order to boot FreeBSD using LinuxBIOS, ADLO is used as a payload. Therefore, it must be build before the LinuxBIOS image can be built. Building ADLO on FreeBSD requires that the 8086 development environment is installed. See the [[Booting_FreeBSD_using_LinuxBIOS#Building_the_8086_development_environment | following section]] for details.
+
 
+
ADLO is part of the LinuxBIOS v2 source tree. Assuming you have [[Booting_FreeBSD_using_LinuxBIOS#Applying_the_required_patches | applied the required patches]], it can be build by issuing the following commands from the top-level directory of your LinuxBIOS v2 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 LinuxBIOS =
+
 
+
The [[QEMU_Build_Tutorial | QEMU build tutorial]] covers all steps required to build LinuxBIOS for QEMU. As a quick reference, assuming you have [[Booting_FreeBSD_using_LinuxBIOS#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!
+
 
+
= Booting FreeBSD inside QEMU =
+
If you already have a FreeBSD installation inside QEMU, you can boot it using LinuxBIOS 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 the current working directory that contains LinuxBIOS 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 LinuxBIOS.
+
 
+
== 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 the 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 <i>without</i> using LinuxBIOS.
+
 
+
$ qemu -kernel-kqemu -hda freebsd.img
+
 
+
In the FreeBSD installation running inside QEMU add the following to the file <tt>/boot/loader.conf</tt>:
+
 
+
<pre>
+
console=comconsole
+
</pre>
+
 
+
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 LinuxBIOS and ADLO.
+

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.