I just use an ├ängstrom image built with http://narcissus.angstrom-distribution.org/
- machine: c7x0
- complexity: advanced
- base system: extended (includes wireless-tools and wpasupplicant)
- /dev manager: mdev (can't get the kernel 2.6.25 to work with udev from the Debian distro)
- User environment: console only
Using the tool provided here (http://forum.archosfans.com/viewtopic.php?f=59&t=50125
) I created a boot.img with /bin/busybox (from the image created above), an empty /newroot folder and the following /init script:
_ mount -t tmpfs tmpfs newroot
_ cp -a /* /newroot/
_ mv /newroot/newroot /newroot/oldroot
_ mkdir -p /newroot/sbin /newroot/usr/bin /newroot/usr/sbin
for n in $(/bin/busybox --list-full); do
_ ln -s /bin/busybox /newroot/$n
_ pivot_root /newroot /newroot/oldroot
# This is very important otherwise switch_root won't work later on
umount -l /oldroot
rm -r /oldroot
mkdir -p /sys
mount -t sysfs sysfs /sys
mkdir -p /proc
mount -t proc proc /proc
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
echo -n "Activating USB storage..." > /dev/tty1
echo "/dev/mtdblock8" > /sys/devices/lm0/gadget/lun0/file
echo "ok." > /dev/tty1
echo "Make the necessary changes to your filesystem" > /dev/tty1
echo "Move the power switch when done" > /dev/tty1
# waits until the user pushes the button
read -t 999999 < /dev/event0
echo -n "Switching USB to host mode..." > /dev/tty1
echo 1 > /sys/bus/logicmodule/drivers/dwc_otg/force_usb_mode
echo "ok." > /dev/tty1
mkdir -p /target
mount -t ext3 /dev/mtdblock8 /target
exec switch_root -c /dev/tty1 /target /sbin/init
On the parameter file:
- change "console=ttyS0,115200n" to "console=tty1"
- add a "logo.nologo=1" option
Now you can see the kernel output.
Before repacking the update.img:
Edit package-file, commenting out all the lines corresponding to the partitions you don't need to re-flash, except
If you follow this guide, you will only need to re-flash "boot" and "parameter".
My custom update.img is 1.4MiB in size.Beware that in USB Host Mode you'll need a USB adapter to connect a keyboard and be able to use the terminal.
After extracting the files from the ├ängstrom tarball somewhere, I usually copy qemu-arm-static to /usr/bin and use chroot on my PC to modify all I need.
Changes needed in the ├ängstrom image:
- remove /etc/keymap-2.6.map
- copy /system/lib/modules from your regular update.img to /lib/modules/2.6.25/
- execute depmod -a
- copy /system/etc/firmware/*.bin to /lib/firmware/ (necessary for the WLAN to work)
- edit /etc/fstab
- edit /etc/hostname
- edit /etc/wpa_supplicant.conf
- edit /etc/network/interfaces
If you want to use adbd:
- copy /sbin/adbd from regular update.img to /sbin/adbd
- create a link at /system/bin/sh pointing to /bin/busybox
- create a /etc/rcS.d/S41adbd loading script (it only works after the loopback interface is up)
- disable the "Switch to USB Host Mode" on the /init script
I've managed to install and remove applications using "opkg", available packages here: http://www.angstrom-distribution.org/repo/
If you install X.org, you'll need to edit /etc/X11/xorg.conf by hand.
Use the evdev driver for the touchscreen and fbdev for the graphics device.
I've tested GPE and Illume, but I prefer LXDE.
I was even able to run Firefox with gnash plugin - took forever to load, and Flash works, but with a lot of bugs.
Still, a step in the right direction.
As I mentioned above, I tried building a Debian image (wharty armel) using debootstrap, but the 2.6.25 kernel prevents udev from working.
I also managed to compile a custom kernel using the sources at http://code.google.com/p/k1099/
(after some modifications), but no DSP yet.
Besides, it won't compile the wlan driver, I haven't figured out why yet.
Best of luck, and let's keep this thread going.
I think the name of the thread should be "Running a full-blown linux distro on A7HT", though.