<?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>Blaine Fleming</title>
	<atom:link href="http://www.selfishman.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.selfishman.net</link>
	<description>The Selfish Man</description>
	<lastBuildDate>Thu, 14 Jan 2010 01:45:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Best irssi script EVER</title>
		<link>http://www.selfishman.net/2009/11/04/best-irssi-script-ever/</link>
		<comments>http://www.selfishman.net/2009/11/04/best-irssi-script-ever/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 21:18:00 +0000</pubDate>
		<dc:creator>Blaine Fleming</dc:creator>
				<category><![CDATA[IRC]]></category>
		<category><![CDATA[irssi]]></category>

		<guid isPermaLink="false">http://www.selfishman.net/?p=70</guid>
		<description><![CDATA[Updated: Download the newest version (2.5.urmom) here.
After adding yet another user to my ignore list in irssi I realized that the channels started getting a little too quiet.  Instead of silently ignoring public messages from ignored users I decided to redact their messages instead.  The code for redacted_ignore.pl is:

#!/usr/bin/perl

use strict;
use Irssi;

use vars qw($VERSION [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><strong>Updated:</strong> Download the newest version (2.5.urmom) <a href="http://urmom.selfishman.net/redacted_ignore.txt">here</a>.</p>
<p>After adding yet another user to my ignore list in irssi I realized that the channels started getting a little too quiet.  Instead of silently ignoring public messages from ignored users I decided to redact their messages instead.  The code for redacted_ignore.pl is:<br />
<code><br />
#!/usr/bin/perl<br />
<br />
use strict;<br />
use Irssi;<br />
<br />
use vars qw($VERSION %IRSSI);<br />
<br />
$VERSION = "0.000000001";<br />
%IRSSI = (<br />
authors =&gt; 'Blaine Fleming',<br />
contact =&gt; 'blaine@selfishman.net',<br />
name =&gt; 'redacted_ignore',<br />
description =&gt; 'script to redact public messages from ignored users',<br />
license =&gt; 'GPL',<br />
url =&gt; 'http://selfishman.net',<br />
changed =&gt; '2009-11-03',<br />
changes =&gt; 'FIRST POST!'<br />
);<br />
<br />
Irssi::theme_register(['redact', "{msgnick \$0}" . ""]);<br />
<br />
sub do_urmom_in_public {<br />
my ($srv, $msg, $nick, $addr, $tgt) = @_;<br />
$srv-&gt;printformat($tgt, MSGLEVEL_PUBLIC, "redact", $nick)<br />
if $srv-&gt;ignore_check($nick, $addr, $tgt, $msg, MSGLEVEL_PUBLIC);<br />
}<br />
<br />
Irssi::print("redact public messages from ignored users") ;<br />
<br />
Irssi::signal_add_first("message public", "do_urmom_in_public") ;<br />
</code><br />
This script is also available for download from <a href="http://urmom.selfishman.net/redacted_ignore.txt">here</a>.</p>
<p>To use it just ignore users normally using &#039;/ignore user&#039;.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.selfishman.net/2009/11/04/best-irssi-script-ever/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>History meme</title>
		<link>http://www.selfishman.net/2008/09/25/history-meme/</link>
		<comments>http://www.selfishman.net/2008/09/25/history-meme/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 20:58:49 +0000</pubDate>
		<dc:creator>Blaine Fleming</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.selfishman.net/?p=35</guid>
		<description><![CDATA[I&#039;ve noticed several other people showing their most frequently used shell commands so here it is from a few of my systems.
One of my spamtraps that publishes all the data to a webpage at http://www.spameatingmonkey.net :
selfishman@spamtrap:~$ history&#124;awk '{a[$2]++} END{for(i in a){printf "%5d\t%s \n",a[i],i}}'&#124;sort -rn&#124;head
137   vi
46   ls
39   exit
29   /etc/init.d/qpsmtpd
27   cd
25   dig
23   tail
23   sudo
16   mysql
13   ps

The system [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>I&#039;ve noticed several other people showing their most frequently used shell commands so here it is from a few of my systems.</p>
<p>One of my spamtraps that publishes all the data to a webpage at http://www.spameatingmonkey.net :</p>
<p><code>selfishman@spamtrap:~$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s \n",a[i],i}}'|sort -rn|head<br />
137   vi<br />
46   ls<br />
39   exit<br />
29   /etc/init.d/qpsmtpd<br />
27   cd<br />
25   dig<br />
23   tail<br />
23   sudo<br />
16   mysql<br />
13   ps<br />
</code></p>
<p>The system that creates the <a title="Spam Eating Monkey" href="http://www.spameatingmonkey.com">SEM</a> fresh domains list:</p>
<p><code>selfishman@spammonkey2:~$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s \n",a[i],i}}'|sort -rn|head<br />
109   vi<br />
85   ls<br />
35   dig<br />
23   screen<br />
23   rm<br />
20   ./prep-name-zone.pl<br />
17   cd<br />
14   exit<br />
13   cp<br />
10   ./test.sh<br />
</code></p>
<p>Finally, my primary testing and development system:</p>
<p><code>selfishman@rabidmonkey1:~$ history|awk '{a[$2]++} END{for(i in a){printf "%5d\t%s \n",a[i],i}}'|sort -rn|head<br />
72   ls<br />
60   vi<br />
49   time<br />
40   cd<br />
34   exit<br />
29   sudo<br />
24   cat<br />
17   ./john<br />
13   gcc<br />
12   crontab<br />
</code></p>
<p>I don&#039;t remember running JTR that often!</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.selfishman.net/2008/09/25/history-meme/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem with Dell Inspiron 1501 keypress every second</title>
		<link>http://www.selfishman.net/2008/06/24/problem-with-dell-inspiron-1501-keypress-every-second/</link>
		<comments>http://www.selfishman.net/2008/06/24/problem-with-dell-inspiron-1501-keypress-every-second/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 21:11:42 +0000</pubDate>
		<dc:creator>Blaine Fleming</dc:creator>
				<category><![CDATA[Dell]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://www.selfishman.net/?p=28</guid>
		<description><![CDATA[
Update: Pull the power cord and battery and let it sit for a while.  You may need to remove the BIOS battery (located under the keyboard) as well. It turns out this was the fix that I accidentally used when ripping apart the laptop trying to figure out the problem.
My primary laptop is a Dell [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><a href="http://www.selfishman.net/wp-content/uploads/2008/06/keyboardtest.jpg"><img class="size-thumbnail wp-image-31 alignright" style="float: right;" title="Passmark\'s Keyboard Test on Inspiron 1501" src="http://www.selfishman.net/wp-content/uploads/2008/06/keyboardtest.jpg" alt="Passmark\'s Keyboard Test on Inspiron 1501" width="150" height="118" /></a></p>
<p><strong>Update: Pull the power cord and battery and let it sit for a while.  You may need to remove the BIOS battery (located under the keyboard) as well.</strong> It turns out this was the fix that I accidentally used when ripping apart the laptop trying to figure out the problem.</p>
<p>My primary laptop is a Dell Inspiron 1501 (cheap, I know) and a couple months back it started registering a key being pressed every second. <em>Exactly every second.</em> This made simple things like alt-tabbing through a list of programs difficult as it would cause the alt-tab windows to close.  Copying and pasting from a command prompt was almost impossible with less than a second to do it.  Programs and dialogs were opening behind other windows, sometimes behind their own parent.  Various flavors of linux would even show the &#039;=&#039; key being pressed.  The final problem that got me to look into it was when I was doing remote access using VNC to an old Windows 2000 Pro system at the <a href="http://www.livingstonpubliclibrary.org">Livingston-Park County Public Library</a>.  I clicked on a file and instantly I started getting harassed by Windows to delete the file as the &#039;delete&#039; key was registering.  After a few quick clicks and keystrokes I got out of that and opened up the log I wanted to view.  To my surprise the log was being eaten one character every second.</p>
<p><span id="more-28"></span>When this problem started I had just recently upgraded the RAM from the stock dual 512MB sticks to two 2GB sticks, the harddrive from 120GB to 320GB, VMWare server to the latest version and a handful of other software upgrades.  Searching the web showed many people with the same issue presenting in many flavors of Linux but a few reported it in Windows too.  Unfortunately, nobody had a solution other than change the keyboard map which is just a workaround.</p>
<p>First thing I did was try to detect the key that was actually registering as being pressed with the hopes that maybe something was just making a key stick.  <a href="http://www.passmark.com">Passmark&#039;s</a> <a href="http://www.passmark.com/products/keytest.htm">KeyboardTest</a> showed the Pause key being pressed under the AT107 setting but when set to a Dell laptop showed nothing.  Seeing these results I assumed that Windows was infected with some malware even though I run Windows XP 64-bit Edition.  To make sure it wasn&#039;t an OS problem I tried to boot into the Windows XP 32-bit version I have installed on the same drive.  I was allowed to login and immediately log back out.  Even more convinced that it was malware, I grabbed a Ubuntu 7.10 Desktop live CD and started it up only to find the problem was still there.</p>
<p>Since it wasn&#039;t a software problem I thought hardware was the next thing to test.  So before calling Dell and going through the routine&#039;s with them I swapped my keyboard for one from a compatible system and the problem was still there.  I put in my old hard drive and old RAM and the problem persisted.  At this point it had to be a Mainboard problem.  Before calling Dell I decided to check my warranty online and was in luck with 144 days remaining.  While clicking around the site trying to find a working Dell support number I checked the downloads section and noticed a new BIOS version.  The changelog showed no major changes but I grabbed it anyway.  To my surprise after a couple of reboots the problem was gone.</p>
<p>I&#039;m hoping that this problem won&#039;t return and would love to know the source of it.  I upgraded my BIOS when I first received the laptop but that was six months prior to this issue.  I suspect it has something to do with the high precision timer so if it continues I&#039;ll have to disable that setting in the BIOS.  Now I just need to figure out why my Windows XP 32-bit install won&#039;t let me log in.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.selfishman.net/2008/06/24/problem-with-dell-inspiron-1501-keypress-every-second/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>PXE booting a diskless Ubuntu 7.10 (Gutsy Gibbon) client</title>
		<link>http://www.selfishman.net/2007/12/12/pxe-booting-a-diskless-ubuntu-710-gutsy-gibbon-client/</link>
		<comments>http://www.selfishman.net/2007/12/12/pxe-booting-a-diskless-ubuntu-710-gutsy-gibbon-client/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 10:09:26 +0000</pubDate>
		<dc:creator>Blaine Fleming</dc:creator>
				<category><![CDATA[Library]]></category>
		<category><![CDATA[PXE]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.selfishman.net/2007/12/12/pxe-booting-a-diskless-ubuntu-710-gutsy-gibbon-client/</guid>
		<description><![CDATA[ I maintain a network with 10 public access computers for the Livingston-Park County Public Library with plans to buy several more in the next few weeks. Until recently all of these computers were running Windows XP and were secured using software provided by the Gates Foundation. Despite being fully patched, locked down and running [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p><a href="http://www.selfishman.net/wp-content/uploads/2007/12/ubuntuatthelibraryscreenshot.png"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://www.selfishman.net/wp-content/uploads/2007/12/ubuntuatthelibraryscreenshot-thumb.png" border="0" alt="Ubuntu at the Library Screenshot" width="244" height="184" align="right" /></a> I maintain a network with 10 <a href='http://en.wikipedia.org/wiki/public_access_computer'>public access computers</a> for the <a href="http://www.livingstonpubliclibrary.org">Livingston-Park County Public Library</a> with plans to buy several more in the next few weeks. Until recently all of these computers were running Windows XP and were secured using software provided by the Gates Foundation. Despite being fully patched, locked down and running up-to-date antivirus software, <a href='http://en.wikipedia.org/wiki/malware'>malware</a> still found a way to infect these systems. Applying updates every <a href='http://en.wikipedia.org/wiki/Patch_Tuesday'>Patch Tuesday</a> on every computer was consuming most of my time. Even a simple change required me to sit down at each system and make that change, usually fighting the security policy to make it stick.</p>
<p>A few days ago Windows started showing signs of corruption so I decided it was time to reinstall the OS. This time I considered securing them with <a href="http://www.microsoft.com/windows/products/winfamily/sharedaccess/default.mspx">Microsoft SteadyState</a>, a free public access computer security tool. I recently used SteadyState on the new laptops and immediately remembered the problems with Adobe Flash and JAVA. Instead of rebuilding the systems with Windows, I decided to use <a href="http://www.ubuntu.com">Ubuntu</a> as I was already familiar with it and 7.10 (Gutsy Gibbon) was recently released. One hour later I had downloaded, burned, installed <em>and</em> updated Ubuntu on the first computer. At this point I decided to make it boot via PXE. Booting Ubuntu via PXE would allow for one update on one system and all systems would be affected. This means no more wasted time typing the same command on every computer. Hard to argue with that.</p>
<p><span id="more-11"></span><br />
<strong>Requirements</strong></p>
<ul>
<li>A server (preferrably running Linux) capable of running a nfs server and tftpd server (I chose <a href="http://www.centos.org">CentOS 4.5</a>)</li>
<li>Plenty of disk space on the server to hold the full client filesystem (recommend at least 10GB)</li>
<li>Minimum 100Mbps network connection (1Gbps recommended)</li>
<li>A client system with Ubuntu installed and a public user named &#034;public&#034;</li>
</ul>
<p><strong>Setting up the server<br />
</strong>Install the DHCP server, SysLinux and the NFS server as root<br />
<code>yum install dhcp syslinux nfs-utils portmap</code><br />
Download, compile and install the TFTP server<br />
<code>wget http://www.kernel.org/pub/software/network/tftp/tftp-hpa-0.48.tar.gz<br />
tar -xzvf tftp-hpa-0.48.tar.gz<br />
cd tftp-hpa-0.48<br />
./configure<br />
make<br />
make install<br />
cp tftp-xinetd /etc/xinetd.d/tftp<br />
</code><br />
<strong>Configure DHCP server</strong><br />
Your DHCP server needs to be configured to offer the boot file &#034;/tftpboot/pxelinux.0&#034; from the specified TFTP server. In this example, the TFTP server is 192.168.252.1, specified by the &#034;next-server&#034; option.</p>
<p><code># /etc/dhcpd.conf<br />
allow booting;<br />
allow bootp;<br />
authoritative;<br />
default-lease-time 86400;<br />
max-lease-time 86400;<br />
get-lease-hostnames false;<br />
use-host-decl-names on;<br />
ddns-update-style none;<br />
subnet 192.168.252.0 netmask 255.255.255.0 {<br />
option domain-name "lpcpublib.local";<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 192.168.252.255;<br />
option domain-name-servers 208.67.222.222,208.67.220.220;<br />
option routers 192.168.252.1;<br />
range 192.168.252.100 192.168.252.199;<br />
next-server 192.168.252.1;<br />
filename "/pxelinux.0";<br />
}<br />
</code><br />
Start the DHCP server and set it to start at boot. Watch for any errors when starting dhcpd.</p>
<p><code>/etc/init.d/dhcpd start<br />
chkconfig dhcpd on</code></p>
<p><strong>Configure TFTP server<br />
</strong>Edit the tftp entry for xinetd to use larger blocks,enable the service and add verbosity.</p>
<p><code># /etc/xinetd.d/tftp<br />
service tftp<br />
{<br />
socket_type             = dgram<br />
protocol                = udp<br />
wait                    = yes<br />
user                    = root<br />
server                  = /usr/sbin/in.tftpd<br />
server_args             = -v -B 8192 -s /tftpboot<br />
disable                 = no<br />
per_source              = 11<br />
cps                     = 100 2<br />
flags                   = IPv4<br />
}</code></p>
<p>Then restart xinetd and make sure it is set to start at boot.</p>
<p><code>/etc/init.d/xinetd restart<br />
chkconfig xinetd on</code></p>
<p><strong>Configure SysLinux<br />
</strong>We need to download syslinux for the extra components. This step isn&#039;t critical but allows you to build a nice menu system. If you don&#039;t need a boot menu then you can skip to copying files to the &#034;/tftpboot&#034; directory.</p>
<p><code>wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.54.tar.gz<br />
tar -xzvf syslinux-3.54.tar.gz<br />
cd syslinux-3.54<br />
make install</code></p>
<p>Next you need to create your &#034;/tftpboot&#034; directory and place the syslinux components in it.</p>
<p><code>mkdir -p /tftpboot/pxelinux.cfg<br />
mkdir /tftpboot/com32<br />
cp /usr/lib/syslinux/pxelinux.0 /tftpboot/<br />
cp /usr/lib/syslinux/vesamenu.c32 /tftpboot/com32/<br />
mkdir /tftpboot/libubuntu</code</p>
<p><strong>Configure NFS server<br />
</strong>Create your "/nfsroot" directory and a directory for the new filesystem</p>
<p><code>mkdir -p /nfsroot/libubuntu</code></p>
<p>Create the NFS export for the new filesystem. In this example, 192.168.252.0 is the network to be granted access.</p>
<p><code># /etc/exports<br />
/nfsroot/libubuntu      192.168.252.0/255.255.255.0(rw,no_root_squash,async)</code></p>
<p>Export it for use by NFS clients</p>
<p><code>exportfs -vr</code></p>
<p>Start your NFS server and set to run at boot</p>
<p><code>/etc/init.d/nfs start<br />
chkconfig nfs on</code></p>
<p><strong>Create kernel and initrd images<br />
</strong>On the client system, install initramfs-tools and the NFS client utilities</p>
<p><code>sudo apt-get install initramfs-tools nfs-client</code></p>
<p>Configure the system to use NFS boot instead of local</p>
<p><code># /etc/initramfs-tools/initramfs.conf<br />
#<br />
# initramfs.conf<br />
# Configuration file for mkinitramfs(8). See initramfs.conf(5).<br />
#<br />
#<br />
# MODULES: [ most | netboot | dep | list ]<br />
#<br />
# most - Add all framebuffer, acpi, filesystem, and harddrive drivers.<br />
#<br />
# dep - Try and guess which modules to load.<br />
#<br />
# netboot - Add the base modules, network modules, but skip block devices.<br />
#<br />
# list - Only include modules from the 'additional modules' list<br />
#<br />
MODULES=most<br />
# BUSYBOX: [ y | n ]<br />
#<br />
# Use busybox if available.<br />
#<br />
BUSYBOX=y<br />
#<br />
# NFS Section of the config.<br />
#<br />
#<br />
# BOOT: [ local | nfs ]<br />
#<br />
# local - Boot off of local media (harddrive, USB stick).<br />
#<br />
# nfs - Boot using an NFS drive as the root of the drive.<br />
#<br />
BOOT=nfs<br />
#<br />
# DEVICE: ...<br />
#<br />
# Specify the network interface, like eth0<br />
#<br />
DEVICE=eth0<br />
#<br />
# NFSROOT: [ auto | HOST:MOUNT ]<br />
#<br />
NFSROOT=auto</code></p>
<p>Find out what your kernel version, copy it and build the initrd.img.</p>
<p><code>ls -la /boot/vmlinuz*<br />
-rw-r--r--  1 root root 1764280 Oct 14 19:39 /boot/vmlinuz-2.6.22-14-generic<br />
cp /boot/vmlinuz-2.6.22-14-generic ~/<br />
mkinitramfs -o ~/initrd.img-2.6.22-14-generic</code></p>
<p>Copy your initrd.img and kernel to the server's "/tftpboot" directory.</p>
<p><code>scp ~/vmlinuz-2.6.22-14-generic ~/initrd.img-2.6.22-14-generic root@192.168.252.1:/tftpboot/libubuntu</code></p>
<p>Edit your network interface settings to <em>not</em> use DHCP.</p>
<p><code># /etc/network/interfaces<br />
auto lo<br />
iface lo inet loopback<br />
iface eth0 inet manual</code></p>
<p>Copy the filesystem to the NFS server</p>
<p><code>sudo mount -tnfs 192.168.252.1:/nfsroot/libubuntu /mnt<br />
sudo cp -avx / /mnt/<br />
sudo cp -avx /dev/ /mnt/dev/</code></p>
<p>Shutdown the client</p>
<p><code>sudo shutdown -h now</code></p>
<p>On the server, change the "/nfsroot/libubuntu/etc/fstab" file. The "tmpfs" entries allow for system-specific config to reside in memory instead of creating <a href='http://en.wikipedia.org/wiki/race_condition'>race conditions</a>. It also allows anything a public user does to the system to be destroyed on reboot.</p>
<p><code># /nfsroot/libubuntu/etc/fstab<br />
#<br />
# &lt;file system&gt; &lt;mount point&gt;           &lt;type&gt;      &lt;options&gt;                                       &lt;dump&gt;  &lt;pass&gt;<br />
proc            /proc                   proc        defaults,noatime                                0       0<br />
/dev/nfs        /                       nfs         defaults,rw,hard,intr,async,noatime,nodiratime  1       1<br />
none            /tmp                    tmpfs       defaults,size=50M                               0       0<br />
none            /var/run                tmpfs       defaults,size=512k                              0       0<br />
none            /var/lib/gdm            tmpfs       defaults,size=100k                              0       0<br />
none            /var/lib/nfs            tmpfs       defaults,size=16k                               0       0<br />
none            /var/lib/xkb            tmpfs       defaults,size=16k                               0       0<br />
none            /var/lib/alsa           tmpfs       defaults,size=16k                               0       0<br />
none            /var/lib/acpi-support   tmpfs       defaults,size=32k                               0       0<br />
none            /var/lock               tmpfs       defaults,size=96k                               0       0<br />
none            /var/log                tmpfs       defaults,size=1024k                             0       0<br />
none            /var/tmp                tmpfs       defaults,size=512k                              0       0<br />
none            /home/public           tmpfs       defaults,mode=755,uid=1001,gid=1001,size=50M    0       0<br />
none            /media                  tmpfs       defaults,mode=755                               0       0<br />
none            /root                   tmpfs       defaults,mode=755                               0       0<br />
/dev/scd0       /media/cdrom0           udf,iso9660 noauto,users,exec                               0       0<br />
/dev/fd0        /media/disk             ext2,vfat   noauto,users,exec                               0       0</code></p>
<p>Edit "/tftpboot/pxelinux.cfg/default" and add the new entry for our kernel</p>
<p><code># /tftpboot/pxelinux.cfg/libubuntu<br />
menu title Livingston-Park County Public Library, PXE Main Menu<br />
menu background graphics/main.jpg<br />
menu tabmsgrow 22<br />
menu cmdlinerow 22<br />
menu endrow 24<br />
menu color title                1;34;49    #eea0a0ff #cc333355 std<br />
menu color sel                  7;37;40    #ff000000 #bb9999aa all<br />
menu color border               30;44      #ffffffff #00000000 std<br />
menu color pwdheader            31;47      #eeff1010 #20ffffff std<br />
menu color hotkey               35;40      #90ffff00 #00000000 std<br />
menu color hotsel               35;40      #90000000 #bb9999aa all<br />
menu color timeout_msg          35;40      #90ffffff #00000000 none<br />
menu color timeout              31;47      #eeff1010 #00000000 none<br />
prompt 0<br />
noescape 1<br />
allowoptions 0<br />
timeout 50<br />
default com32/vesamenu.c32<br />
label libubuntu<br />
menu label ^Library Ubuntu (GX280)<br />
kernel libubuntu/vmlinuz-2.6.22-14-generic<br />
append root=/dev/nfs initrd=libubuntu/initrd.img-2.6.22-14-generic nfsroot=192.168.252.1:/nfsroot/libubuntu ip=dhcp rw quiet splash</code></p>
<p><strong>Configure the client hardware<br />
</strong>Change the BIOS options on your client computer to boot from NIC/PXE. This option various depending on your hardware.</p>
<p><strong>Test the install<br />
</strong>Start the client and you should automatically get an IP then load the initial boot menu. After 5 seconds the Ubuntu kernel should start loading.</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://www.selfishman.net/2007/12/12/pxe-booting-a-diskless-ubuntu-710-gutsy-gibbon-client/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
