[conspire] pizza-boxes and Etch (broken ESP kernel module)

Peter Knaggs peter.knaggs at gmail.com
Sun Apr 22 22:38:08 PDT 2007

> So now I'm off researching this mysterious "netboot" method,
> which I guess I should have done before, as it sounds quite tempting...

Eh well, although netboot turned out to be interesting to get going,
it wasn't any panacea for the Etch install problem, so I ended up
installing Sarge instead. It even turns out that the only Sarge installer
that actually works is the very old "debian-31r0a-sparc-netinst.iso"
released back in June 2005. Despite the "netinst" name, that installer
then let me select the final release CDs of Sarge (the ones I ended up
using were: debian-update-3.1r5-sparc-1.iso, debian-update-3.1r5-sparc-2.iso,
debian-update-3.1r5-sparc-3.iso, debian-31r5-sparc-binary-1.iso,
and debian-31r5-sparc-binary-2.iso).

I guess I'll be staying on Sarge for sparc32 until I figure out what's going
on with Etch. It seems that support for sparc32 is in danger of being dropped
after Etch.

How to netboot a SparcStation 20
OK, so I'm pretty rusty at netboot. Here's how it went:

First, on the SparcStation 20 machine, I had to switch the ethernet
connection away from the 100-baseT "HappyMeal" (HME) card and over to
the built-in 10-baseT interface.

