JavaStation Krups Xterm - Booting from Solaris 10

This document assumes that you have a JavaStation Krups and a machine running Solaris 10. At the end of it you will have a netbooting JavaStation that will act as an Xterm.

Setting Up Solaris Software

You fistly need to enable TFTP under Solaris 10, edit:
	/etc/inet/inetd.conf
	
And enable/insert the line:
	tftp    dgram   udp6    wait    root    /usr/sbin/in.tftpd      in.tftpd -s /tftpboot
	
And then enable the service by running:
	inetconv
	
You may have to create the directory /tftpboot, and make sure it has 755 permissions. I tried to get on with the Solaris 10 DHCP server, and failed, unless I am missing something (probably), then why can't Sun provide a simple text file to edit? To that end I used the Blastwave packaged ISC DHCP reference implementation, which can be found here. You will then need to create and edit:
	/opt/csw/etc/dhcpd.con	
	
My configuration file looks like this:
	option domain-name "fermit.org";
	option domain-name-servers amethyst.fermit.org.uk;

	default-lease-time 600;
	max-lease-time 7200;

	group
	{
	   host tigger
	   {
    	      hardware ethernet 08:00:20:94:5e:57;
              filename "SUNW.JSIIep";
              fixed-address tigger; 
	   }
	}
	
Obviously change the "hardware ethernet" and "fixed-address" entries then start the dhcp server:
	/etc/init.d/cswdhcpd start
	
You can also create a symbolic link to /etc/rc2.d to start the DHCP server on boot. The final thing that needs to be done is to export a file system for the JavaStation: Edit:
	/etc/dfs/dfstab
	
And add in:
	share -F nfs -o anon=0,rw /tftpboot
	
If you have not enabled the nfs server already then you'll need to run:
	svcadm -v enable -r network/nfs/server	
	
Run:
	shareall
	
If you update the dfstab and you already have nfs serving enabled.

Populating the tftp Directory

The PROM of a Krups - 3.11.10 is unable to boot a linux kernel directly, and so need the help of a helper application called PROLL. The homepage for PROLL is:

http://people.redhat.com/zaitcev/linux/

Either download proll.krups.ID18, or use the tarball at the bottom of this document. A suitable command if you wanted to grab your own copy would be:

	cd /tftpboot
	wget http://people.redhat.com/zaitcev/linux/proll.krups.ID18 
	
You'll need to make a symlink, from the file the JavaStation expects in /tftpboot:
	ln -s proll.krups.ID18 SUNW.JSIIe	
	
At this point, you could turn the JavaStation on and make sure that you it tries to boot. If you do not see the PROLL box within 30 seconds, something is wrong, and it's time to run snoop. If everything is going to plan, you should see something on the screen like:
	     JavaStation
             OpenBoot 3.11.10, 64 MB memory installed, Serial #9723479.
             Ethernet address 8:0:20:94:5e:57, Host  ID: 80945e57.


	
	


                          PROLL ID18 Krups BOOTP+IGA+SILO
                          Memory 0=0x0[0x2000000] 1=0x2000000[0x2000000] total 64 MB
			  Booting from network.
			  hme0: HAPPY MEAL 8:0:20:94:5E:57
                          BOOTP: Sending request: ok
                          netif_rx: dropping type 26, no func
			  netif_rx: dropping type 26, no func
			  fatal. 
	
At this point PROLL is trying to find a kernel to load, on the server run:
	snoop  | grep .PROL
	
And turn on the JavaStation, when you see PROLL load, you should also see it asking for a file, this is the filename you need to give to the kernel image, you can work it out, but I find it simpler to snoop! Below is the example from my JavaStation:
	moonstone# snoop  | grep .PROL
	Using device /dev/hme (promiscuous mode)
	tigger.fermit.org.uk -> moonstone    TFTP Read "0A000102.PROL" (octet)
	^C
	moonstone# 
	
Now we know the filename, we need to grab a kernel image, after a bit of hunting, this one:

http://www.doorbot.com/guides/linux/sparc/x86install/files/vmlinux-2.4.20_krups.bz2

was found to work. Grab it (again into /tftpboot):

	wget http://www.doorbot.com/guides/linux/sparc/x86install/files/vmlinux-2.4.20_krups.bz2
	bunzip2 vmlinux-2.4.20_krups.bz2
	ln -s vmlinux-2.4.20_krups 0A000102.PROL
	
Or again, use the tftp tarball at the bottom of this document. At this point you should have a tftpboot (assuming you dont have any other files for other systems) that looks like this:
	moonstone# ls -la /tftpboot
	total 3592
	drwxr-xr-x   2 root     root         512 Jan  8 13:51 .
	drwxr-xr-x  30 root     root         512 Jan  8 13:20 ..
	lrwxrwxrwx   1 root     root          20 Jan  8 13:51 0A000102.PROL -> vmlinux-2.4.20_krups
	lrwxrwxrwx   1 root     root          16 Jan  8 13:22 SUNW.JSIIep -> proll.krups.ID18
	-rw-r--r--   1 awr      other      89932 Sep 13  2002 proll.krups.ID18
	-rw-r--r--   1 awr      other    1733696 Sep 24 23:07 vmlinux-2.4.20_krups
	
Power cycling the JavaStation should now see it booting Linux and then it should Kernel Panic on being unable to mount a root filesystem. At this point you can deviate and get a full filesystem if you want more from your JavaStation than just an Xterm. I grabbed this minimal filesystem:

http://www.kevinboone.com/javastation_nfsroot_xserver.tar.gz

	mkdir /tftpboot/javastation_x_root
	cd /tftpboot/javastation_x_root
	wget http://www.kevinboone.com/javastation_nfsroot_xserver.tar.gz
	gunzip javastation_nfsroot_xserver.tar.gz
	tar xf javastation_nfsroot_xserver.tar
	
Again, this is included in my tftpboot tarball. At this point we can set up the directory for the javastation, your IP address will probably be different though:
	cd /tftpboot
	ln -s ln -s javastation_x_root/ 10.0.1.2
	
As the CONFIGURE file within the javastation_nfsroot_xserver.tar states, we need to edit a couple of files, firstly edit:
	/tftpboot/javastation_x_root/etc/XF86Config
	
And modify the "FontPath" directive (3 lines down), make this the box you are intending to run X from, in my case this is a machine called moonstone, my XF86Config line reads:
	FontPath   "tcp/moonstone:7100"
	
You also need to edit:
        /tftpboot/javastation_x_root/etc/XF86Config
        
And modify the last line, to read:
	1:2:respawn:/usr/X11R6/bin/X -query moonstone
	
Again, changing moonstone to your host. The final file you will need to edit is:
	/etc/hosts
	
Add an entry for your X server. You can now re-boot your JavaStation, and it should come up with a login screen. A picture of the machine running (with Pride keeping warm!):

PIC-JavaStation

If you have more than one X server, you can modify your innittab to use a chooser rather than a query, change the file to read:

	1:2:respawn:/usr/X11R6/bin/X -indirect moonstone
	

My tftpboot Directory

A tftpboot structure that does everything you need to run a JavaStation Krups as an Xterm can be found here: tftpboot

Handy Links

These pages cam in rather handy whilst writing this up:
http://people.redhat.com/zaitcev/linux/
http://dubinski-family.org/~jshowto/
http://www.doorbot.com/guides/linux/sparc/x86install/
http://www.kevinboone.com/linux_javastation.html