Dobrica Pavlinušić's random unstructured stuff
DSM-G600: Revision 15

Collection of some hints about Debian installation on my D-Link DSM-G600:



firmware (kernel+busybox)

It will fix various problems, including, but not limited to, problems with web interface in firefox.

http://download.dsmg600.info/people/sala/fwimage-04-sala-20070128

I tried to build firmware from source, but had various problems with building gcc. Thet are mostly related to gdb, but after a few random patches it passed compilation (but is broken, because I just commented offending lines).

usbfs

I also want usbfs which generate compilation errors because of missing files in include/linux/usbdevice_fs.h

#define USBDEVFS_DISCONNECT        _IO('U', 22)
#define USBDEVFS_CONNECT           _IO('U', 23)

I copied them from current 2.6 kernel and this made it compile.

Debian installation

Based on instructions on wiki and post on forum

cd /mnt/HD_a2
export DEBOOTSTRAP_DIR=`pwd`/usr/lib/debootstrap
export PATH=$PATH:/mnt/HD_a2/bin:/mnt/HD_a2/sbin
./usr/sbin/debootstrap --arch powerpc etch /mnt/HD_a2/debian http://ftp.de.debian.org/debian
cp /etc/resolv.conf /mnt/HD_a2/debian/etc/resolv.conf
# prepare chroot jail
mount -t proc proc /mnt/HD_a2/debian/proc
cd /mnt/HD_a2/
./chroot /mnt/HD_a2/debian /bin/bash
# install additional packages
apt-get update
apt-get install locales
dpkg-reconfigure locales
passwd root
apt-get install dropbear hotplug

USB printer

Kernel module for USB printers for 2.4.21-pre4 kernel: printer.o

After installation of cupsys and foomatic all went smoothly, USB printer (Samsung ML-2510) was found and configured automatically. There are a few more details in this forum thread.

Kernel 2.6

I have a creazy idea: this device should run 2.6! So, here is my work in progress...

According to patches for kurobox which is quite similar to our hardware, there isn't any changes in current upstream version execept for missing drivers. For DSM G600 that boils town to IP1000 network driver, which still isn't in mainland, but seems to be referenced on LKLM as possible inclusion.

Compilation notes

Compile kernel and convert it to binary format for loader.o:

. env.sh
make
powerpc-linux-objcopy -O binary vmlinux
scp vmlinux disk:/tmp/

Then try out your kernel on DSM:

cd /mnt/HD_a2 && sync && insmod /mnt/HD_a2/loader.o kernel=/mnt/HD_a2/debian/tmp/vmlinux

Please note that you must use full path to kernel binary. Also note that all paths are customized for my particular device (to help with copy/paste :-)

Emulation

It's useful to have development environment for DSM on another machine, so I tried to use QEMU to do so.