Dobrica Pavlinušić's random unstructured stuff
DSM-G600: Revision 30
Collection of some hints about Debian installation on my D-Link DSM-G600: Resources
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). usbfsI 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 installationBased 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 printerKernel 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.4As a try to understand this ppc board, I tried to port changes from MontaVista (D-Link used that tree) to current upstream 2.4 kernel and got to the point where SCSI controller times out when reading partition table. This means that board does init, it has serial port which works and has some idea about PCI space (which seems somewhat fishy if you ask me). linux-2.4.34.4-dsmg600.diff.gz Few more details are available in this forum post. Kernel 2.6I have a crazy 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 except 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.
Experience with 2.4 kernel shows that I have to do more porting to make 2.6 port usable. As a start, code for board initialization is specific for DSM-G600 as well as serial port driver. When we have those two things working we can see if loader.o could boot our kernel. I think that shouldn't be problem, because loader.o origin shows that it's possible to boot 2.6 kernel from 2.4 kernel using loader.o module. New round based on powerpc kernelsAfter review of current upstream kernel (2.6.22) and state of powerpc kernel.org repository I decided to base my efforts on this branch. For now here are few useful links:
Compilation notesCompile 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 :-) EmulationIt's useful to have development environment for DSM on another machine, so I tried to use QEMU to do so.
Board specificationHere is information that I collected while working on 2.4 port in hope that it will assist me in porting 2.6 kernel Memory mapPart of information extracted from u-boot loader, part from kernel source
Important addresses:
Important constants:
^^ Kernel configuration options From old 2.4 kernel, just something to keep eye on while configuring 2.6 kernels... * CONFIG_6xx * CONFIG_SANDPOINT * CONFIG_PPC_ISATIMER * CONFIG_MTD_PARTITIONS * CONFIG_MTD_CHAR * CONFIG_MTD_BLOCK * CONFIG_MTD_CFI * CONFIG_MTD_GEN_PROBE * CONFIG_MTD_CFI_AMDSTD ^^ IRQ
sandpoint_map_irq(struct pci_dev dev, unsigned char idsel, unsigned char pin)
const long min_idsel = 13, max_idsel = 16, irqs_per_slot = 4;
static u_char sandpoint_openpic_initsenses[] __initdata = {
sandpoint_init_IRQ(void) openpic_set_sources(122, 1, OpenPIC_Addr + 0x11140); //ttyS1 jackl ^^ mpc10x
mpc10x_bridge_init(hose, should be changed to:
mpc10x_bridge_init(hose, ^^ IO block consistent with following:
^^ Serial
#define UART0_INT 121
#define SANDPOINT_SERIAL_0 0xFC004500 ^^ CPU
#define CPU_200 1 .pre |