Summary
About
This page is about using ARM machines as diskless workstations (or more general, as LTSP clients).
At first, this page will only be about the Efika MX plattform, other hardware needs available hardware samples first. Contact me if you are able to help.
Status
In documentation phase (aka in development). In theory (and practice) Debian Edu is Debian, Debian supports ARM processors, LTSP is processor agnostic and Debian runs on the Efika MX. In practise, this shall be shown here.
Using the Efika MX as an LTSP client
Hardware
The Efika MX has current hardware specs, no movable parts, a case which is smaller than a DVD case (160x115x20mm) and is low on power-consumption: 4 Watts for the external power supply (when the device is powered off), 9 Watts for running idle and 11 Watts running under full (CPU) load. So it should be a pretty nice LTSP client
Setting up an ARM LTSP chroot
Note: the following examples use Squeeze, which has not been released yet. So this shouldn't be used in production
To be described here. There are two approaches: build it on an armel machine (like the Efika) or using qemu.
the QEMU approach
Using qemu-user-static on i386, cross-architecture building for armel is rather simple, the steps are:
# apt-get install qemu-user-static ltsp-server # ltsp-build-client --arch armel
This may require adding the --kernel-package parameter, as no default kernel exists for armel. As a workaround, you could specify "--kernel-package $any_package_name", and then manually install a kernel.
Since squeeze is not yet released, some packages may fail to install properly. To get a smaller LTSP chroot, add "--early-packages ltsp-client-core".
on the Efika MX
Requirements: a working Debian squeeze install, with the pre-installed OS you can use debootstrap to create one.
# apt-get install ltsp-server # ltsp-build-client
Network booting the Efika MX
The bootloader used on the Efika MX is called u-boot. Since the Efika MX uses the asix USB network interface and USB support in u-boot is rather new, and so it's broken for this piece of hardware. Future release of u-boot might fix this, but it's not clear if (or rather, how...) u-boot can be updated.
So the options available today are basically to load the kernel via SD card or the built-in flash, or load a kernel using kexec, which then downloads the real kernel and initramfs over the network and executes the new kernel (proof of concept initramfs-tools hook and script) . (And of course fixing u-boot or using another bootloader...) Per default the Efika MX boots from SD card if available, else from built-in flash.
Setting up the kernel for LTSP
download the boot and modules tarballs from:
# move to the LTSP armel dir cd /opt/ltsp/armel # extract the uImage tar xvpf boot-2.6.31.14-efikamx.tar.lzma --lzma # extract the modules and firmware tar xvpf modules-2.6.31.14-efikamx.tar.lzma --lzma # get the kernel image out of the uImage file dd if=boot/uImage of=/opt/ltsp/armel/boot/vmlinuz-2.6.31.14-efikamx \ bs=64 skip=1 # get initramfs-tools hook that adds the usb network driver # (manual_add_modules asix) wget http://people.debian.org/~vagrant/efika/initramfs-tools/hooks/usbnet \ -O /opt/ltsp/armel/usr/share/initramfs-tools/hooks/ chmod +x /opt/ltsp/armel/usr/share/initramfs-tools/hooks/usbnet ltsp-chroot --arch armel update-initramfs -c -k 2.6.31.14-efikamx # wrap the initramfs in uboot headers mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 -e 0x0 \ -n uInitrd -d boot/initrd.img-2.6.31.14-efikamx boot/uInitrd
Installing the LTSP kernel on a SD card
mount /dev/mmcblk0p1 /mnt cp /opt/ltsp/armel/boot/uImage /opt/ltsp/armel/boot/uInitrd /mnt/ umount /mnt
Configuring and Running from U-Boot
Power on the device and hit space quickly to get to the uboot prompt.
Set some variables at the uboot prompt (adjust for your network settings, be wary of line breaks):
setenv bootdelay 10 setenv bootargs_base_nfs 'setenv bootargs console=ttymxc0,115200 console=tty1' setenv nfs_boot 'run bootargs_base_nfs bootargs_nfs' setenv boot_nfs 'run base_cmds;mmcinit;fatload mmc 0:1 ${loadaddr} ${kernel}; fatload mmc 0:1 0xa2000000 ${initramfs}; bootm ${loadaddr} 0xa2000000' setenv bootargs_nfs 'setenv bootargs ${bootargs} root=/dev/nfs nfsroot=192.168.0.1:/opt/ltsp/armel console=ttyS0,115200 boot=nfs ip=dhcp ${bootinfo};run boot_nfs'
save the configuration:
saveenv
to boot from the uboot prompt (how to make default?):
run nfs_boot
Installing the LTSP kernel on built-in flash
TBW