Then I set up another machine (let's call it "rarp-server") on the same
subnet, and installed the "rarpd" package:

  apt-get install rarpd

Then I edited /etc/ethers on the rarp-server machine, and added the
MAC adderss of the SparcStation along with its name:

root at rarp-server:# cat /etc/ethers
08:00:20:78:54:32 sparc20system

I also have a dhcp server already set up on the same subnet, so I
added the following lines to its configuration:

  filename "/srv/tftp/boot.img";
  server-name "rarp-server";
  next-server rarp-server;

So now the section for the "sparc20system" machine (the one which I'm trying
to netboot), looks like this:

host sparc20system {
  filename "/srv/tftp/boot.img";
  server-name "rarp-server";
  next-server rarp-server;
  hardware ethernet 08:00:20:78:54:32;
  fixed-address sparc20system;
  option domain-name "penlug.org";
  option domain-name-servers;
  option routers;

I restarted the dbcp server using:

  invoke-rc.d dhcp3-server restart

Now we need to set up the tftp server:

  apt-get install netkit-inetd
  apt-get install tftpd
  cd /srv/tftp
  wget http://ftp.egr.msu.edu/debian/dists/etch/main/installer-sparc/current//images/sparc32/netboot/2.6/boot.img
  ln -s boot.img 0A000169.SUN4M

It needs the file to have the name "0A000169.SUN4M" because when the netboot
client makes a tftp request, it looks for a file that is the hexadecimal number
of its current IP address ("" is "0A000169"), followed by an .ARCH
suffix). The hexadecimal number should use capital characters.
Of course, we could use wireshark running on the tftp server machine
to figure out what filename the sparcStation 20 system is looking for
when it netboots. Or we could be lazy, and just look in /var/log/syslog
for an entry like this:

  Apr 21 15:08:07 rarp-server tftpd[17997]: tftpd: trying to get file:

Anyways, all the configuration is now set up, and we're ready to netboot...

We netboot using "net-tpe" instead of "boot net". To make sure that
the client is checking to see if it can establish a link to the network
switch before issuing its RARP request, we can set the PROM option
"tpe-link-test?" setting to "true", as follows:

  setenv tpe-link-test? true

The abbreviation "TPE" here is Sun-speak for "twisted pair ethernet", as
opposed to the old "AUI" (the thick coaxial cable stuff -- the _real_ ethernet
for all the kids out there).

So now to actually netboot, at the "ok" prompt of the sparcStation 20,
(which you can get to by pressing "Stop A", or if you're connected over
a serial port by issuing a "send brk" via telnet), and then enter this
magical command:

  boot net-tpe

If you see the following problem message repeatedly, it means your rarpd
isn't working properly: "Timeout waiting for ARP/RARP packet"
You should see something like this:

<#0> ok boot net-tpe:dhcp
Resetting ...

SPARCstation 20 MP (2 X 390Z55), No Keyboard
ROM Rev. 2.22, 256 MB memory installed, Serial #7891017.
Ethernet address 8:0:20:78:54:32, Host ID: 72783412.

Rebooting with command: net-tpe:dhcp
Boot device: /iommu/sbus/ledma at f,400010:tpe/le at f,c00000:dhcp  File and args:
Lost Carrier  (transceiver cable problem?)
Twisted pair cable problem or hub link-test disabled.
Use the PROM command "help ethernet" for more information.

ARP/RARP send failed.  Check Ethernet cable and transceiver.
Boot device: /iommu/sbus/ledma at f,400010:tpe/le at f,c00000:dhcp  File and args:
PROMLIB: obio_ranges 5
Booting Linux...
PROMLIB: Sun Boot Prom Version 3 Revision 2
Linux version 2.6.18-4-sparc32 (Debian 2.6.18.dfsg.1-11)
(waldi at debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian
4.1.1-21)) #1 Wed Feb 21 14:49:39 UTC 2007
TYPE: Sun4m SparcStation10/20
Ethernet address: 8:0:20:78:54:32
Boot time fixup v1.6. 4/Mar/98 Jakub Jelinek (jj at ultra.linux.cz).
Patching kernel for srmmu[TI Viking/MXCC]/iommu
126MB HIGHMEM available.
PROM: Built device tree with 26496 bytes of memory.
Power off control detected.
Built 1 zonelists.  Total pages: 64108
Kernel command line:
PID hash table entries: 512 (order: 9, 2048 bytes)
start_kernel(): bug: interrupts were enabled early
Console: colour dummy device 80x25
Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
Memory: 248492k/261068k available (1636k kernel code, 12332k reserved,
400k data, 136k init, 129996k highmem)
Mount-cache hash table entries: 512
checking if image is initramfs... it is
Freeing initrd memory: 2252k freed
NET: Registered protocol family 16
IOMMU: impl 1 vers 3 table 0xf0cc0000[262144 B] map [65536 b]
sbus0: Clock 25.0 MHz
dma0: Revision 2
dma1: Revision 2
dma2: HME DVMA gate array
ioremap: done with statics, switching to malloc
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 4096 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 4096 bind 2048)
TCP reno registered
highmem bounce pool size: 64 pages
VFS: Disk quotas dquot_6.5.1
Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
Initializing Cryptographic API
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
Console: switching to colour frame buffer device 144x56
/obio/cgfourteen at 2,0: cgfourteen at 0:fc000000, 8MB
ffd5bb70: ttyS0 at MMIO 0xf1100000 (irq = 44) is a zs
Console: ttyS0 (SunZilog zs0)
ffd5bb70: ttyS1 at MMIO 0xf1100004 (irq = 44) is a zs
ffd5bc50: Keyboard at MMIO f1000000 (irq = 44) is a zs
ffd5bc50: Mouse at MMIO f1000004 (irq = 44) is a zs
Floppy drive(s): fd0 is 1.44M
FDC 0 is a National Semiconductor PC87306
RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
rtc_sun_init: Registered Mostek RTC driver.
mice: PS/2 mouse device common for all mice
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
Freeing unused kernel memory: 136k freed
Starting system log daemon: syslogd, klogd.

After going through all the usual prompts, when it comes time
to load the disk driver, well, in the end the Etch kernel just hangs:

  ┌───────────────┤ Detecting disks and all other hardware ├────────────────┐
  │                                                                         │
  │                                    2%                                   │
  │                                                                         │
  │  Loading module 'esp' for 'ESP SCSI'...                                 │
  │                                                                         │

Going back to the old "debian-31r0a-sparc-netinst.iso", everything works fine,
albiet a lot slower now that the Sarge repositories are no longer available
and we have to install from CDs.

More information about the conspire mailing list