I-Appliance BBS
The Official Source for Internet Appliance Upgrades and Mods
Amazon Honor System Click Here to Pay Learn More
BBS Main List | Sign In | Sign Up | Search | Help | Linux-Hacker.netReply to Thread | Printer |

Home / I-Opener Areas / I-Opener Technical Stuff
IOP 'diskless' network boot - best way?
How to make an IOP boot onto the net easily.

New MessageIOP 'diskless' network boot - best way? (modified 0 times) shayde
Profile | Email
Hey folks. I'm working on a project where I need a slew of workstations that can be broken down and packed in a small space, moved to a new site, and set up with a minimum of hassle.

The IOP is -perfect- for this application. Small, reasonably fast, runs Linux, gives me a GUI workstation, spiffy. I don't need local disk storage or even sound, but X is very important.

This is close to the ltsp.org stuff, but I'd like input on what the best approach is for using the IOP here.

I have a test machine that I'm tinkering with that has Jailbait on it. This seems pretty close - can I just dupe the sandisk for all the machines I have, and configure it up for each workstation? I suppose I can NFS mount the appropriate dirs from my fileserver, and run the apps I need locally - or I can run up X in xdmcp mode, and query the server and run all the X apps remotely...

Big question though is what do I use for network connectivity? I need -CHEAP-. Can't have the network card cost more than the IOP itself :) The smaller and least hassle the best. Boy, if I could plug a USB cable between the IOP, back to a hub, and to the server, that would be perfect (is there such a thing as TCP/IP over USB?). Failing that, I'd need something that can network boot via bootp, or come up with a minimum of hassle. Should I just dig around for a boxful of D-link parallel ethernet adapters? USB? The less dangly cables and hacked up connections the better (this will be a conference registration system - customers / users will be staring at the back of the terminals :)

Thanks!


Dave Belfer-Shevett -- Stonekeep Consulting -- http://www.stonekeep.com/
08-15-2001 08:49:04

New MessageRE:IOP 'diskless' network boot - best way? (modified 0 times) Programmer
Profile
Jailbait or Midori is probably the best bet. Nothin says cheap like USB ethernet, (which using TCPIP is still relaible, and even stable of late) hide the ethernet itself under a desk or whatever and you have a total of 3 unobtrusive wires connecting the system(Power, yes I know you wanted to get rid of it, USB, and <shudder> keyboard. If you go with a USB keyboard that acts as a hub and has 2 extra ports you could even bring it down to 2 wires, and maybe even mount the usb ethernet in your usb keyboard)
08-15-2001 11:14:32

New MessageRE:IOP 'diskless' network boot - best way? (modified 0 times) Wild_Pencil
Profile | Email
By all means, Jailbait or Midori on the sandisk are the easiest way to go, especially since you're looking for a quick and easy X terminal. Jbaitis deserves huge kudos for creating the Jailbait images.

If you were looking for traditional bootp/dhcp or usb-disk booting through the BIOS, it won't be available anytime soon... I just don't have enough time to devote to BIOS development at the moment.

-WP

08-15-2001 20:27:11

New MessageRE:IOP 'diskless' network boot - best way? (modified 0 times) spikeorama
Profile
If you have a workstation that can act as a server, you can put a kernel image on the Sandisk that gets it's filesystem over NFS from the server. I think the option is something like "Root over NFS". The nice thing about this is that software upgrades are a snap because all the files except for the kernel are on the server. I have 3 IOs set up this way and they work reasonably well for things like web browsing, etc. With just the stock 32 MB RAM, it runs X easily. If you want local sound, you can run XMMS locally with just a little bit of RAM to spare. I tried Jailbait but it was too much trouble to upgrade and the ethernet wasn't stable. Looking at LTSP gave me the idea to just put the kernel on the IO. I guess it depends on the app whether you should run it on the server or locally.
08-18-2001 23:22:26

New MessageRE:IOP 'diskless' network boot - best way? (modified 0 times) shayde
Profile | Email
If you have any more information on the NFS only kernel image, that would be just about perfect. Then I can fiddle with the configs all I want, and actually run things locally. Since the memory is just a socketed chip, i can upgrade them to 128meg without a problem, still at low cost. If we do NFS for everything but the kernel, it means I can run local apps without bogging down my X host.

Pointers? I just took apart the first IOP that i've gotten, and joy, no goo! So i'm psyched. :)


Dave Belfer-Shevett -- Stonekeep Consulting -- http://www.stonekeep.com/
08-23-2001 14:52:42

New MessageRE:IOP 'diskless' network boot - best way? (modified 0 times) spikeorama
Profile
Before you get started, here are some files of interest:
NFS-Root-Client HOWTO
NFS-Root HOWTO
http://www.ltsp.org/download/lts/doc/lts-sf.html
Diskless-HOWTO.html - good section on how to troubleshoot init problems
http://www.linux-embedded.com

