You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

572 lines
36 KiB

<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" />
<title>Debian on Soekris - Strugglers</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="generator" content="MediaWiki 1.23.5" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="Strugglers (en)" />
<link rel="EditURI" type="application/rsd+xml" href="http://strugglers.net/w/api.php?action=rsd" />
<link rel="copyright" href="http://creativecommons.org/licenses/by-sa/2.5/" />
<link rel="alternate" type="application/atom+xml" title="Strugglers Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="stylesheet" href="http://strugglers.net/w/load.php?debug=false&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.skinning.interface%7Cmediawiki.ui.button%7Cskins.vector.styles&amp;only=styles&amp;skin=vector&amp;*" />
<meta name="ResourceLoaderDynamicStyles" content="" />
<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: wiki:resourceloader:filter:minify-css:7:29b70323345a439ab9ed7007e0c178a6 */</style>
<script src="http://strugglers.net/w/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=vector&amp;*"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Debian_on_Soekris","wgTitle":"Debian on Soekris","wgCurRevisionId":1469,"wgRevisionId":1469,"wgArticleId":1324,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Debian","Sysadmin"],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"Debian_on_Soekris","wgIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[]});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"editfont":"default","editondblclick":0,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":1,"extendwatchlist":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nickname":"","norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rows":25,"showhiddencats":0,"shownumberswatching":1,"showtoolbar":1,"skin":"vector","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":1,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,
"useeditwarning":1,"prefershttps":1,"language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":false,"watchToken":false});},{},{});
/* cache key: wiki:resourceloader:filter:minify-js:7:8d7e903275f4fc5a5ad6387c1fbe7337 */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax","skins.vector.js"]);
}</script>
<!--[if lt IE 7]><style type="text/css">body{behavior:url("/w/skins/vector/csshover.min.htc")}</style><![endif]--></head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-Debian_on_Soekris skin-vector action-view vector-animateLayout">
<div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<div id="content" class="mw-body" role="main">
<a id="top"></a>
<div id="mw-js-message" style="display:none;"></div>
<h1 id="firstHeading" class="firstHeading" lang="en"><span dir="auto">Debian on Soekris</span></h1>
<div id="bodyContent">
<div id="siteSub">From Strugglers</div>
<div id="contentSub"></div>
<div id="jump-to-nav" class="mw-jump">
Jump to: <a href="#mw-navigation">navigation</a>, <a href="#p-search">search</a>
</div>
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Net4801_tops.jpg" class="image"><img alt="" src="/w/images/thumb/3/3d/Net4801_tops.jpg/180px-Net4801_tops.jpg" width="180" height="198" class="thumbimage" srcset="/w/images/3/3d/Net4801_tops.jpg 1.5x, /w/images/3/3d/Net4801_tops.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Net4801_tops.jpg" class="internal" title="Enlarge"><img src="/w/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Soekris net4801</div></div></div>
<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Net4801_front_case.jpg" class="image"><img alt="" src="/w/images/thumb/2/2b/Net4801_front_case.jpg/180px-Net4801_front_case.jpg" width="180" height="136" class="thumbimage" srcset="/w/images/thumb/2/2b/Net4801_front_case.jpg/270px-Net4801_front_case.jpg 1.5x, /w/images/thumb/2/2b/Net4801_front_case.jpg/360px-Net4801_front_case.jpg 2x" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Net4801_front_case.jpg" class="internal" title="Enlarge"><img src="/w/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Front of the net4801 case</div></div></div>
<p>Recently I bought a <a rel="nofollow" class="external text" href="http://soekris.com/net4801.htm">Soekris net4801</a> from <a rel="nofollow" class="external text" href="https://kd85.com/soekris.html">kd85.com</a>. This article is about my experiences installing <a href="http://www.wikipedia.org/wiki/Debian" class="extiw" title="wikipedia:Debian">Debian</a> sarge onto it.
</p>
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#What_is_it.3F"><span class="tocnumber">1</span> <span class="toctext">What is it?</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#Why.3F"><span class="tocnumber">2</span> <span class="toctext">Why?</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="#Installation"><span class="tocnumber">3</span> <span class="toctext">Installation</span></a>
<ul>
<li class="toclevel-2 tocsection-4"><a href="#Preparing_the_net4801"><span class="tocnumber">3.1</span> <span class="toctext">Preparing the net4801</span></a></li>
<li class="toclevel-2 tocsection-5"><a href="#DHCP"><span class="tocnumber">3.2</span> <span class="toctext">DHCP</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#TFTP"><span class="tocnumber">3.3</span> <span class="toctext">TFTP</span></a></li>
<li class="toclevel-2 tocsection-7"><a href="#Installing_Debian"><span class="tocnumber">3.4</span> <span class="toctext">Installing Debian</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="#Custom_kernel"><span class="tocnumber">3.5</span> <span class="toctext">Custom kernel</span></a>
<ul>
<li class="toclevel-3 tocsection-9"><a href="#CPU_and_architecture"><span class="tocnumber">3.5.1</span> <span class="toctext">CPU and architecture</span></a></li>
<li class="toclevel-3 tocsection-10"><a href="#Suspend_modulation"><span class="tocnumber">3.5.2</span> <span class="toctext">Suspend modulation</span></a></li>
<li class="toclevel-3 tocsection-11"><a href="#IDE_chipset"><span class="tocnumber">3.5.3</span> <span class="toctext">IDE chipset</span></a></li>
<li class="toclevel-3 tocsection-12"><a href="#Ethernet"><span class="tocnumber">3.5.4</span> <span class="toctext">Ethernet</span></a></li>
<li class="toclevel-3 tocsection-13"><a href="#USB"><span class="tocnumber">3.5.5</span> <span class="toctext">USB</span></a></li>
<li class="toclevel-3 tocsection-14"><a href="#Serial"><span class="tocnumber">3.5.6</span> <span class="toctext">Serial</span></a></li>
<li class="toclevel-3 tocsection-15"><a href="#Miscellaneous"><span class="tocnumber">3.5.7</span> <span class="toctext">Miscellaneous</span></a></li>
<li class="toclevel-3 tocsection-16"><a href="#TSC_autohalt_bug"><span class="tocnumber">3.5.8</span> <span class="toctext">TSC autohalt bug</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-17"><a href="#Compilation"><span class="tocnumber">3.6</span> <span class="toctext">Compilation</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-18"><a href="#Still_to_come.21"><span class="tocnumber">4</span> <span class="toctext">Still to come!</span></a></li>
</ul>
</div>
<h2><span class="mw-headline" id="What_is_it.3F">What is it?</span></h2>
<p>Soekris boards are essentially complete x86 computers on a single board. The net4801 offers the following on its main board:
</p>
<ul>
<li> 266MHz <a href="http://www.wikipedia.org/wiki/Geode_(processor)" class="extiw" title="wikipedia:Geode (processor)">Geode</a> CPU
</li>
<li> Up to 3 100M ethernet ports (NatSemi DP83816)
</li>
<li> <a href="http://www.wikipedia.org/wiki/CompactFlash" class="extiw" title="wikipedia:CompactFlash">CompactFlash</a> type I/II socket
</li>
<li> 44 pin IDE interface supporting UDMA 33
</li>
<li> Up to 256MB RAM soldered onto the board
</li>
<li> 2 serial (only one has a DB9 connector, the other is just a header)
</li>
<li> 1 USB 1.1
</li>
<li> 1 3.3v PCI slot
</li>
<li> 1 Mini-PCI type III socket
</li>
</ul>
<p>All that on a board measuring just 13.2 x 14.5cm.
</p><p>Notice there are no VGA, keyboard or mouse connectors. All communication with the net4801 goes over serial, or by normal network means once you've installed an OS on it.
</p><p>The model I bought had 128MB RAM, 3 ethernet, and came with a case 21.6 x 15 x 3cm, and I made sure to get a PSU with a UK plug! I bought a 512M CompactFlash card from elsewhere.
</p>
<h2><span class="mw-headline" id="Why.3F">Why?</span></h2>
<p>The practical goal was to get a pretty much fully-functioning Linux box onto small low-power hardware with no moving parts, to replace my home firewall/DSL router/<a href="http://www.wikipedia.org/wiki/NAT" class="extiw" title="wikipedia:NAT">NAT</a> gateway that I had running on an old PC. With no moving parts it would be silent, energy-efficient and hopefully very reliable.
</p><p>Note however that for what they are, Soekris products are very expensive! My order, after the 21% tax of Belgium (where kd85.com is) and shipping to UK, came to just over 250 Euro - and that's before the cost of the CF is counted. If you just want a Linux box that can do DSL, routing, firewalling and NAT then you will find it much cheaper to get something like a <a rel="nofollow" class="external text" href="http://www.linksys.com/products/product.asp?prid=508&amp;scid=35">Linksys WRT54G</a> and install <a rel="nofollow" class="external text" href="http://openwrt.org/">OpenWRT</a> firmware on it. Alternatively if you wanted a full machine to install your chosen operating system on then you could build a mini-ITX-based machine. That would cost more, but you'd get a much faster CPU and more memory.
</p><p>But the geek in me wanted to play with installing Debian over <a href="http://www.wikipedia.org/wiki/PXE" class="extiw" title="wikipedia:PXE">PXE</a>, having a familiar Linux distribution installed how I wanted, with a serial console to provide some administrative comforts (if you're the type of person that finds administering things over serial better than using some web interface that is...).
</p><p>There are a variety of Soekris boards and add-ons, so you can add a wifi card to make a wlan access point, or a crypto card to make a <a href="http://www.wikipedia.org/wiki/VPN" class="extiw" title="wikipedia:VPN">VPN</a> concentrator, or just add an extra 4-port ethernet to make a bigger router/firewall. The basic net4801 on its own was enough for my purposes.
</p>
<h2><span class="mw-headline" id="Installation">Installation</span></h2>
<p>Most of the installation instructions I gleaned from the following excellent sites:
</p>
<ul>
<li> <a rel="nofollow" class="external free" href="http://roland.entierement.nu/index.php/archives/2005/02/16/debian-on-soekris-howto/">http://roland.entierement.nu/index.php/archives/2005/02/16/debian-on-soekris-howto/</a>
</li>
<li> <a rel="nofollow" class="external free" href="http://www.davidcourtney.org/soekris/debian/">http://www.davidcourtney.org/soekris/debian/</a>
</li>
</ul>
<p>Things needed:
</p>
<ul>
<li> A server that can run <a href="http://www.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol" class="extiw" title="wikipedia:Dynamic Host Configuration Protocol">DHCP</a> and <a href="http://www.wikipedia.org/wiki/TFTP" class="extiw" title="wikipedia:TFTP">TFTP</a> on the same network that the net4801 would be plugged into
</li>
<li> Somewhere to get Debian from (in my case an Internet mirror, but no doubt you could set up a local mirror).
</li>
<li> A null modem cable
</li>
<li> Somewhere to plug the null modem cable into that has a terminal emulator (minicom works).
</li>
<li> A toothpick or something of similar size is useful to trigger the reset button
</li>
</ul>
<h3><span class="mw-headline" id="Preparing_the_net4801">Preparing the net4801</span></h3>
<p>I plugged an ethernet cable into the net4801's eth0, the null modem cable into the net4801's serial port, the other end into my laptop, and started a terminal emulator. The default settings for the net4801's serial console are 19200 8N1. After setting my terminal emulator to that, I then plugged the power into the net4801. I saw something like this:
</p>
<pre>
POST: 0123456789bcefghipajklnopq,,,tvwxy
comBIOS ver. 1.28 20050529 Copyright (C) 2000-2005 Soekris Engineering.
net4801
CPU Geode 266 Mhz 0128 Mbyte Memory
Pri Mas TOSHIBA THNCF512MPG LBA 993-16-63 500 Mbyte
Slot Vend Dev ClassRev Cmd Stat CL LT HT Base1 Base2 Int
-------------------------------------------------------------------
0:00:0 1078 0001 06000000 0107 0280 00 00 00 00000000 00000000
0:06:0 100B 0020 02000000 0107 0290 00 3F 00 0000E101 A0000000 10
0:07:0 100B 0020 02000000 0107 0290 00 3F 00 0000E201 A0001000 10
0:08:0 100B 0020 02000000 0107 0290 00 3F 00 0000E301 A0002000 10
0:18:2 100B 0502 01018001 0005 0280 00 00 00 00000000 00000000
0:19:0 0E11 A0F8 0C031008 0117 0280 08 38 00 A0003000 00000000 11
5 Seconds to automatic boot. Press Ctrl-P for entering Monitor.
</pre>
<p>I hit Ctrl-P to get into the comBIOS.
</p><p>The first comBIOS setting to change is the serial speed; the easiest way to make every piece of software involved in booting happy is to have it all set to 9600 8N1:
</p>
<pre>
&gt; set ConSpeed 9600
&gt; reboot
</pre>
<p>At this point I had to alter my terminal emulator to 9600 as well of course.
</p>
<h3><span class="mw-headline" id="DHCP">DHCP</span></h3>
<p>I was planning to install over DHCP/PXE so for that I needed to know the MAC address of the ethernet card. An easy way to do that is to tell it to boot over the network. Ctrl-P again then:
</p>
<pre>
&gt; boot f0
</pre>
<p>The net4801 printed its MAC address to the console and started looking for a DHCP server.
</p><p>Over on my DHCP server, since I'm using ISC dhcpd, the following went into <tt>dhcpd.conf</tt>:
</p>
<pre>
host pride {
hardware ethernet 00:00:24:C4:36:DC;
fixed-address 192.168.0.7;
filename &quot;soekpxe.0&quot;;
}
</pre>
<p>At this point I rebooted the Soekris again and did <tt>boot f0</tt> to be sure that it was able to get an IP address from DHCP.
</p>
<h3><span class="mw-headline" id="TFTP">TFTP</span></h3>
<p>Back on my DHCP server, I installed a TFTP server. My DHCP server is actually <a href="http://www.wikipedia.org/wiki/Fedora_Core" class="extiw" title="wikipedia:Fedora Core">Fedora Core</a> where the correct package is <tt>tftp-server</tt>, but on Debian I would use <tt>tftpd-hpa</tt>.
</p><p><tt>/tftpboot</tt> is the default path for files to get served out of via TFTP. As I was installing Debian I needed to get the netboot installer image, <tt>netboot.tar.gz</tt> from <a rel="nofollow" class="external text" href="http://ftp.debian.org/debian/dists/stable/main/installer-i386/current/images/netboot/">a Debian download site</a>, and unpacked it in <tt>/tftpboot</tt>:
</p>
<pre>
drwxr-xr-x 4 root root 4096 Jun 10 00:35 .
drwxr-xr-x 26 root root 4096 Jun 9 23:49 ..
drwxr-xr-x 3 root root 4096 Mar 5 19:00 debian-installer/
lrwxrwxrwx 1 root root 32 Jun 10 00:00 pxelinux.0 -&gt;
debian-installer/i386/pxelinux.0
drwxr-xr-x 2 root root 4096 Jun 17 20:47 pxelinux.cfg -&gt;
debian-installer/i386/pxelinux.cfg
</pre>
<p>The <tt>pxelinux.0</tt> that comes with netboot does not work very well with the Soekris boards. A working image can be found as <tt>pxelinux.0.gz</tt> at <a rel="nofollow" class="external free" href="http://centerclick.org/net4801/pxelinux/">http://centerclick.org/net4801/pxelinux/</a> which is also mirrored at <a rel="nofollow" class="external free" href="http://strugglers.net/~andy/soekris/net4801/pxelinux/">http://strugglers.net/~andy/soekris/net4801/pxelinux/</a>. I downloaded that, uncompressed it and renamed it to <tt>soekpxe.0</tt>.
</p><p>By default after unpacking <tt>netboot.tar.gz</tt>, <tt>pxelinux.cfg</tt> is symlinked to <tt>debian-installer/i386/pxelinux.cfg</tt>. I found that this would not work for me, halting just before I would expect the <tt>boot:</tt> prompt to appear. I had to change the symlink instead to <tt>debian-installer/i386/pxelinux.cfg.serial-9600</tt>.
</p>
<h3><span class="mw-headline" id="Installing_Debian">Installing Debian</span></h3>
<p>With everything now in place, I was finally ready to do the install:
</p>
<pre>
POST: 0123456789bcefghipajklnopq,,,tvwxy
comBIOS ver. 1.28 20050529 Copyright (C) 2000-2005 Soekris Engineering.
net4801
CPU Geode 266 Mhz 0128 Mbyte Memory
Pri Mas TOSHIBA THNCF512MPG LBA 993-16-63 500 Mbyte
Slot Vend Dev ClassRev Cmd Stat CL LT HT Base1 Base2 Int
-------------------------------------------------------------------
0:00:0 1078 0001 06000000 0107 0280 00 00 00 00000000 00000000
0:06:0 100B 0020 02000000 0107 0290 00 3F 00 0000E101 A0000000 10
0:07:0 100B 0020 02000000 0107 0290 00 3F 00 0000E201 A0001000 10
0:08:0 100B 0020 02000000 0107 0290 00 3F 00 0000E301 A0002000 10
0:18:2 100B 0502 01018001 0005 0280 00 00 00 00000000 00000000
0:19:0 0E11 A0F8 0C031008 0117 0280 08 38 00 A0003000 00000000 11
5 Seconds to automatic boot. Press Ctrl-P for entering Monitor.
&gt; boot f0
NSC DP83815/DP83816 Fast Ethernet UNDI, v1.03
Copyright (C) 2002, 2003 National Semiconductor Corporation
All rights reserved.
Pre-boot eXecution Environment PXE-2.0 (build 082)
Copyright (C) 1997-2000 Intel Corporation
CLIENT MAC ADDR: 00 00 24 C4 36 DC
CLIENT IP: 192.168.0.7 MASK: 255.255.255.0 DHCP IP: 192.168.0.4
PXELINUX 2.06 0x3fb30aea Copyright (C) 1994-2003 H. Peter Anvin
Press control and F then 1 for help, or ENTER to boot:
</pre>
<p>At this point I typed "expert26" to get the "expert" Debian Installer with 2.6 kernel.
</p><p>The install proceeded just the same as for any minimal server install. Only select the minimum needed! That means just openssh really. One thing I completely forgot about before rebooting was to set the serial side of things up.
</p><p><b><tt>/boot/grub/menu.lst</tt></b>:
</p>
<pre>
[...]
serial --unit=0 --speed=9600
terminal serial
[...]
# kopt=root=/dev/hda1 ro console=ttyS0,9600n81
[...]
</pre>
<pre>
# update-grub
</pre>
<p>Make sure that <tt>ttyS0</tt> is in <tt>/etc/securetty</tt> so you can log in as root from there.
</p><p>And make sure you have something like:
</p>
<pre>
T0:23:respawn:/sbin/getty -L ttyS0 9600 vt102
</pre>
<p>in <tt>/etc/inittab</tt> so there is a getty on the serial port at all.
</p><p>And after all that you should have a working Debian install, probably in about 250MB of space. You could make it much smaller if you really wanted.
</p>
<h3><span class="mw-headline" id="Custom_kernel">Custom kernel</span></h3>
<p>The next thing I wanted to do was build a custom kernel. This would be much smaller, stripped down, and would take advantage of some features specific to the net4801's CPU. I found it advisable to run at least a 2.6.12 kernel because a number of bug fixes and Geode-specific enhancements had been added in that release.
</p><p>I found useful information about a suitable kernel config at <a rel="nofollow" class="external free" href="http://dev.gentoo.org/~brix/papers/net4801/net4801.html">http://dev.gentoo.org/~brix/papers/net4801/net4801.html</a>
</p><p>Here follows the important parts of the kernel configuration.
</p>
<h4><span class="mw-headline" id="CPU_and_architecture">CPU and architecture</span></h4>
<p>The Geode SC1100 is a 586-class CPU.
</p>
<ul>
<li> Subarchitecture Type (PC-compatible) (<tt>CONFIG_X86_PC</tt>)
</li>
<li> Processor family (GeodeGX1) (<tt>CONFIG_MGEODEGX1</tt>)
</li>
<li> PCI support (<tt>CONFIG_PCI</tt>)
</li>
<li> PCI device name database (<tt>CONFIG_PCI_NAMES</tt>)
</li>
<li> ISA support (<tt>CONFIG_ISA</tt>)
</li>
<li> NatSemi SCx200 support (<tt>CONFIG_SCx200</tt>)
</li>
</ul>
<h4><span class="mw-headline" id="Suspend_modulation">Suspend modulation</span></h4>
<p>Suspend modulation allows the CPU to run slower and consume less power when it is not busy.
</p>
<ul>
<li> CPU Frequency scaling (<tt>CONFIG_CPU_FREQ</tt>)
</li>
<li> Cyrix MediaGX/NatSemi Geode Suspend Modulation (<tt>CONFIG_X86_GX_SUSPMOD</tt>)
</li>
</ul>
<h4><span class="mw-headline" id="IDE_chipset">IDE chipset</span></h4>
<p>I needed the following options to use CompactFlash. Note that the CF is not hot pluggable. It also doesn't support DMA, although a hard drive should.
</p>
<ul>
<li> ATA/ATAPI/MFM/RLL support (<tt>CONFIG_IDE</tt>)
</li>
<li> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support (<tt>CONFIG_BLK_DEV_IDE</tt>)
</li>
<li> Include IDE/ATA-2 DISK support (<tt>CONFIG_BLK_DEV_IDEDISK</tt>)
</li>
<li> PCI IDE chipset support (<tt>CONFIG_BLK_DEV_IDEPCI</tt>)
</li>
<li> Sharing PCI IDE interrupts support (<tt>CONFIG_IDEPCI_SHARE_IRQ</tt>)
</li>
<li> National SCx200 chipset support (<tt>CONFIG_BLK_DEV_SC1200</tt>)
</li>
</ul>
<h4><span class="mw-headline" id="Ethernet">Ethernet</span></h4>
<ul>
<li> Ethernet (10 or 100Mbit) (<tt>CONFIG_NET_ETHERNET</tt>)
</li>
<li> Generic Media Independent Interface device support (<tt>CONFIG_MII</tt>)
</li>
<li> EISA, VLB, PCI and on board controllers (<tt>CONFIG_NET_PCI</tt>)
</li>
<li> National Semiconductor DP8381x series PCI Ethernet support (<tt>CONFIG_NATSEMI</tt>)
</li>
</ul>
<h4><span class="mw-headline" id="USB">USB</span></h4>
<p>I had no intention of using the USB support so I didn't bother putting support in my kernel. If I had wanted to though, I would have needed the following:
</p>
<ul>
<li> Support for Host-side USB (<tt>CONFIG_USB</tt>)
</li>
<li> OHCI HCD support (<tt>CONFIG_USB_OHCI_HCD</tt>)
</li>
</ul>
<h4><span class="mw-headline" id="Serial">Serial</span></h4>
<p>The net4801 has two 8250 serial ports.
</p>
<ul>
<li> 8250/16550 and compatible serial support (<tt>CONFIG_SERIAL_8250</tt>)
</li>
<li> Maximum number of non-legacy 8250/16550 serial ports (2) (<tt>CONFIG_SERIAL_8250_NR_UARTS</tt>)
</li>
</ul>
<p>And for serial console:
</p>
<ul>
<li> Console on 8250/16550 and compatible serial port (<tt>CONFIG_SERIAL_8250_CONSOLE</tt>)
</li>
</ul>
<h4><span class="mw-headline" id="Miscellaneous">Miscellaneous</span></h4>
<p>The net4801 has a red error LED which is controllable from the GPIO on the SC1100.
</p>
<ul>
<li> NatSemi SCx200 GPIO Support (<tt>CONFIG_SCx200_GPIO</tt>)
</li>
</ul>
<p>Using a kernel with the aove support and having a device created as follows:
</p>
<pre>
# mknod -m 600 /dev/error_led c 254 20
</pre>
<p>It is possible to turn the error LED on by writing 1 to the device and turn it off by writing 0. e.g.:
</p>
<pre>
# echo 1 &gt; /dev/error_led
# echo 0 &gt; /dev/error_led
</pre>
<p>There is also a hardware watchdog feature which can be used with a user-space watchdog program to reboot the board if problems are detected.
</p>
<ul>
<li> Watchdog Timer Support (<tt>CONFIG_WATCHDOG</tt>)
</li>
<li> National Semiconductor SCx200 Watchdog (<tt>CONFIG_SCx200_WDT</tt>)
</li>
</ul>
<p>Finally, there is also a realtime clock:
</p>
<ul>
<li> Enhanced Real Time Clock Support (<tt>CONFIG_RTC</tt>)
</li>
</ul>
<h4><span class="mw-headline" id="TSC_autohalt_bug">TSC autohalt bug</span></h4>
<p>I only found the following out much later on but for those using this article as a guide I better point this out now.
</p><p>There is a hardware bug with the SC1100 and similar CPUs where the TSC (timestamp counter) does not increment when the CPU enters autohalt state. Autohalt state is what happens when the CPU is idle, and it serves to reduce power consumption of the board. The effect is that the system clock appears to run very slow, often losing hours in a day. Even when using <a href="http://www.wikipedia.org/wiki/NTP" class="extiw" title="wikipedia:NTP">NTP</a>, it will continually lose sync.
</p><p>A workaround would be to disable CPU frequency scaling, which would result in the CPU running at full speed at all times and the maximum amount of power being used.
</p><p>Fortunately for those that do not wish to do that there is a patch available which applies cleanly to 2.6.12, and may even be already present in later kernels. It can be found at <a rel="nofollow" class="external free" href="http://www.gnusto.com/scx200-hr-timer.html">http://www.gnusto.com/scx200-hr-timer.html</a>
</p>
<pre>
# cd /usr/src
# cp -a linux-2.6.12 linux-2.6.12-scx200-hr-timer
# cd linux-2.6.12-scx200-hr-timer
# wget -qO - http://www.gnusto.com/src/scx200-hr-timer-2.6.12-rc6-6.diff.bz2 | \
bunzip2 -c | patch -p1
patching file arch/i386/Kconfig
patching file arch/i386/kernel/scx200.c
patching file arch/i386/kernel/timers/Makefile
patching file arch/i386/kernel/timers/timer.c
patching file arch/i386/kernel/timers/timer_scx200hr.c
patching file include/asm-i386/timer.h
patching file include/linux/scx200.h
</pre>
<p>This provides a new kernel config option.
</p>
<ul>
<li> NatSemi SCx200 27MHz High-Resolution Timer Support (<tt>CONFIG_SCx200HR_TIMER</tt>)
</li>
</ul>
<p>When booting you will see something like:
</p>
<pre>
scx200hr: timer not yet accessible; will probe later.
Detected 266.647 MHz processor.
Using tsc for high-res timesource
</pre>
<pre>
scx200: NatSemi SCx200 Driver
scx200: GPIO base 0x6100
scx200: Configuration Block base 0x6000
switching to scx200 high-resolution timer (255961 cpt)
</pre>
<p>Your net4801 should now keep perfect time.
</p>
<h3><span class="mw-headline" id="Compilation">Compilation</span></h3>
<p>So after all that I had some kernel source, patched and ready to configure and compile. I recommend you do this on a normal machine, as it will be much faster than the net4801's 266MHz Geode (probably about equivalent to a Pentium 133MHz)!
</p>
<pre>
$ cd /usr/src/linux-2.6.12-scx200-hr-timer
$ sudo make-kpkg --config=menuconfig --revision=1 \
--append-to-version=-scx200-hr-timer-pride kernel_image
</pre>
<p>That left me with <tt>kernel-image-2.6.12-scx200-hr-timer-pride_1_i386.deb</tt> in <tt>/usr/src/</tt>. I transferred that to my net4801 and installed it:
</p>
<pre>
$ sudo dpkg -i kernel-image-2.6.12-scx200-hr-timer-pride_1_i386.deb
</pre>
<p>That updates <tt>/boot/grub/menu.lst</tt>, too.
</p>
<h2><span class="mw-headline" id="Still_to_come.21">Still to come!</span></h2>
<p>How I set up a read-only root filesystem.
</p>
<!--
NewPP limit report
CPU time usage: 0.068 seconds
Real time usage: 0.084 seconds
Preprocessor visited node count: 215/1000000
Preprocessor generated node count: 396/1000000
Post‐expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Highest expansion depth: 2/40
Expensive parser function count: 0/100
-->
<!-- Saved in parser cache with key wiki:pcache:idhash:1324-0!*!*!!en!2!* and timestamp 20200427180449 and revision id 1469
-->
</div> <div class="printfooter">
Retrieved from "<a href="http://strugglers.net/w/index.php?title=Debian_on_Soekris&amp;oldid=1469">http://strugglers.net/w/index.php?title=Debian_on_Soekris&amp;oldid=1469</a>" </div>
<div id='catlinks' class='catlinks'><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/w/index.php?title=Category:Debian&amp;action=edit&amp;redlink=1" class="new" title="Category:Debian (page does not exist)">Debian</a></li><li><a href="/wiki/Category:Sysadmin" title="Category:Sysadmin">Sysadmin</a></li></ul></div></div> <div class="visualClear"></div>
</div>
</div>
<div id="mw-navigation">
<h2>Navigation menu</h2>
<div id="mw-head">
<div id="p-personal" role="navigation" class="" aria-labelledby="p-personal-label">
<h3 id="p-personal-label">Personal tools</h3>
<ul>
<li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Debian+on+Soekris" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o">Log in</a></li> </ul>
</div>
<div id="left-navigation">
<div id="p-namespaces" role="navigation" class="vectorTabs" aria-labelledby="p-namespaces-label">
<h3 id="p-namespaces-label">Namespaces</h3>
<ul>
<li id="ca-nstab-main" class="selected"><span><a href="/wiki/Debian_on_Soekris" title="View the content page [c]" accesskey="c">Page</a></span></li>
<li id="ca-talk" class="new"><span><a href="/w/index.php?title=Talk:Debian_on_Soekris&amp;action=edit&amp;redlink=1" title="Discussion about the content page [t]" accesskey="t">Discussion</a></span></li>
</ul>
</div>
<div id="p-variants" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-variants-label">
<h3 id="mw-vector-current-variant">
</h3>
<h3 id="p-variants-label"><span>Variants</span><a href="#"></a></h3>
<div class="menu">
<ul>
</ul>
</div>
</div>
</div>
<div id="right-navigation">
<div id="p-views" role="navigation" class="vectorTabs" aria-labelledby="p-views-label">
<h3 id="p-views-label">Views</h3>
<ul>
<li id="ca-view" class="selected"><span><a href="/wiki/Debian_on_Soekris" >Read</a></span></li>
<li id="ca-viewsource"><span><a href="/w/index.php?title=Debian_on_Soekris&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e">View source</a></span></li>
<li id="ca-history" class="collapsible"><span><a href="/w/index.php?title=Debian_on_Soekris&amp;action=history" title="Past revisions of this page [h]" accesskey="h">View history</a></span></li>
</ul>
</div>
<div id="p-cactions" role="navigation" class="vectorMenu emptyPortlet" aria-labelledby="p-cactions-label">
<h3 id="p-cactions-label"><span>Actions</span><a href="#"></a></h3>
<div class="menu">
<ul>
</ul>
</div>
</div>
<div id="p-search" role="search">
<h3><label for="searchInput">Search</label></h3>
<form action="/w/index.php" id="searchform">
<div id="simpleSearch">
<input type="search" name="search" placeholder="Search" title="Search Strugglers [f]" accesskey="f" id="searchInput" /><input type="hidden" value="Special:Search" name="title" /><input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton mw-fallbackSearchButton" /><input type="submit" name="go" value="Go" title="Go to a page with this exact name if exists" id="searchButton" class="searchButton" /> </div>
</form>
</div>
</div>
</div>
<div id="mw-panel">
<div id="p-logo" role="banner"><a style="background-image: url(/w/images/5/5b/arnie-135px.png);" href="/wiki/Main_Page" title="Visit the main page"></a></div>
<div class="portal" role="navigation" id='p-navigation' aria-labelledby='p-navigation-label'>
<h3 id='p-navigation-label'>Navigation</h3>
<div class="body">
<ul>
<li id="n-mainpage-description"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li>
<li id="n-recentchanges"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li>
<li id="n-randompage"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x">Random page</a></li>
<li id="n-help"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" title="The place to find out">Help</a></li>
</ul>
</div>
</div>
<div class="portal" role="navigation" id='p-tb' aria-labelledby='p-tb-label'>
<h3 id='p-tb-label'>Tools</h3>
<div class="body">
<ul>
<li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/Debian_on_Soekris" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li>
<li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/Debian_on_Soekris" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
<li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li>
<li id="t-print"><a href="/w/index.php?title=Debian_on_Soekris&amp;printable=yes" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li>
<li id="t-permalink"><a href="/w/index.php?title=Debian_on_Soekris&amp;oldid=1469" title="Permanent link to this revision of the page">Permanent link</a></li>
<li id="t-info"><a href="/w/index.php?title=Debian_on_Soekris&amp;action=info">Page information</a></li>
</ul>
</div>
</div>
</div>
</div>
<div id="footer" role="contentinfo">
<ul id="footer-info">
<li id="footer-info-viewcount">This page has been accessed 22,646 times.</li>
<li id="footer-info-credits">This page was last modified 14:24, 13 January 2006 by <a href="/wiki/User:Andy" title="User:Andy">Andy Smith</a>.</li>
<li id="footer-info-copyright">Content is available under <a class="external" rel="nofollow" href="http://creativecommons.org/licenses/by-sa/2.5/">Attribution-ShareAlike 2.5</a> unless otherwise noted.</li>
</ul>
<ul id="footer-places">
<li id="footer-places-privacy"><a href="/wiki/Strugglers:Privacy_policy" title="Strugglers:Privacy policy">Privacy policy</a></li>
<li id="footer-places-about"><a href="/wiki/Strugglers:About" title="Strugglers:About">About Strugglers</a></li>
<li id="footer-places-disclaimer"><a href="/wiki/Strugglers:General_disclaimer" title="Strugglers:General disclaimer">Disclaimers</a></li>
</ul>
<ul id="footer-icons" class="noprint">
<li id="footer-copyrightico">
<a href="http://creativecommons.org/licenses/by-sa/2.5/"><img src="http://creativecommons.org/images/public/somerights20.png" alt="Attribution-ShareAlike 2.5" width="88" height="31" /></a>
</li>
<li id="footer-poweredbyico">
<a href="//www.mediawiki.org/"><img src="/w/skins/common/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31" /></a>
</li>
</ul>
<div style="clear:both"></div>
</div>
<script>/*<![CDATA[*/window.jQuery && jQuery.ready();/*]]>*/</script><script>if(window.mw){
mw.loader.state({"site":"ready","user":"ready","user.groups":"ready"});
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","skins.vector.collapsibleNav"],null,true);
}</script>
<script>if(window.mw){
mw.config.set({"wgBackendResponseTime":109});
}</script>
</body>
</html>