You are here: romanrm.net » Using the Allwinner A10/A20 as a home server » My kernels for Allwinner A10 and A20-based devices
My kernels for Allwinner A10 and A20-based devices
Compared to base defconfig or some other kernels you may find around, these will always have support for:
- all USB Ethernet NICs, USB 3G modems and USB webcams, USB DisplayLink VGA
- most USB soundcards, USB serial converters and USB DVB receivers
- IPv6 and Netfilter (iptables/ip6tables)
- AoE, NBD, NFS, POSIX ACL
- Bluetooth
- ham radio networking
- BATMAN Mesh networking
- “TEMPer” USB HID temperature sensor
Note: if you find this work useful, you're welcome to support the development and hosting by making a donation; a detailed listing of donations received so far is publicly available.
Variants
Server
- Built-in graphics completely disabled;
- 501 MB of RAM usable on a 512 MB boards, 1008 MB on 1 GB boards (according to
free -m
).
Note that “Server” in the name only related to the most common usage of this kernel, don't be surprised that this kernel also includes a lot of “desktop” features – like support for webcams, soundcards, joysticks etc. This is targetted for the case where someone will use this kernel with an external USB graphics adapter, such as DisplayLink.
Desktop
- Built-in graphics supported (but not the CedarX video engine);
- ~390 MB of RAM usable on 512 MB boards, ~900 MB on 1 GB boards.
Video
- Allwinner built-in graphics supported;
- CedarX video engine supported;
- ~310 MB of RAM usable on a 512 MB board, ~820 MB on 1 GB boards.
Installing
Here we assume that your Allwinner-based device is already booted up and you have SSH or direct console access.
Step 1: Modules
Copy linux-image-*.deb
to your target device and install it there:
dpkg -i linux-image-*.deb
If you do not use a Debian-based distribution or can't boot your device into a working state to use dpkg
, you will need to unpack the .deb
file manually and place the contents of lib/modules/
from inside it into the same location in your root FS.
Step 2: The kernel itself
Installing uImage (the kernel image itself) is not currently automated via the .deb
package, so you need to copy it manually.
First, ensure your /boot/
partition is mounted: check what files you have in /boot/
. There should be at least some, including the previous version of uImage
. If your /boot/ is empty, try mounting it with mount /dev/mmcblk0p1 /boot
and then check again.
Until you have verified that the new kernel boots fine, keeping the previous uImage
is generally a good idea, just rename it into something different (e.g. uImage.old
):
cp /boot/uImage /boot/uImage.old
After that, copy uImage-*
into /boot/
, naming it simply uImage
:
cp uImage-* /boot/uImage
In case your new kernel doesn't boot, you can simply insert your the SD card into some other device, mount the boot partition and restore the previous uImage
.