Linux Kernel on the DNS-323
Differences D-Link vs. Mainline
The D-Link provided Linux kernels shipped so far up to firmware 1.03 are derived from Marvell's BSP for their Reference Designs. In the meantime, there is an effort to push support for the Orion SoC family into mainline. The following table tries to sum up the differences:
D-Link | Mainline | |
---|---|---|
Versions | 2.6.6, 2.6.12 | 2.6.25+ |
Mach-Type | 526 | 1542 |
Ethernet Device | egiga0 | eth0 |
Fan Control | ioctl(egiga0,…) | /dev/i2c or HWMON |
Temp. Sensor | ioctl(egiga0,…) | /dev/i2c or HWMON |
Poweroff | ioctl(egiga0,…) | reboot(LINUX_REBOOT_CMD_POWER_OFF) |
LEDs | ioctl(egiga0,…) | /sys/class/leds/… |
Key Buttons | ioctl(egiga0,…) | /dev/input/… |
Mainline Sources
As the orion.git
is in the progress of being prepared for merging into Linus' mainline repository, if you want to play with the current source base you'll have to checkout the git://git.kernel.org/pub/scm/linux/kernel/git/nico/orion.git repository. Note: the 'for-rmk' branch of this git repository was merged into the Linux 2.6.26 kernel on Fri May 9 23:24:09 2008 +0100.
And you might want to apply the following DNS-323 add-on patches not yet merged yet, if you want full support for additional devices found on the DNS-323.
Problems
There seems to be a cache coherence issue with L2 cache.
http://lists.infradead.org/pipermail/linux-arm-kernel/2009-December/005589.html
http://lists.infradead.org/pipermail/linux-arm-kernel/2009-December/005626.html
NetBSD on the DNS-323
Introduction
The usual disclaimer applies. If you brick your device it is your fault 100% of the time. This page describes what has always worked for my DNS 323 hardware.
NetBSD was ported by Kiyohara in 2007 but is not yet part of the official tree so you have to get current and patch it. The patches are in http://ftp.netbsd.org/pub/NetBSD/misc/kiyohara/orion_nas.
The entire NetBSD distribution can be built using a Linux box so there is no need to switch from your favourite OS. The build.sh script that comes with the NetBSD sources builds everything or just the cross-compiler or just the kernel depending on the arguments passed to it.
I will focus on building the kernel and the cross compiler for now. Once the kernel is built you could save time by downloading userland from the netbsd.org because all little-endian arm boards share the same binaries. The final result is going to be a standard NetBSD installation (like the one on a PC) except that this one runs on ARM. That is how my setup is but you can do whatever you want obviously.