Net Booting a Sharp Actius MM10
This archived page dates from 2004. It is being preserved here in case the knowledge is useful to you, but it is quite likely very out of date.
I picked up a refurbished Sharp Actius MM10 the other day because I’ve badly needed a lightweight PC for some time (I’ve been traveling with both a Mac and a PC recently, and I’ve come close to doing some real damage to my back). This is a great little machine: 2 pounds, and quite a bit of power. (It’s the same system that Emperor Linux uses for their lightweight offering).
The major problem I had was that I couldn’t convince it to boot off the CD-ROM. Read on for complete details about how I got this darn thing to boot.
Update: Do not let Windows XP hibernate–it overwrote the MBR when I let it do this, and I had to netboot again and run LILO.
Update: It wasn’t hibernation–for some reason, the MBR gets overwritten every time I boot into Windows. I think this may be a Windows XP Home (yeah, I know, but I want to see what limitations I can tolerate) behavior. In any case, this page has excellent instructions on launching GRUB from the Windows XP bootloader. Seems to have solved the problem for now!
Using its cradle, I was able to mount the MM10 as a USB drive on my Linux server, create two partitions (/dev/sda5 for the swap, which became /dev/hda5 when I boot it for real; and /dev/sda6 for the root partition, which became /dev/hda6). Then I created the filesystem on /dev/sda6, mounted it, and used cp -ar to copy over everything from an existing Debian installation. After that was done, I set up /etc/fstab:
/dev/hda6 / ext3 errors=remount-ro 0 1
/dev/hda5 none swap sw 0 0
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto user,noauto 0 0
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
I also created a lilo.conf for this, but there wasn’t anything I could do, since I had the drive mounted as an external drive, and the view of things from my Linux server was going to be very different from the view of things when it boots its internal hard drive on its own. However, this little machine is cable of booting off the network, so I did some poking around, and found a copy of an old web page from someone else who got that to work OK. That page led to the SYSLINUX page on PXELINUX, a nice little bootloader that works over the network.
Using the instructions on that page, I set up a Debian system as the DHCP server and TFTP server. Here’s what my /tftpboot directory looks like on the Debian server:
bjepson@debian:~$ ls -lR /tftpboot/
/tftpboot/:
total 888
-rw-r--r-- 1 root root 887098 Apr 17 11:57 kernel.boot
-rw-r--r-- 1 root root 9952 Apr 17 11:59 pxelinux.0
drwxr-xr-x 2 root root 4096 Apr 17 11:56 pxelinux.cfg
/tftpboot/pxelinux.cfg: total 4 -rw-r–r– 1 root root 56 Apr 17 11:56 default
I created kernel.boot with cp /boot/vmlinuz-2.4.24 /tftpboot/kernel.boot, and I copied pxelinux.o from /usr/lib/syslinux/pxelinux.0. Here are the contents of /tftpboot/pxelinux.cfg/default:
LABEL linux
KERNEL /kernel.boot
APPEND root=/dev/hda6
I also had to install dhcpd and give my server’s network adapter a static IP address. So here’s what I put in my /etc/network/interfaces:
iface eth0 inet static
address 192.168.10.1
network 192.168.10.0
netmask 255.255.255.0
broadcast 192.168.10.255
and here’s what I put in my /etc/dhcpd.conf (you’ll need to set your Ethernet address to whatever your computer’s address is):
allow booting;
allow bootp;
option domain-name "foofoofoo.net";
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.0;
subnet 192.168.10.0 netmask 255.255.255.0 {
# Group the PXE bootable hosts together
group {
# PXE-specific configuration directives...
next-server 192.168.10.1;
filename "/tftpboot/pxelinux.0";
# You need an entry like this for every host
# unless you're using dynamic addresses
host hostname {
hardware ethernet 08:00:1f:b1:c1:79;
fixed-address 192.168.10.2;
}
}
}
Next, I plugged both computers into the same hub (one that wasn’t plugged into my network–I didn’t want my AirPort Base Station giving my MM10 an address), and restarted /etc/init.d/network and /etc/init.d/dhcp. Next, I booted up my Actius, pressed F12 when the “Press F2” message appeared to get a boot menu, and selected Network Boot. I saw the following in my Debian server’s /var/log/daemon.log, and the next thing I knew, my MM10 had booted into Linux:
Apr 17 12:17:20 debian dhcpd-2.2.x: DHCPDISCOVER from 08:00:1f:b1:c1:79 via eth0
Apr 17 12:17:20 debian dhcpd-2.2.x: DHCPOFFER on 192.168.10.2 to 08:00:1f:b1:c1:79 via eth0
Apr 17 12:17:22 debian dhcpd-2.2.x: DHCPREQUEST for 192.168.10.2 from 08:00:1f:b1:c1:79 via eth0
Apr 17 12:17:22 debian dhcpd-2.2.x: DHCPACK on 192.168.10.2 to 08:00:1f:b1:c1:79 via eth0
Apr 17 12:17:22 debian in.tftpd[4424]: connect from 192.168.10.2
Apr 17 12:17:22 debian tftpd[4424]: Trivial FTP server started (0.6)
Apr 17 12:17:22 debian tftpd[4426]: Serving /tftpboot/pxelinux.0 to 192.168.10.2:2070
Apr 17 12:17:22 debian tftpd[4427]: Serving /tftpboot/pxelinux.0 to 192.168.10.2:2071
Apr 17 12:17:22 debian tftpd[4428]: Serving /tftpboot/pxelinux.cfg/C0A80A02 to 192.168.10.2:57217
Apr 17 12:17:22 debian tftpd[4429]: Serving /tftpboot/pxelinux.cfg/C0A80A0 to 192.168.10.2:57090
Apr 17 12:17:22 debian tftpd[4430]: Serving /tftpboot/pxelinux.cfg/C0A80A to 192.168.10.2:56963
Apr 17 12:17:22 debian tftpd[4431]: Serving /tftpboot/pxelinux.cfg/C0A80 to 192.168.10.2:56836
Apr 17 12:17:22 debian tftpd[4432]: Serving /tftpboot/pxelinux.cfg/C0A8 to 192.168.10.2:56709
Apr 17 12:17:22 debian tftpd[4433]: Serving /tftpboot/pxelinux.cfg/C0A to 192.168.10.2:56582
Apr 17 12:17:22 debian tftpd[4434]: Serving /tftpboot/pxelinux.cfg/C0 to 192.168.10.2:56455
Apr 17 12:17:22 debian tftpd[4435]: Serving /tftpboot/pxelinux.cfg/C to 192.168.10.2:56328
Apr 17 12:17:22 debian tftpd[4436]: Serving /tftpboot/pxelinux.cfg/default to 192.168.10.2:56201
Apr 17 12:17:22 debian tftpd[4437]: Serving /tftpboot//kernel.boot to 192.168.10.2:56202
Apr 17 12:22:22 debian tftpd[4424]: atftpd terminating after 300 seconds
There was a lot more to configure, and there will be a lot more for the next few days, but at least I was booted up. For X11, the trackpad, and more, I suggest you have a look at John Lee’s Gentoo Linux on the Sharp Actius PC-MM10 web page, which has plenty of info on getting the hardware working.