Katipo
Search  
Site Blog
  About  
  Home
About Portfolio Solutions Client Area Contact Us
: : About Us
Awards
Jobs
Our People
What Is A ... ?
Working From Home
News
Photo Gallery
Katipo Blog


OPACs for HLT – netbooting WebConverger on ASUS EEEBox b202

The OPACs at HLT have been failing one by one, so some replacements are in order.  The previous OPACs ran Mozilla in kiosk mode on a hand modified Debian install sufficiently rickety that after ~4 years I didn’t really want to touch it.

Somewhat surprisingly, the task (taking some hardware and netbooting it into a teenage-vandal-proof web kiosk) didn’t appear to be a solved problem – there are still a lot of people rolling their own, I’ve done that once, I didn’t really want to do it again.

Webconverger almost fits the bill, with a couple of caveats:

  1. it doesn’t have direct support for netbooting
  2. it doesn’t work with the EEEBox b202

As Webc is based on Debian Live (which does support PXE booting), and the b202 works fine with Ubuntu, both these issues seemed like they should be soluble, and after much mucking about, that proved true.

First up, there’s no way that I can see to get Webc to netboot without rebuilding it, so you need to be comfortable with that process.  Be warned that you will consume a fair amount of bandwidth downloading packages (multiple times if you don’t have a local cache), and that the build process is slooooow.

Solving the non functioning X display was relatively straightforward. First, you need to amend your X configuration.  Add a symlink and a file to the includes tree:

ls -l config/chroot_local-includes/etc/X11
lrwxrwxrwx 1 root simon   13 2009-07-09 18:10 X -> /usr/bin/Xorg
-rw-r–r– 1 root simon 1194 2009-07-09 18:10 xorg.conf

inside the xorg.conf you need something like:

Section “Device”
Identifier “Configured Video Device”
Option “monitor-LVDS” “LVDS”
EndSection
Section “Monitor”
Identifier “LVDS”
Option “Ignore” “true”
EndSection
Section “Monitor”
Identifier “Configured Monitor”
EndSection
Section “Screen” Identifier “Default Screen”
Monitor “Configured Monitor”
EndSection

then, edit scripts/config and add “noxautoconfig” to the –bootappend-live line, and rebuild.

noxautoconfig disables autogeneration of the X config every time the machine boots – it isn’t ideal, in that it makes your build less portable, but it does give you a working display.  Hopefully, the Intel Xorg driver will be updated soon to make this unnecessary (it appears to be assuming that the b202 has a mobile graphics chipset, therefore it must have an LMDS display).

Netbooting Webc is also comparatively simple – the only major gotcha is that the stock Webc iptables ruleset blocks NFS, which means that your box will hang just before X starts up.   HLT don’t need iptables in their environment,  so I took the path of least resistance and removed the iptables package completely – alternatively, you could amend config/chroot_local-includes/etc/iptables.conf to allow NFS.

So to enable netbooting, you make changes as per the Debian live manual – add something like:

-b net \
–net-root-path “/srv/debian-live” \
–net-root-server “192.168.1.1″ \

to scripts/config, then edit config/chroot_local-packageslists/webconverger and remove the “iptables” entry.  Finally, if DNS resolution doesn’t work, you may need to remove “nonetworking” from the –bootappend-live line in scripts/config.  Rebuild webc, and be happy.

Other local changes:

Removed iptables, splashy, cups, iceweasel-webconverger and all the wireless drivers from the package list, and added cron, msttcorefonts and iceweasel-webcyourlibrary.  I needed cron because I wanted to be able to power down the kiosks after the library is closed.

I made some further changes to scripts/config file:

–bootappend-live “quiet silent nosudo noxautoconfig homepage=http://www.library.org.nz/ video=vesa:ywrap,mtrr vga=792 nopersistent quickreboot timezone=Pacific/Auckland noblank kioskresetstation=2 swapon” \
-k 686 \

the timezone is necessary for the cron jobs to work correctly, noblank turns off the screen blanking, swapon enables any swap partitions on the hard drive, and kioskresetstation restarts Iceweasel after two minutes of idleness.  The -k 686 causes the system to boot the 686 optimised kernel – it’s not critical, the default 486 kernel also works.  All good.

After making changes to the tree, I run

$ sudo lh_clean –purge; lh_config ; sudo lh_build

to redo the build.  It’s a slow process, particularly if you use –purge.  Once built, to install I run:

$ sudo rm -r /srv/webconverger /srv/debian-live ; sudo tar -C /srv -xzf binary-net.tar.gz ; sudo mv /srv/webconverger/debian-live /srv ; sudo rm -r /tftpboot/pxe/debian-live ; sudo mv /srv/webconverger/tftpboot/debian-live /tftpboot/pxe ; sudo cp prompt.cfg /tftpboot/pxe/debian-live/i386/boot-screens

I copy the prompt.cfg because I couldn’t work out how to turn off the pxelinux prompt from within debian-live – this just overwrites the installed file with a simple file that says:

default live
prompt 0
noescape 1

Hardware setup

(mostly these are notes to myself so that when I have to repeat the process in the future I won’t forget steps):

Updated the BIOS (press Alr-F2 as the machine boots to run the updater), then made some changes in the BIOS – enabled LAN BootROM, disabled WLAN, Enabled ACPI 2.0 support, enabled Power on by LAN, Full screen logo disabled, Express gate disabled.

I used Billix to boot Ubuntu, shrink the second NTFS partition to 17.2GB, make an ext3 fs (15GB) and the remainder (1.7GB) into  swap, and installed Ubuntu server.  None of this is crucial, but I wanted grub installed, and wanted some swap space, and ubuntu is as good a way of achieving this as any.  Changes to /boot/grub/menu.lst: timeout 15, hiddenmenu, password (), alternative=false, lockold=true, howmany=1, memtest86=false, then run sudo update-grub.  Then add “title Reboot/nreboot” as the first option, and “lock” to all the remaining options.

I wanted grub because sometimes on warm boot the ethernet interface doesn’t bring up link, and PXE falls through to the hard drive.  I don’t know why this is – it might be a BIOS issue, it might be an incompatibility between my test switch and the b202 – either way, with grub I can force the machine to reboot and try again, rather than falling through to an unconfigured Windows install.

Verify grub is giving the correct behavior (password within 15 seconds to boot Windows or Ubuntu, otherwise reboot), go back to the BIOS, change the Boot device priority, first: Network boot, second HDD, USB/CDROM disabed, and set a Supervisor password on the BIOS so that it can’t be modified.  Reboot

When the PXE config text comes up, press Shift F10 to configure, disable the Config message, and set the Show message time to 1 Sec.  Add the MAC of the machine to DHCP/WOL configs, and test.

Leave a Reply

You must be logged in to post a comment.


Katipo
Rachel Snowboarding