view · edit · print · history

Installing SlugOS on the DSMG600

This article pertains to:

  • DSM-G600 Rev A Hardware only
  • SlugOS 4.3-beta only

This article is preliminary.

At the time of this article's writing, there is no support for the dsmg600 in the standard Debian distribution. This leaves SlugOS/BE or SlugOS/LE as the only two standard alternatives. Both are supported, and have their own pros and cons, mostly related to application support (rather than operating system support). The installation procedure is the same, regardless of choice.

There are some other prerequisites that you should consider before installation as well. This include: What will be your root device? Do you have all the network settings you'll need convenient? If you have a disk drive in the unit, are you sure that it's empty and can be reformatted and repartitioned?

Once prepared, you need a copy of the firmware. Recent versions of SlugOS (4.3-beta and beyond) will build a full replacement firmware image for the device, one that includes the kernel for the dsmg600, along with the flash rootfs filesystem. Obtain same from http://www.slug-firmware.net/, or build same from the sources (see Development.MasterMakefile).

Armed thusly, open your web browser, browse to the D-Link firmware upgrade screen, and upload the SlugOS firmware. Wait for a while (this can take quite some time, as much as 10 - 15 minutes in some cases), but eventually you should see reboot messages scroll by on your serial port console (you did install a serial port, right???).

... Resetting.
+Flag is 3ffb
2--Flag is 8

RedBoot(tm) bootstrap and debug environment [ROM]
Red Hat certified release, version 1.92p1 - built 22:09:37, Jul 15 2005

Platform: IXDP425 Development Platform (XScale)
Copyright (C) 2000, 2001, 2002, Red Hat, Inc.

RAM: 0x00000000-0x04000000, 0x00415070-0x03fd1000 available
FLASH: 0x50000000 - 0x51000000, 128 blocks of 0x00020000 bytes each.
script is fis load filesystem -b 0x00B00000
fis load kernel -b 0x00600000
exec 0x00600000

== Executing boot script in 5.000 seconds - enter ^C to abort
RedBoot> fis load filesystem -b 0x00B00000
RedBoot> fis load kernel -b 0x00600000
RedBoot> exec 0x00600000
Using base address 0x00600000 and length 0x00200000
Uncompressing Linux.............................................................
......... done, booting the kernel.
Linux version 2.6.20 (mwester@spike.mwester.net) (gcc version 4.1.1) #1 PREEMPT
Wed Feb 21 09:29:00 CST 2007
CPU: XScale-IXP42x Family [690541f1] revision 1 (ARMv5TE), cr=000039ff
Machine: D-Link DSM-G600 RevA

Configuring SlugOS on the DSM-G600

The device will boot up as the classic SlugOS "amnesia victim" -- because SlugOS doesn't read the D-Link configuration information, it has lost all the settings that it may have had regarding its network identity, the most obvious of which is the hostname: it will boot up as "brokenslug".

Login in on the serial console (or fire up your ssh client and point it at the IP address your DHCP server gave the device when it booted). Run "turnup init" to fix the network identity issues.

Once the turnup init is completed, you can proceed to preparing your root device, and finally doing the appropriate "turnup disk" (or variation), and rebooting off the new target device. The dsmg600 features an internal IDE port, which would seem to be attractive as a boot device for the unit. However, keep in mind that in severe cases of "trouble", it is often convenient to be able to plug the SlugOS root device into another system with a full console for diagnostics or other work -- something that's much easier to do with a USB-attached disk or flash device than with the internal device. So, for initial experiments, or for testing, it might be better to choose an outboard USB device as the root filesystem.

Device ordering is perhaps counter-intuitive. USB devices actually get probed before the internal IDE port, so the internal disk will "move about" if the device is booted with more or fewer mass storage devices on the USB bus. This shouldn't matter much as one should not be mounting partitions by device name anyway -- use the UUID or label instead.

Device Support

Device eth0 is the built-in gigabit ethernet port. There are some tuning paramaters that you might like to apply. Specifically, the default is for the driver to permit unaligned access to data -- which is something that can result in a significant performance penalty in some cases on the ARM processor. If desired that can be fixed by setting a parameter for the driver -- simply create a file in /etc/modprobe.d named via-velocity, containing the text "options IP_byte_align=1". The following procedure illustrates one way of doing so:

root@grouch:~$ mkdir /etc/modprobe.d
root@grouch:~$ echo "options via-velocity IP_byte_align=1" >/etc/modprobe.d/via-velocity

The wireless card is an Atheros device, with a great many interesting features. The "madwifi" driver does a fine job with the device. It needs the assistance of the "wireless_tools" package to configure the basics of the wireless device (SSID, WEP encryption, and such). If you wish to use WPA or more sophisticated authentication and security (highly recommended), you'll need the wpa_supplicant package:

<insert procedure>
view · edit · print · history · Last edited by mwester.
Originally by mwester.
Page last modified on February 25, 2007, at 09:42 PM