<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>partially stapled productions</title>
	<atom:link href="http://partiallystapled.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://partiallystapled.com</link>
	<description>explodey widgets</description>
	<lastBuildDate>Tue, 30 Sep 2014 01:06:08 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.3</generator>
	<item>
		<title>Digi-Key Dorkery version 0.7</title>
		<link>https://partiallystapled.com/2013/05/digi-key-dorkery-version-0-7/</link>
		<comments>https://partiallystapled.com/2013/05/digi-key-dorkery-version-0-7/#comments</comments>
		<pubDate>Sun, 12 May 2013 03:42:26 +0000</pubDate>
		<dc:creator><![CDATA[gxti]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://partiallystapled.com/?p=85</guid>
		<description><![CDATA[This browser &#8220;user script&#8221; adds a few much-needed features to the Digi-Key search interface. Get it Here Current feature list for version 0.7: Checks &#8220;In Stock&#8221; when opening a category page Deselects bulk packaging types like &#8220;Tape &#38; Reel&#8221; when opening a category page Adds]]></description>
				<content:encoded><![CDATA[<p>This browser &#8220;user script&#8221; adds a few much-needed features to the Digi-Key search interface.</p>
<p><a href="/dorkery/digi-key_dorkery.user.js">Get it Here</a></p>
<p>Current feature list for version 0.7:</p>
<ul>
<li>Checks &#8220;In Stock&#8221; when opening a category page</li>
<li>Deselects bulk packaging types like &#8220;Tape &amp; Reel&#8221; when opening a category page</li>
<li>Adds a checkbox interface to several &#8220;features&#8221; fields, enabling much faster filtering</li>
</ul>
<p>Changes in version 0.7:</p>
<ul>
<li>Updated to work with the new modifications to the Digi-Key site.</li>
<li>Removed sort-by-price shortcuts for now since the interface changed.</li>
</ul>
<p>Suggestions welcome!</p>
<p><img alt="" src="/content/2011/03/dkfilter2.png" /></p>
]]></content:encoded>
			<wfw:commentRss>https://partiallystapled.com/2013/05/digi-key-dorkery-version-0-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Laureline GPS NTP server</title>
		<link>https://partiallystapled.com/2013/01/laureline-gps-ntp-server/</link>
		<comments>https://partiallystapled.com/2013/01/laureline-gps-ntp-server/#comments</comments>
		<pubDate>Thu, 10 Jan 2013 05:18:01 +0000</pubDate>
		<dc:creator><![CDATA[gxti]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://partiallystapled.com/?p=41</guid>
		<description><![CDATA[Laureline is an embedded, Stratum 1 NTP server that serves time at sub-microsecond precision to the computers on your home LAN, corporate network, or the internet. Time is sourced from an on-board GPS receiver which steers the internal clock to within 100 nanoseconds. Unlike solutions]]></description>
				<content:encoded><![CDATA[<p>Laureline is an embedded, Stratum 1 NTP server that serves time at sub-microsecond precision to the computers on your home LAN, corporate network, or the internet. Time is sourced from an on-board GPS receiver which steers the internal clock to within 100 nanoseconds. Unlike solutions using inexpensive single-board computers, Laureline has a dedicated Ethernet controller that ensures low jitter and latency for optimal NTP performance.</p>
<p>It is built around a STM32F107 processor with built-in 100 Mbit Ethernet MAC, paired with an inexpensive transceiver to provide an excellent Ethernet interface with predictable and minimal latency. This is in contrast to the USB-based MACs found in low-cost single-board computers. Also included is a small temperature-compensated crystal oscillator (TCXO) that keeps the internal clock ticking steadily.</p>
<p><a href="/wp-content/uploads/2013/12/laurel7_front.jpg"><img src="/wp-content/uploads/2013/12/laurel7_front.jpg" alt="laurel7_front" width="1025" height="1060" class="alignnone size-full wp-image-95" /></a><br />
<span id="more-41"></span><br />
Laureline is open-source hardware, provided under the Creative Commons Attribution 3.0 license. It was developed using Altium Designer but a PDF of the schematic as well as the Gerber and NC Drill outputs is provided below. The current revision number is 7.</p>
<p>The Laureline software is also open-source and is provided under the MIT License. Laureline includes and links against <a href="http://www.coocox.org/CoOS.htm">CoOS</a> (BSD license), <a href="https://savannah.nongnu.org/projects/lwip/">lwIP</a>, (BSD license), and <a href="http://elm-chan.org/fsw/ff/00index_e.html">ChaN&#8217;s FatFs</a> (permissively licensed). The software can be inspected, modified, compiled and uploaded to the burned-in bootloader using nothing more than the <a href="https://launchpad.net/gcc-arm-embedded">GCC ARM Embedded toolchain</a>, standard build tools (GNU Make, etc.), and a Micro-SD card.</p>
<ul>
<li><a href="/pub/laureline-docs/">Documentation</a></li>
<li><a href="http://hg.partiallystapled.com/circuits/laureline/raw-file/37c201dea670/hw/out/production.PDF">Schematic PDF rev. 7</a></li>
<li><a href="https://github.com/mtharp/laureline-firmware">GitHub</a> &#8211; Source code and firmware downloads</li>
<li><a href="http://hg.partiallystapled.com/circuits/laureline/">Mercurial source control repository</a> &#8211; CAD documents</li>
</ul>

<a href='https://partiallystapled.com/2013/01/laureline-gps-ntp-server/laurel7_front/'><img width="145" height="150" src="https://partiallystapled.com/wp-content/uploads/2013/12/laurel7_front.jpg" class="attachment-thumbnail" alt="laurel7_front" /></a>
<a href='https://partiallystapled.com/?attachment_id=94'><img width="150" height="148" src="https://partiallystapled.com/wp-content/uploads/2013/12/laurel7_back.jpg" class="attachment-thumbnail" alt="laurel7_back" /></a>
<a href='https://partiallystapled.com/?attachment_id=96'><img width="150" height="91" src="https://partiallystapled.com/wp-content/uploads/2013/12/laurel7_pcb.jpg" class="attachment-thumbnail" alt="laurel7_pcb" /></a>

]]></content:encoded>
			<wfw:commentRss>https://partiallystapled.com/2013/01/laureline-gps-ntp-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PPS Piggy</title>
		<link>https://partiallystapled.com/2012/08/pps-piggy/</link>
		<comments>https://partiallystapled.com/2012/08/pps-piggy/#comments</comments>
		<pubDate>Wed, 08 Aug 2012 00:00:14 +0000</pubDate>
		<dc:creator><![CDATA[gxti]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://partiallystapled.com/?p=21</guid>
		<description><![CDATA[The &#8220;PPS Piggy&#8221; is a companion board to the Trimble Resolution SMT carrier board and Resolution T that makes it easy to connect to a PC via either RS-232 or USB. It provides a linear 3.3V power supply for the RT/RSMT board and 3.3V or]]></description>
				<content:encoded><![CDATA[<p>The &#8220;PPS Piggy&#8221; is a companion board to the <a href="http://www.trimble.com/timing/resolution-smt.aspx">Trimble Resolution SMT</a> carrier board and <a href="http://www.trimble.com/timing/resolution-t.aspx">Resolution T</a> that makes it easy to connect to a PC via either RS-232 or USB.</p>
<p>It provides a linear 3.3V power supply for the RT/RSMT board and 3.3V or 5V for the antenna, all from a 5V input (either external or from USB). Serial communications is available via either USB or RS-232 or both. If both are connected, USB takes precedence and can transmit to the RT or RSMT board, but both RS-232 and USB always receive data simultaneously from the RT or RSMT. Pulse-per-second output is provided via the RS-232&#8217;s DCD (carrier detect) line, and a 50-ohm driven 100mil header connector. An unpopulated SMA footprint with the same 50 ohm output is also provided. The 50-ohm output will drive 2.5V into a 50 ohm load, or 5V into a high-impedance load.<br />
<a href="http://partiallystapled.com/wp-content/uploads/2013/04/piggy5_front.jpg"><img src="https://partiallystapled.com/wp-content/uploads/2013/04/piggy5_front.jpg" alt="piggy5_front" width="1000" height="465" class="alignnone size-full wp-image-82" /></a></p>
<h2><a href="https://www.tindie.com/shops/gxti/pps-piggy/">Buy it on Tindie</a></h2>
<h3>Feature list</h3>
<ul>
<li>5V input power via header or USB</li>
<li>Onboard 3.3V linear regulator</li>
<li>Solder jumper for selecting 3.3V or 5V for antenna power (default 5V)</li>
<li>Serial RS232 on DE-9 female connector</li>
<li>Serial USB on 5-pin Mini-B connector</li>
<li>Pulse-per-second on the RS232 DCD pin (negative-going)</li>
<li>Pulse-per-second on 100mil header (positive-going) and unpopulated SMA connector, drives 2.5V into a 50 ohm load or 5V into a high-impedance load</li>
<li>4-pin header with logic-level (3.3V) serial and PPS &#8211; use with Arduino, Raspberry Pi, or other microcontrollers alongside your PC</li>
<li>Board has same shape and mounting holes as RT/RSMT board, and mounts directly on top</li>
<li>Windows and Mac OS drivers for USB connectivity are available from <a href="http://www.ftdichip.com/Drivers/VCP.htm">FTDI</a> . No drivers required for operation under Linux.</li>
<li>Revision 4 and earlier: Windows drivers available from <a href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en546923">Microchip</a>
</ul>
<h3>Source</h3>
<p>PPS Piggy is open-source hardware, provided under the<br />
<a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 license</a>.<br />
It was developed with Altium Designer but a PDF of the schematic as well as the<br />
Gerber and NC Drill outputs is provided below. The current revision is number 5.2.</p>
<p><a href="http://hg.partiallystapled.com/circuits/pps_piggy/raw-file/26469e08b28b/out/production.PDF">Schematic PDF</a> (revision 5.2)<br />
<a href="http://partiallystapled.com/pub/pps_piggy/pps_piggy_v5_2_bundle.zip">Source Bundle</a> (revision 5.2)<br />
<a href="http://hg.partiallystapled.com/circuits/pps_piggy">Mercurial source control repository</a></p>

<a href='https://partiallystapled.com/2012/08/pps-piggy/piggy5_front/'><img width="150" height="70" src="https://partiallystapled.com/wp-content/uploads/2013/04/piggy5_front.jpg" class="attachment-thumbnail" alt="piggy5_front" /></a>
<a href='https://partiallystapled.com/2012/08/pps-piggy/piggy5_angle2/'><img width="150" height="104" src="https://partiallystapled.com/wp-content/uploads/2013/04/piggy5_angle2.jpg" class="attachment-thumbnail" alt="piggy5_angle2" /></a>

]]></content:encoded>
			<wfw:commentRss>https://partiallystapled.com/2012/08/pps-piggy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Digi-Key Dorkery version 0.6</title>
		<link>https://partiallystapled.com/2012/05/digi-key-dorkery-version-0-6/</link>
		<comments>https://partiallystapled.com/2012/05/digi-key-dorkery-version-0-6/#comments</comments>
		<pubDate>Sun, 27 May 2012 00:00:00 +0000</pubDate>
		<dc:creator><![CDATA[gxti]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://partiallystapled.com/?p=5</guid>
		<description><![CDATA[This script adds a few much-needed features to the Digi-Key search interface. Get it Here Current feature list for version 0.6: Checks &#8220;In Stock&#8221; when opening a category page Deselects bulk packaging types like &#8220;Tape &#38; Reel&#8221; when opening a category page Adds a checkbox]]></description>
				<content:encoded><![CDATA[<p>This script adds a few much-needed features to the Digi-Key search interface.<a href="/dorkery/digi-key_dorkery.user.js"><br />
</a></p>
<p><a href="/dorkery/digi-key_dorkery.user.js">Get it Here</a></p>
<p>Current feature list for version 0.6:</p>
<ul>
<li>Checks &#8220;In Stock&#8221; when opening a category page</li>
<li>Deselects bulk packaging types like &#8220;Tape &amp; Reel&#8221; when opening a category page</li>
<li>Adds a checkbox interface to several &#8220;features&#8221; fields, enabling much faster filtering</li>
<li>Adds shortcut links for &#8220;sort by price&#8221; to product listings</li>
</ul>
<p>Changes in version 0.6:</p>
<ul>
<li>Updated to work with the new modifications to the Digi-Key site.</li>
</ul>
<p>Suggestions welcome!</p>
<p><img alt="" src="/content/2011/03/dkfilter2.png" /></p>
]]></content:encoded>
			<wfw:commentRss>https://partiallystapled.com/2012/05/digi-key-dorkery-version-0-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A basic ARM toolchain from scratch</title>
		<link>https://partiallystapled.com/2011/11/a-basic-arm-toolchain-from-scratch/</link>
		<comments>https://partiallystapled.com/2011/11/a-basic-arm-toolchain-from-scratch/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 00:00:26 +0000</pubDate>
		<dc:creator><![CDATA[gxti]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://partiallystapled.com/?p=18</guid>
		<description><![CDATA[Anyone working with ARM microcontrollers will inevitably run into the problem of acquiring a working compiler suite for their device. Many resort to prebuilt &#8220;freebie&#8221; suites from vendors, and an unlucky few try to roll their own and give up. This quick tutorial will hopefully]]></description>
				<content:encoded><![CDATA[<p>Anyone working with ARM microcontrollers will inevitably run into the<br />
problem of acquiring a working compiler suite for their device. Many resort to<br />
prebuilt &#8220;freebie&#8221; suites from vendors, and an unlucky few try to roll their<br />
own and give up. This quick tutorial will hopefully save some heartache for<br />
those who like to know where their bits came from.</p>
<p>The goal will be to build a complete toolchain with working gcc, binutils,<br />
and uClibc, sufficient to compile both OS-less microcontroller firmware and<br />
high-level linux software.</p>
<h4>Step 1: Setup</h4>
<p>This bootstrap will be done in a simple directory tree that keeps clean<br />
source trees separate from build directories. This makes it trivial to nuke a<br />
dir and start over if you make a mistake. First, you will need a top-level<br />
directory. Mine is <tt>~/armcross2</tt>. Then, you will need these<br />
subdirectories:</p>
<ul>
<li>source &#8211; Original source trees</li>
<li>build &#8211; Scratch space for builds</li>
<li>sysroot &#8211; Install root for target binaries</li>
<li>tools &#8211; Install prefix for build binaries</li>
</ul>
<p>Once those are created, download and unpack your sources into the<br />
<tt>source</tt> directory. I will be using the following, which were the latest<br />
at the time:</p>
<ul>
<li><a href="http://ftp.gnu.org/gnu/binutils/binutils-2.21.1.tar.bz2">binutils 2.21.1a</a></li>
<li><a href="http://mirrors-us.seosue.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.bz2">gcc 4.6.2</a></li>
<li><a href="http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.1.tar.bz2">linux 3.1</a></li>
<li><a href="http://uclibc.org/downloads/uClibc-0.9.32.tar.bz2">uClibc 0.9.32</a></li>
</ul>
<p>Next, create a script in the top directory called <tt>env.sh</tt> . This<br />
will hold environment variables for convenience, and must be executed first<br />
every time you open a terminal to be sure that they are set. In it, place the<br />
following:</p>
<pre class="codesnip">top=~/armcross2  # Change me
target=arm-linux-uclibceabi
arch=arm
tools=$top/tools
sysroot=$top/sysroot
export PATH=$tools/bin:/usr/bin:/bin
[ -z "$oldps1" ] &amp;&amp; oldps1="$PS1"
PS1="(toolchain) $oldps1"</pre>
<p>Don&#8217;t change the target unless you like pain. I could explain what it means,<br />
but it really boils down to how different tools interpret it, and most of the<br />
target-related problems tend to come from gcc which is no fun at all. Now load<br />
your environment with the &#8220;.&#8221; command (that&#8217;s a single period):</p>
<pre class="codesnip">.  env.sh</pre>
<p>The <tt>PS1</tt> line causes the terminal prompt to change so that you know<br />
your environment is loaded. Now you&#8217;re ready to compile.</p>
<h4>Step 2: binutils</h4>
<p>binutils, as its name implies, is a suite of tools for manipulating and<br />
inspecting program binaries. It includes the linker, assembler, and tools for<br />
converting object code to various formats that one might need.</p>
<p>To compile and install it, execute these commands:</p>
<pre class="codesnip">cd $top/build
mkdir binutils; cd binutils
../../source/binutils-*/configure \
  --target=$target \
  --prefix=$tools \
  --with-sysroot=$sysroot
make -j4
make install</pre>
<h4>Step 3: linux headers</h4>
<p>There are two important sets of headers on a linux system, one comes from<br />
libc and the other comes from the kernel. Neither are terribly important when<br />
you have no operating system but gcc won&#8217;t compile without them. First comes<br />
the kernel headers.</p>
<pre class="codesnip">cd $top/build
mkdir linux; cd linux
make -C ../../source/linux-*/ O=`pwd` headers_install \
  ARCH=$arch CROSS_COMPILE=$target- \
  INSTALL_HDR_PATH=$sysroot/usr/</pre>
<h4>Step 4: gcc bootstrap</h4>
<p>A full toolchain bootstrap requires building GCC 3 separate times. In<br />
theory this first build is sufficient to produce microcontroller firmware,<br />
however in my experience it is too difficult to use since it seems to not have<br />
enough information about where headers are located.</p>
<pre class="codesnip">cd $top/build
mkdir gcc-1; cd gcc-1
../../source/gcc-*/configure \
  --target=$target \
  --prefix=$tools \
  --without-headers --with-newlib --disable-shared \
  --disable-threads --disable-libssp --disable-libgomp \
  --disable-libmudflap --disable-libquadmath \
  --enable-languages=c
make -j4 all-gcc
make install-gcc</pre>
<h4>Step 5: libc headers</h4>
<p>Next the libc headers need to be installed. This will involve first<br />
configuring uClibc, which has a menu-driven system identical to that used by<br />
the kernel. Use the arrow keys to navigate, enter to select, and press escape<br />
twice to go back to the previous menu.</p>
<pre class="codesnip">cd $top/build
mkdir uclibc; cd uclibc
make -C ../../source/uClibc-*/ O=`pwd` menuconfig</pre>
<p>Now configure as follows: First, set the &#8220;Target Architecture&#8221; to arm.<br />
Then enter the &#8220;features and options&#8221; submenu and set &#8220;Target Processor Endianness&#8221;<br />
to &#8220;Little Endian&#8221;. Go up a level and enter the &#8220;General Library Settings&#8221;<br />
menu, and set &#8220;Thread support&#8221; to &#8220;older (stable) version of linuxthreads&#8221;. You<br />
don&#8217;t have to have a libc with threading support, but if it is disabled you<br />
will need to adjust the <tt>configure</tt> options to gcc parts 2 and 3.<br />
Finally, back out and save your configuration, then complete the installation:</p>
<pre class="codesnip">make -C ../../source/uClibc-*/ O=`pwd` install_headers install_startfiles \
  DESTDIR=$sysroot CROSS=$target- \
  RUNTIME_PREFIX=/ DEVEL_PREFIX=/usr/ STRIPTOOL=true \
  KERNEL_HEADERS=$sysroot/usr/include</pre>
<h4>Step 6: gcc, Part 2</h4>
<p>First, a dirty trick. In order to compile all the components of gcc, a libc<br />
is required. But libc hasn&#8217;t been built yet, and can&#8217;t be until gcc #2 is done.<br />
What to do? Fake it. A <tt>libc.so</tt> with no contents will be created first,<br />
which will placate the linker well enough to get gcc built, and then the real<br />
libc will be built in the next step.</p>
<pre class="codesnip">$target-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o $sysroot/usr/lib/libc.so
cd $top/build
mkdir gcc-2; cd gcc-2
../../source/gcc-*/configure \
  --target=$target \
  --prefix=$tools \
  --with-sysroot=$sysroot \
  --disable-libssp --disable-libgomp --disable-libmudflap \
  --disable-libquadmath --enable-languages=c
make -j4
make install</pre>
<h4>Step 7: libc</h4>
<p>Next, the final libc will be built.</p>
<pre class="codesnip">cd $top/build/uclibc
make -C ../../source/uClibc-*/ O=`pwd` all install -j4 \
  DESTDIR=$sysroot CROSS=$target- \
  RUNTIME_PREFIX=/ DEVEL_PREFIX=/usr/ STRIPTOOL=true \
  KERNEL_HEADERS=$sysroot/usr/include</pre>
<h4>Step 8: gcc, Part 3</h4>
<p>Now the third and final gcc will be built against the new libc and with all<br />
features enabled. One more hack is required; as documented <a href="http://gcc.gnu.org/ml/gcc-patches/2007-11/msg01560.html">here</a> and <a href="http://gcc.gnu.org/ml/gcc/2008-03/msg00611.html">here</a> a configure<br />
script must be modified to not run a test it is unable to execute.</p>
<pre class="codesnip">cd $top/build
mkdir gcc-3; cd gcc-3
../../source/gcc-*/configure \
  --target=$target \
  --prefix=$tools \
  --with-sysroot=$sysroot \
  --enable-__cxa_atexit \
  --disable-libssp --disable-libgomp --disable-libmudflap \
  --enable-languages=c,c++
make -j4
make install</pre>
<h4>Step 9: Profit!!</h4>
<p>If you made it this far, you have gcc compiled and installed into your tools<br />
directory. Congratulations! All you have to do to use it, is add your<br />
<tt>tools/bin</tt> directory to PATH and prefix toolchain commands with your<br />
target setting (in this case, <tt>arm-linux-uclibceabi-</tt>). You can check<br />
out a makefile I used for a Cortex-M3 device<br />
<a href="http://hg.partiallystapled.com/circuits/spinny/file/01a3d14fd68b/code/Makefile">here</a></p>
]]></content:encoded>
			<wfw:commentRss>https://partiallystapled.com/2011/11/a-basic-arm-toolchain-from-scratch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP network install menu using gPXE and pxelinux</title>
		<link>https://partiallystapled.com/2011/05/http-network-install-menu-using-gpxe-and-pxelinux/</link>
		<comments>https://partiallystapled.com/2011/05/http-network-install-menu-using-gpxe-and-pxelinux/#comments</comments>
		<pubDate>Wed, 25 May 2011 00:00:03 +0000</pubDate>
		<dc:creator><![CDATA[gxti]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://partiallystapled.com/?p=15</guid>
		<description><![CDATA[One cool feature of syslinux, the bootloader commonly used on Linux install media, is pxelinux &#8212; a form of the loader that runs in the Preboot Execution Environment, allowing systems on a LAN to boot into a menu of OS installers and tools. pxelinux can]]></description>
				<content:encoded><![CDATA[<p>One cool feature of syslinux, the bootloader commonly used on Linux install<br />
media, is pxelinux &#8212; a form of the loader that runs in the Preboot Execution<br />
Environment, allowing systems on a LAN to boot into a menu of OS installers<br />
and tools.<br />
pxelinux can also integrate with gPXE, an open-source embedded network stack<br />
designed to replace the factory ROMs on network cards with advanced features<br />
like HTTP support but also capable of building into many bootable image<br />
formats including ISO and hard-disk images.</p>
<p>What I hacked on today is a way to configure gPXE to fetch all of the<br />
pxelinux confguration over HTTP rather than the traditional TFTP, thus<br />
creating the possibility of bootstrapping an installer over the internet.<br />
To make this more useful in practice, instead of creating a PXE image which<br />
would require a functioning DHCP server to launch I created a disk image that can be loaded onto a USB key or virtual flash device such as those found on DRAC or iLO management cards. This means I can now remotely flash gpxelinux onto a server and network boot into an install of Fedora or Scientific Linux, for example.</p>
<p>To get started, first set up a typical pxelinux environment and make it<br />
reachable via HTTP. Then build a gPXE image with a URL to that environment<br />
hardcoded in it using these steps:</p>
<pre class="codesnip">git clone git://git.kernel.org/pub/scm/boot/syslinux/syslinux.git
make
cd gpxe/src

cat &gt;netinst.gpxe &lt;&lt;EOD
#!gpxe
dhcp net0
set 209:string pxelinux.cfg/default
set 210:string http://my.http.server/pxeroot/
imgload pxelinux.0
boot pxelinux.0
EOD

make bin/gpxe.sdsk EMBEDDED_IMAGE=netinst.gpxe,../../core/pxelinux.0 NO_WERROR=1</pre>
<p>You can then upload gpxe.sdsk to a DRAC Virtual Flash. Alternately, replace<br />
&#8220;gpxe.sdsk&#8221; with &#8220;gpxe.dsk&#8221; for a hard drive image or &#8220;gpxe.usb&#8221; for a USB-key<br />
friendly output. I found the sdsk (floppy image) format to work best with the<br />
DRAC&#8217;s Virtual Flash device.</p>
<p>Some tips:</p>
<ul>
<li>Many Dell servers ship with Broadcom NICs which require firmware to<br />
function correctly. I could not reliably pull down files using gPXE with<br />
one of these NICs. The gPXE project is purportedly working on improving this<br />
as a Google Summer of Code project. You will need to change &#8216;net0&#8217; to<br />
e.g. &#8216;net2&#8217; if you have additional non-Broadcom NICs that you wish to boot<br />
from.</li>
<li>You can change the &#8216;dhcp&#8217; line in the gPXE script to configure a static IP<br />
instead, see <a href="http://etherboot.org/wiki/scripting">the gPXE wiki page on scripting</a> for examples.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://partiallystapled.com/2011/05/http-network-install-menu-using-gpxe-and-pxelinux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

 Served from: partiallystapled.com @ 2015-10-03 01:48:10 by W3 Total Cache -->