About 2 weeks ago, I downloaded a FC17 ARM root file system onto a USB stick. I took the kernel and kernel modules from a recent build of the XO=1.75, and plopped them on top of this rootfs. Much to my amazement, it booted, and presented me with a logon prompt.
It feels like it’s been all downhill from there. But in actual fact, I’ve been learning a lot — dealing with all of the failures:
- My first thought was that I might be able to download development tools, and compile the School Server RPMs on the XO, and be done with it. I was able to do a groupinstall of the “Development Tools” and start compiling the XS rpms. Creating rpms is a new experience for me, and I’ve had some learning experiences, and slow starts. But then I started having segmentation faults on the XO during compiles. The compiler generated an error message which suggested that the segment fault might be an OS problem.
I decided that I needed a clean rebuild of the kernel (and maybe eliminate the mismatch between fc17 root fs and an earlier kernel build from the XO –based on fc14). At first I tried to compile the kernel on the XO, but I kept running into the same seg fault which stopped me from working on the RPMs. I started trying to cross compile the kernel on my laptop.
- The first cross compiler I tried was suggested in the Fedora ARM wiki. But this cross compiler was generated in the FC12 timeframe. When I started using it, I discovered that it generated errors. When I googled the errors, it seems that the syntax for assembly language constraints has changed. I tried the free cross compiler from CodeSourcery — lite which did not generate the same errors.
- The OLPC wiki suggested that I use a cross compiler from crosstool.ng. It turns out that this is really a compiler to generate cross compilers. There were errors when I tried to generate a cross compiler, and after 2 days I gave up trying to generate a cross compiler for ARM eabi.
- Since the CodeSourcery lite cross compiler worked, I started trying to use the OLPC kernel source from their git repository to demonstrate to myself that I had the tools and competence to recreate the kernel similar to the one that I already had running on the XO.
- Four days and five compilations later, I’m still in that process. So far I have discovered:
- That it’s very easy to slip up and specify that a driver should be a module, when it really needs to be built into the kernel, so that it can mount the root file system.
- That when you use dracut on a cross compiling intel machine, dracut includes an intel version of modprobe which does not work very well loading modules on and ARM machine — that dracut needs to executed under an older functioning kernel on an ARM machine in order to work properly.
- That not all drivers have ARM headers and implementations, and must not be selected in a cross compile
A few weeks ago, when I asked about low power ARM computer candidates for School Server, Peter Robinson, who is active in Fedora ARM software development, suggested the Trim-Slice H. I ordered one, and it came in the mail yesterday. I’m very eager to play with it.
I put a SATA 320 GB hard disk in the disk bay of the TrimSlice, and put it on the watt meter. With the draw from the hard disk, it draws 5.3 watts! Together the disk and computer cost $350 (computer $280, hard disk $50, ethernet dongle $20). In much of the developing world, I believe the cost of deep cycle batteries, solar panels, and maybe even the long term cost of power from the grid will overshadow the original costs of the computer hardware.
Even cheaper solutions include the Tonido plug at about $195 ($125 for plug,$20 for ethernet dongle, $50 for hard disk), and the XO1.75, at about $290$ (XO itself, ethernet dongle $20, hard disk $50 and USB hard disk enclosure $20)