<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.restless.systems/index.php?action=history&amp;feed=atom&amp;title=Building_OpenFirmware_for_QEMU</id>
	<title>Building OpenFirmware for QEMU - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.restless.systems/index.php?action=history&amp;feed=atom&amp;title=Building_OpenFirmware_for_QEMU"/>
	<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;action=history"/>
	<updated>2026-05-29T18:01:38Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1167&amp;oldid=prev</id>
		<title>Kraaabs: add gitlab link to the dockerfile ~Sarah</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1167&amp;oldid=prev"/>
		<updated>2023-02-23T22:40:58Z</updated>

		<summary type="html">&lt;p&gt;add gitlab link to the dockerfile ~Sarah&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:40, 23 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l6&quot;&gt;Line 6:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 6:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Slackware 14.2 (the 32-bit version) is known to produce working builds. Just install the entire distribution and follow the [https://openfirmware.info/Open_Firmware#Building_Different_Versions instructions on the OpenFirmware wiki] to build your image of choice. As of 2023/02/22, this method seems to work fine.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Slackware 14.2 (the 32-bit version) is known to produce working builds. Just install the entire distribution and follow the [https://openfirmware.info/Open_Firmware#Building_Different_Versions instructions on the OpenFirmware wiki] to build your image of choice. As of 2023/02/22, this method seems to work fine.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;As well, [[User:Kraaabs]] has created a Dockerfile to build images without having to set up your own VM: [https://gitlab.com/sarahcrowle/of-docker-build https://gitlab.com/sarahcrowle/of-docker-build]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== So why doesn&amp;#039;t it work? ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== So why doesn&amp;#039;t it work? ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki-mw_:diff:1.41:old-1165:rev-1167:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
	<entry>
		<id>https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1165&amp;oldid=prev</id>
		<title>Kraaabs: a little page about building openfirmware in 2023 ~Sarah</title>
		<link rel="alternate" type="text/html" href="https://wiki.restless.systems/index.php?title=Building_OpenFirmware_for_QEMU&amp;diff=1165&amp;oldid=prev"/>
		<updated>2023-02-23T02:53:18Z</updated>

		<summary type="html">&lt;p&gt;a little page about building openfirmware in 2023 ~Sarah&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Preservation and Documentation]]&lt;br /&gt;
In 2006, the source code for OpenFirmware&amp;lt;ref&amp;gt;https://openfirmware.info/Welcome_to_OpenBIOS&amp;lt;/ref&amp;gt; on x86 was released. Although there are instructions&amp;lt;ref&amp;gt;https://openfirmware.info/Open_Firmware#Building_Different_Versions&amp;lt;/ref&amp;gt; for building images for use with QEMU, they are sparse and don&amp;#039;t work any more on modern, 64-bit Linux.&lt;br /&gt;
&lt;br /&gt;
== Setting up your own build environment ==&lt;br /&gt;
As far as I can tell, building OpenFirmware requires an older version of GCC as well as multilib support. The easiest way to get both of these things at once is to use an older Linux distribution in a virtual machine.&lt;br /&gt;
&lt;br /&gt;
Slackware 14.2 (the 32-bit version) is known to produce working builds. Just install the entire distribution and follow the [https://openfirmware.info/Open_Firmware#Building_Different_Versions instructions on the OpenFirmware wiki] to build your image of choice. As of 2023/02/22, this method seems to work fine.&lt;br /&gt;
&lt;br /&gt;
== So why doesn&amp;#039;t it work? ==&lt;br /&gt;
OpenFirmware is actually bootstrapped using a FORTH interpreter that it builds before the &amp;quot;real&amp;quot; build process starts. This interpreter is &amp;#039;&amp;#039;known&amp;#039;&amp;#039; not to build on aarch64, and segfaults on x86_64. 32-bit builds of the interpreter &amp;#039;&amp;#039;appear&amp;#039;&amp;#039; to work, but they produce broken images (with no error message!).&lt;br /&gt;
&lt;br /&gt;
At this point it&amp;#039;s unclear whether the issue is with the FORTH interpreter itself (likely) or with the FORTH code used to build OpenFirmware (less likely). Either way, building on an older 32-bit system seems to work just fine, and produces images that run in modern versions of QEMU.&lt;br /&gt;
&lt;br /&gt;
== Just give me images! ==&lt;br /&gt;
[[User:Kraaabs]] has successfully built every kind of QEMU OpenFirmware image for x86. [https://picsofbread.com/dl/ofw-images.tar.xz Download here.]&lt;br /&gt;
&lt;br /&gt;
== Footnotes/references ==&lt;/div&gt;</summary>
		<author><name>Kraaabs</name></author>
	</entry>
</feed>