My server is running RedHat 7.0, kernel 2.2.16-22 and the IOs are running kernel 2.3.99-pre9 with
a special pegasus patch to get stable USB ethernet. The more recent
2.4 kernels seem to work fine with the IO but I haven't switched them
over yet. When you build the kernel, here are the relevant options.
Most of the drivers can be loaded using modules except for the USB
ethernet support.
CONFIG_MODULES=y
CONFIG_MODVERSIONS=y
CONFIG_KMOD=y
CONFIG_ROOT_NFS=y (this enables NFS for the root filesystem - see the
help for this topic!)
CONFIG_DEVFS_FS=y
CONFIG_RAMFS=y
CONFIG_USB_UHCI=y
CONFIG_USB_PEGASUS=y


Here's the lilo.conf for IO:
boot=/dev/hdb
timeout=20
prompt
default=kern3
disk=/dev/hdb
bios=0x80
vga=1
image=/boot/vmlinuz-2.3.99-pre9devfssound
label=kern3
read-only
append="nfsroot=192.168.1.1:/tftpboot,rsize=1024,wsize=1024"

The server is at 192.168.1.1 and the IO's filesystem is at /tftpboot
on the server. The rsize and wsize were required to get stable
ethernet working over USB, which you may or may not need depending on
your USB ethernet adapter.

The HOWTOs recommend keeping the entire filesystem separate between
the server and the clients. I chose a mix and made separate entries
under /tftpboot on the server for /bin, /etc, /lib, /sbin and I shared
/usr, /home between the IO and the server. Whenever I update binaries
on the regular server filesystem, I just copy over the contents of
/bin, /lib, and /sbin to the versions in /tftpboot. I use devfsd on
the IO to generate the entries in /dev. One of my common mistakes is
that I accidently delete the /tftpboot/sbin/devfsd when I copy over
/sbin from the server. You could probably get away with keeping
everything except /etc the same between the IOs and the server if
you're careful.

I had to use an older version of LILO (version 21) for putting the
kernel image on the Sandisk. The version on my server (21.4-4) didn't
work with the IO. Once you get a version working, you can carefully
add new kernels to the IOs Sandisk. I used a hard disk on the IO to
get the Sandisk programmed the first time but there are probably some
other clever ways.

The only files on the IO's Sandisk are:
/boot: boot.0300, boot.0340, boot.b, map,
vmlinuz-2.3.99-pre9devfssound
/etc: lilo.conf
/dev: hdb (this is needed to get things started I guess)
There are empty directories for /lib, /mnt, /proc, /root, /sbin, /tmp,
/usr.

My /tftpboot/etc/fstab looks like this (host1 is the name of the server):
/dev/hdb1 / ext2 defaults,ro 1 1
ramfs /tmp ramfs defaults,rw 0 0
shm /var/shm shm defaults,rw 0 0
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
/dev/ram0 /tmp ext2 defaults,rw 0 0
host1:/usr /usr nfs rsize=1024,wsize=1024,user,owner,exec,dev,suid,ro 1 1

In /tftpboot/etc/rc.d/rc.sysinit, I added these lines at appropriate
places:
# Mount the devfs filesystem
mount -n -t devfs none /dev
/sbin/devfsd /dev

echo 'Setting up ramdisks: '
mount ramfs /tmp -t ramfs || echo 'Failure to mount /tmp ramdisk'
chmod a+rwt /tmp

mkdir /tmp/var
chmod a+rxwt /tmp/var

mkdir /var/shm
mount -t shm none /var/shm || echo 'Failure to mount shared memory fs'
cd /tmp/var
mkdir log
mkdir log/news
ln -s log adm
mkdir lib
mkdir lib/xkb
mkdir lock
mkdir lock/subsys
mkdir run
mkdir share
mkdir share/etc
mkdir share/etc/X11
mkdir share/etc/home
mkdir share/etc/home/user
mkdir spool
mkdir spool/cron
mkdir spool/cron/crontabs
ln -s /tmp tmp

I use xdm along with xfs to serve X apps from the server to the IOs. That is another
subject but that part is not too hard to figure out.

I'm sure there's many more details I forgot but hopefully this is
enough to get you going. The links at the beginning give a pretty
good overview of the big picture. Good luck!

08-23-2001 19:29:41

Reply to Thread | Printer |
All times are PSTPowered by UltraBoard v1.62



Copyright © 2000, Netmake Inc. All Rights Reserved.
See Terms and Conditions for more information.




i-opener opener laptop notebook computer help drivers dll free windows dos repair fix linux mac macintosh 2000 95 98 nt pc configure hardware software sound video netscape explorer network networking lan wan software cmos fat bios printer card mouse modem ide scsi cd rom controllers scanner tape hard drive cgi scripts source code mp3