A friend asked me to help him get his own wardrivingbox going. I had a harder time doing this than expected, so I decided to retrace the steps.
He had installed ubuntu 11.04 on it from usb stick. This wouldn't boot, the grub setup was al wrong. Fixing the grub setup still left it non-booting.
This time I had the Heavy Duty Boot Environment available to help me, since the alix.1c / alix.1d boards are quite capable of PXE booting. This didn't turn everything into a simple install-party as the via_rhine drivers in anything but the most recent linux distro give issues. So the complete pxe load via network works fine but after that the network drivers don't work, making it impossible to do an OS installation which I can reproduce.
So I chose the 'easier' option: start with the Linux install I built for the wardriving box, adjust a number of parameters and try to get that running on it.
With the CF module in the alix.1d I booted PLD Linux, and partitioned the CF to have one big ext3 partition, made a filesystem on it and installed grub on it:# mke2fs -j /dev/sda1 # mkdir /mnt # mount /dev/sda1 /mnt # grub2-install '(hd0)' --root-directory=/mntI could have done the whole grub dance on a running system to prepare the CF disk for the wardrivebox but I find it a bit scary to do that: I'm working in an environment I don't want to break and the mapping of linux devices versus physical devices is somewhat volatile.
But this leaves me with a problem transferring the files since the pld-20090221 version has the issue with the via_rhine drivers. I first thought I had to remove the CF from the alix.1d and do this in the development workstation but I thought later that simply using an USB flashdrive for copying the data would probably also work.
Yes that part sort-of works: I have to disable USB 2.0 in the alix.1d setup in order to make the mounting of an USB stick work in the PLD linux environment. This time I get the whole thing booting itself, but it hangs during boot, the last messages:PCI: Probing PCI hardware PCI: Using IRQ router NatSemi [1022/2090] at 0000:00:0f.0
New attempt: recreate an environment to use grub version 1, that's what I had running before. To create an environment like that without changing anything within with my running ubuntu install, I used debootstrap again: And within that environment, switched to grub-legacy:root@jobs:/# apt-get install grub-legacyGrub needs access to the disk devices. I made really really sure the CF was /dev/sdc ..root@jobs:/# mknod /dev/sdc b 8 32 root@jobs:/# mknod /dev/sdc1 b 8 33And grub complained about missing stage1 and stage2. Which I still had in the previous running image...root@jobs:/home/koos/project/wardriverbox/cfimage/boot/grub# mount /dev/sdc1 /mnt/other/ root@jobs:/home/koos/project/wardriverbox/cfimage/boot/grub# rsync -av . /mnt/other/boot/grub/Now grub wants to install:GNU GRUB version 0.97 (640K lower / 3072K upper memory) [ Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. ] grub> root (hd0,0) Filesystem type is ext2fs, partition type 0x83 grub> setup (hd0) Checking if "/boot/grub/stage1" exists... yes Checking if "/boot/grub/stage2" exists... yes Checking if "/boot/grub/e2fs_stage1_5" exists... yes Running "embed /boot/grub/e2fs_stage1_5 (hd0)"... 15 sectors are embedded. succeeded Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p (hd0,0)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded Done. grub>Something is still wrong, grub now reports an 'Error: 2' in stage 1.5. Which means something in the menu does not exist. I find out this can be caused by mixing grub versions so I redo the whole grub-install dance:root@jobs:/# grub-install --root-directory=/mnt '(hd0)'Now I have a booting system with grub 0.97 .. still ending at the same kernel message.
Comparing the kernel messages from my alix.1c with the messages above and what I remember I guess I need to check the ACPI settings in the BIOS.
ACPI now enabled in the setup. Kernel messages look different but the system still hangs right after the PCI configuration. One improvement: the network interface now works when I boot pld linux. When I compare the boot messages to the ones from the working system the system seems hung in the timer choice.
Newer kernels have the option to use the specific timers available in the Geode, so I'm trying to build a 188.8.131.52 kernel. Which gives other problems: I can't compile madwifi anymore (it has gone deprecated). So to get a running system again I need to use the newer ath5k drivers.
Linux 184.108.40.206 boots (with some warnings I need to investigate) and produces a running system. Now I need to fix things like kismet using the other drivers, but we're getting somewhere.
Again some time to work on this, and I notice weird driver issues with the dependencies. This probably has to do with the modules.dep file being generated with a slightly different version of depmod. The version of depmod within the chroot environment is up to date so I can use that one. And after configuring kismet to use the right wireless driver that leaves me with:
A working wardriver box!
I've seen a lot of issues, and I might have given up if I wasn't sure this could be made to run! In the dmesg for the alix.1d wardrive box I notice the specific timer is not available:cs5535-clockevt: Could not set up IRQ 7 cs5535-clockevt: Unable to set up the MFGPT clock sourceBut one timer is working, the pit timer.
Still todo: fixing the place the results are copied to, maybe configure a different GPS.