rescue

I was trying to boot Debian on a Sun Sparc Ultra 10 box yesterday, without success. I got myself this Sparc box from eBay many months ago, but until yesterday it was merely standing around here and taking up valuable space (just like the other dozen or so computers standing around in my room). So I thought I should really make some use of it, finally...

I booted it up and noticed that it came with SunOS 5.8 pre-installed. It boots quite fine into the graphical login prompt, but I don't have the root password (or the password for any other account). So my first task was to reset the root password. But I failed so far.

Out of curiosity I connected the machine to my laptop and ran nmap on it. It has several ports open (e.g. ntp, ssh, X11, nfs, ...), so I could probably try to find a remote root exploit (or run an ssh brute-force attack) and crack it open that way ;) While I might try that later just for the fun of it, I wanted to simply boot a Debian first and change the root password manually. That sounded simpler at first...

Anyways, here's what I tried so far:

Boot into single-user mode

As I had no experience whatsoever with Sparcs, it took me some time to read up all the stuff I needed... After a bit of googling, I found out that I need to press STOP+A to get into the boot prompt (the box has OpenBoot 3.19). There, I can type boot -s to boot into single user mode. Unfortunately, you still need the root password to boot into single-user mode. Argh!

Booting seems to work partially. SILO seems to start fine, and I get to the "boot:" prompt. When I press Enter I get to the point where it says "Loading Linux..." but then the screen turns black and nothing happens anymore (hangup). The same happens when I type "linux" or "rescue" on the "boot:" prompt.

The monitor works fine, SunOS 5.8 can display graphics etc., so it's probably not a hardware problem.

Netboot

After that, I tried to perform a network boot. This was fun and I learned a lot about RARP and TFTP, as I have never played with this stuff before. While the netboot part itself worked, it didn't solve my real problem, unfortunately...

In /etc/ethers I added a line which tells rarpd which MAC address should be assigned to which IP address. I looked up the MAC address of the Sparc box (it's displayed when you boot) and then added "xx:xx:xx:xx:xx:xx 192.168.0.20" to /etc/ethers. I configured my laptop to have the IP address 192.168.0.19: ifconfig eth0 192.168.0.19 broadcast 192.168.0.255 netmask 255.255.255.0. Of course, I plugged an ethernet cable in the Sparc box and in my laptop so they can talk to each other.

This should tell tftpd to serve the Debian netinst boot image from /tftp, but that didn't work for me. So I commented out the "server_args = /tftp" and let tftpd fall back to the default location /tftpboot. You need to reload xinetd after any change: /etc/init.d/xinetd reload. Also, tftpd is compiled with TCP wrapper support, so you have to temporarily allow the respective connections, e.g. by adding "ALL: 192.168.0.20" to /etc/hosts.allow. Don't forget to remove that line again later on!

You need to place that image into /tftpboot using the name under which the Sparc box requests it. I found that name by net-booting the Sparc machine and watching the network traffic with Ethereal on my laptop...

The final steps: boot the Sparc box, type STOP+A, type boot net. The Sparc machine gets the boot image from my laptop just fine (it seems), and I get to the "Loading Linux..." part again. But then I have the same problem as with the CD-ROM boot: the screen turns black, nothing happens anymore...