This is an old revision of the document!


This page described how to get Debian natively running on your DNS-323.

NOTE: If you follow this procedure, the DNS-323 will no longer run it's normal operation. It will only run debian. The function can be restored, details at the end.

NOTE2: You can brick your unit if you are not careful, and maybe even if you are careful. As long as you don't overwrite the mtdblock4 device, you *should* be able to recover your system, but this procedure has not been well tested. MAKE SURE to save off your old MTD devices someplace safe so you can restore them if necessary.

You will need:

  • A DNS-323 with a serial port as described in serial. You must upgrade the firmware to 1.03
  • A running Debian system
  • Fast Internet access (not strictly required, but very helpful)
  • Running kermit from http://www.columbia.edu/kermit. Note that you can use minicom, but you will not be able to transfer kernels to uboot later if you don't have it.

You need a minimal debian image installed on a machine that can act as an NFS server. You can get http://dev.skcserver.de/dns323/etch.tar, I think, but I have not tried it. This is a full minimal image, but I'm going to document using cdebootstrap, though, since the above link may go away and this is more general. You need an existing debian system to do this, and you need root access and need to be logged in as root.

i2:~# apt-get install cdebootstrap
Reading package lists... Done
Building dependency tree... Done
cdebootstrap is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
(Note - I already had this installed)
i2:~# mkdir dns
i2:~# cd dns
i2:~/dns# cdebootstrap -aarm etch etch ftp://ftp.us.debian.org/debian
P: Retrieving Release.gpg
P: Retrieving Release
P: Parsing Release
P: Retrieving Release
.
.
.
P: Extracting util-linux
E: Couldn't install system due to errors!''

The error at the end is normal. Now make some normal devices.

i2:~/dns# cd etch/dev
i2:~/dns/etch/dev# /sbin/MAKEDEV generic-arm
i2:~/dns/etch/dev# /sbin/MAKEDEV md

These following for the flash driver. You really do not want to overwrite mtdblock4, since that is uboot, so we make it read-only. As long as you have a serial port and uboot, you can recover the device.

i2:~/dns/etch/dev# mknod mtdblock0 b 31 0
i2:~/dns/etch/dev# mknod mtdblock1 b 31 1
i2:~/dns/etch/dev# mknod mtdblock2 b 31 2
i2:~/dns/etch/dev# mknod mtdblock3 b 31 3
i2:~/dns/etch/dev# mknod mtdblock4 b 31 4
i2:~/dns/etch/dev# chmod 660 mtdblock*
i2:~/dns/etch/dev# chmod 440 mtdblock4
i2:~/dns/etch# pwd
/root/dns/etch
i2:~/dns/etch# vi /etc/exports

Add the following to /etc/exports:

/root/dns/etch *(rw,no_root_squash,sync,subtree_check)

Now let other mount it through NFS:

i2:~/dns/etch# exportfs -r

Now you will be able to mount the root filesystem. The default kernel on the dns-323 is able to mount an NFS filesystem. Now let's hook to the serial port. Mine is on /dev/ttyS0, but it depends on where you have it plugged in.

root@desk:~# ~cminyard/kermit -l /dev/ttyS0 -b 115200
C-Kermit 8.0.209, 17 Mar 2003, for Linux
 Copyright (C) 1985, 2003,
  Trustees of Columbia University in the City of New York.
Type ? or HELP for help.
(/root/) C-Kermit>set carrier-watch off
(/root/) C-Kermit>c
Connecting to /dev/ttyS0, speed 115200
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------

Now power the system on, and quickly type the space then “1” keys. This will fall into uboot. Then we will boot on the NFS partition we just created and exported. Substitute your IP address with the one I use.

 ** LOADER **
 ** MARVELL BOARD: RD-88F5181-POS-NAS LE

U-Boot 1.1.1 (Nov 13 2006 - 14:01:34) Marvell version: 1.4.2

DRAM CS[0] base 0x00000000   size  64MB
DRAM Total size  64MB
[8192kB@ff800000] Flash:  8 MB
Addresses 20M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (20M - 16M): Done
*** Warning - bad CRC, using default environment


Soc: MV88F5181 Rev 3
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz


 Init usb device.
PCI 0: PCI Express Root Complex Interface
PCI 1: Conventional PCI, speed = 33000000
Hit any key to stop autoboot:  0
Marvell>>

Boot the thing using NFS.

Marvell>>setenv bootargs root=/dev/nfs nfsroot=192.168.27.126:/root/dns/etch ip=dhcp console=ttyS0,115200 init=/bin/sh
Marvell>> bootm FF820000
## Booting image at ff820000 ...
   Image Name:   Linux-2.6.12.6-arm1
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1518100 Bytes =  1.4 MB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
OK

Starting kernel ...

Uncompressing Linux..................................................................................................... done, booting the kernel.
Linux version 2.6.12.6-arm1 (cminyard@i2) (gcc version 3.3.3) #7 Sat Sep 8 18:42:37 CDT 2007
CPU: ARM926EJ-Sid(wb) [41069260] revision 0 (ARMv5TEJ)
CPU0: D VIVT write-back cache
CPU0: I cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
CPU0: D cache: 32768 bytes, associativity 1, 32 byte lines, 1024 sets
Machine: MV-88fxx81
Using UBoot passing parameters structure
Sys Clk = 166000000, Tclk = 166000000


- Warning - This LSP release was tested only with U-Boot release 1.7.3

Memory policy: ECC disabled, Data cache writeback
Built 1 zonelists
Kernel command line: root=/dev/nfs nfsroot=192.168.27.126:/root/dns/etch ip=dhcp console=ttyS0,115200 init=/bin/sh
.
.
.
IP-Config: Got DHCP answer from 0.0.0.0, my address is 192.168.27.54
IP-Config: Complete:
      device=egiga0, addr=192.168.27.54, mask=255.255.255.0, gw=192.168.27.254,
     host=192.168.27.54, domain=minyard.local, nis-domain=(none),
     bootserver=0.0.0.0, rootserver=192.168.27.126, rootpath=
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
Looking up port of RPC 100003/2 on 192.168.27.126
Looking up port of RPC 100005/1 on 192.168.27.126
VFS: Mounted root (nfs filesystem).
Freeing init memory: 112K

sh-3.1# 

Now we are ready to clean up debian.

sh-3.1# cd /var/cache/bootstrap
sh-3.1# export PATH
sh-3.1# mount -t proc proc /proc
warning: can't open /etc/fstab: No such file or directory
sh-3.1# dpkg --force-all -i libc6*deb
Selecting previously deselected package libc6.
(Reading database ... 0 files and directories currently installed.)
Unpacking libc6 (from libc6_2.3.6.ds1-13etch2_arm.deb) ...
dpkg: libc6: dependency problems, but configuring anyway as you request:
 libc6 depends on tzdata; however:
  Package tzdata is not installed.
Setting up libc6 (2.3.6.ds1-13etch2) ...

sh-3.1# dpkg --force-all -i dpkg*deb
Selecting previously deselected package dpkg.
dpkg: regarding dpkg_1.13.25_arm.deb containing dpkg, pre-dependency problem:
 dpkg pre-depends on coreutils (>= 5.93-1)
dpkg: warning - ignoring pre-dependency problem !
(Reading database ... 306 files and directories currently installed.)
Unpacking dpkg (from dpkg_1.13.25_arm.deb) ...
dpkg: dpkg: dependency problems, but configuring anyway as you request:
 dpkg depends on coreutils (>= 5.93-1); however:
  Package coreutils is not installed.
Setting up dpkg (1.13.25) ...

sh-3.1# dpkg --force-all -i libc6*deb
(Reading database ... 532 files and directories currently installed.)
Preparing to replace libc6 2.3.6.ds1-13etch2 (using libc6_2.3.6.ds1-13etch2_arm.deb) ...
Unpacking replacement libc6 ...
dpkg: libc6: dependency problems, but configuring anyway as you request:
 libc6 depends on tzdata; however:
  Package tzdata is not installed.
Setting up libc6 (2.3.6.ds1-13etch2) ...

sh-3.1# dpkg -iGREB .

The above will ask questions and generate a lot of output. Continue re-running this command until you don't get any errors. It will tell you at the end of the run if there were errors. It took 4 times for me to get this to be 100% clean.

It gave an error at the end about /var/mail already existing. I had to 'rm /var/mail' after the 3rd time to get it to run clean.

sh-3.1# cd /etc
sh-3.1# vi inittab

Find the line that says:

#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100

and turn it into:

T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

Now we need to save off the old MTD files, in case we need to restore them later.

sh-3.1# cd /root/
sh-3.1# mkdir oldmtd
sh-3.1# cd oldmtd/
sh-3.1# dd if=/dev/mtdblock0 of=mtd0
128+0 records in
128+0 records out
65536 bytes (66 kB) copied, 0.076184 seconds, 860 kB/s
sh-3.1# dd if=/dev/mtdblock1 of=mtd1
128+0 records in
128+0 records out
65536 bytes (66 kB) copied, 0.076254 seconds, 859 kB/s
sh-3.1# dd if=/dev/mtdblock2 of=mtd2
3072+0 records in
3072+0 records out
1572864 bytes (1.6 MB) copied, 1.71174 seconds, 919 kB/s
sh-3.1# dd if=/dev/mtdblock3 of=mtd3
12672+0 records in
12672+0 records out
6488064 bytes (6.5 MB) copied, 6.89164 seconds, 941 kB/s
sh-3.1# dd if=/dev/mtdblock4 of=mtd4
384+0 records in
384+0 records out
196608 bytes (197 kB) copied, 0.214457 seconds, 917 kB/s

The most interesting ones are mtd2 (kernel) and mtd3 (filesystem) Now save off the old filesystem. You will need some files from it later. It's in a uboot image, so we have to play around a little to extract it.

sh-3.1# cd ..
sh-3.1# dd if=oldmtd/mtd3 of=olddnsfs.gz bs=64 skip=1
101375+0 records in
101375+0 records out
6488000 bytes (6.5 MB) copied, 6.6507 seconds, 976 kB/s
sh-3.1# gzip -d olddnsfs.gz

gzip: olddnsfs.gz: decompression OK, trailing garbage ignored
sh-3.1# mount -o loop olddnsfs /mnt/
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
sh-3.1# mkdir dns323-oldfs
sh-3.1# cp -a /mnt/* dns323-oldfs/

Now reboot. Remember, press space then “1” to stop at uboot. We will now boot with the standard init.

sh-3.1# sync
sh-3.1# reboot -f
.
.
.
Marvell>> setenv bootargs root=/dev/nfs nfsroot=192.168.27.126:/root/dns/etch ip=dhcp console=ttyS0,115200
Marvell>> bootm FF820000
## Booting image at ff820000 ...

You should eventually get to the following:

Debian GNU/Linux 4.0 192.168.27.54 ttyS0

192.168.27.54 login:

Now log in as “root”

192.168.27.54 login: root
Linux 192.168.27.54 2.6.12.6-arm1 #4 Sat Sep 8 01:23:18 CDT 2007 armv5tejl

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

First get the mac_read command so we can properly set our MAC address:

192:~# cd dns323-oldfs/
192:~/dns323-oldfs# mount -o loop image.cfs /mnt
192:~/dns323-oldfs# cp /mnt/sbin/mac_read /usr/local/sbin/
192:~/dns323-oldfs# chmod +x /usr/local/sbin/mac_read
192:~/dns323-oldfs# cp ~/dns323-oldfs/lib/ld-uClibc.so.0 /lib
192:~/dns323-oldfs# cp ~/dns323-oldfs/lib/libc.so.0 /lib
192:~/dns323-oldfs# chmod +x /lib/ld-uClibc.so.0
192:~/dns323-oldfs# chmod +x /lib/libc.so.0

Now set up networking:

192:~# cd /etc/network
192:/etc/network# vi interfaces

The exact format of the interfaces file depends on your configuration. Let's use:

auto lo
#auto lo egiga0

iface lo inet loopback

iface egiga0 inet dhcp
        pre-up /usr/local/sbin/mac_read

We'll replace the first line with the commented out line later, so it won't mess you up if you reboot. We won't start it up yet, we'll wait, as it will mess up our NFS mount. If you do an ifconfig, you'll notice that the mac address is 00:00:00:00:00:00. This will be fixed by mac_read sometime later.

Now we'll set up fan control.

192:/etc# cd /etc
192:/etc# vi rc.local

Add the following before the “exit 0” in rc.local:

echo "Starting fan control"
export PATH=/usr/local/sbin:$PATH
fan.script
fancontrol &

And do:

192:/etc# cp ~/dns323-oldfs/sbin/fan.script /usr/local/sbin/
192:/etc# cp /mnt/sbin/fancontrol /usr/local/sbin
192:/etc# cp /mnt/sbin/fanspeed /usr/local/sbin/

Now set up fstab:

192:/etc# vi fstab

Let's use:

# <file system> <mount point>           <type>  <options>     <dump>  <pass>
#/dev/sda1       none                    swap    sw              0       0
#/dev/sdb1       none                    swap    sw              0       0
proc            /proc                   proc    defaults        0       0
#/dev/md0        /                       ext3    defaults        0       2

You can add other stuff later, but that will be enough to get you going. We will uncomment these once we get them on the disk.

Now lets create some things on the disk. I'll demo creating a / filesystem of 5gb on a RAID 1 volume, and an LVM you can create whatever you want to with.

For some odd reason D-Link didn't compile the scsi disk driver into the kernel. No matter, easy enough to handle:

192:~# mkdir /lib/modules/2.6.12.6-arm1
192:~# cp /mnt/scsi/sd_mod.ko /lib/modules/2.6.12.6-arm1/
192:~# depmod -a
192:~# modprobe sd_mod
SCSI device sda: 490234752 512-byte hdwr sectors (251000 MB)
SCSI device sda: drive cache: write back
SCSI device sda: 490234752 512-byte hdwr sectors (251000 MB)
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda4
Attached scsi disk sda at scsi1, channel 0, id 0, lun 0


192:/etc# fdisk /dev/sda

The number of cylinders for this disk is set to 30515.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help): p

Disk /dev/sda: 251.0 GB, 251000193024 bytes
255 heads, 63 sectors/track, 30515 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          66      530113+  82  Linux swap / Solaris
/dev/sda2              93       30515   244372747+  83  Linux
/dev/sda4              67          92      208845   83  Linux

Partition table entries are not in disk order

Command (m for help): d
Partition number (1-4): 2

Command (m for help): d
Partition number (1-4): 4

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (67-30515, default 67):
Using default value 67
Last cylinder or +size or +sizeM or +sizeK (67-30515, default 30515): +5G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (676-30515, default 676):
Using default value 676
Last cylinder or +size or +sizeM or +sizeK (676-30515, default 30515):
Using default value 30515

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sda: 251.0 GB, 251000193024 bytes
255 heads, 63 sectors/track, 30515 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          66      530113+  82  Linux swap / Solaris
/dev/sda2              67         675     4891792+  fd  Linux raid autodetect
/dev/sda3             676       30515   239689800   fd  Linux raid autodetect

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
SCSI device sda: 490234752 512-byte hdwr sectors (251000 MB)
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3
SCSI device sda: 490234752 512-byte hdwr sectors (251000 MB)
SCSI device sda: drive cache: write back
 sda: sda1 sda2 sda3
Syncing disks.

If you have two disks, do the same (starting with the fdisk command) for sdb

Now we need some debian packages to install. First, many routers will not route 00:00:00:00:00:00 MAC addresses, so do:

192:/etc# mac_read
MAC = 00:19:5B:EC:E7:1B
egiga0: mac address changed
egiga0: link down
192:/etc# egiga0: link up<5>, full duplex<5>, speed 100 Mbps<5>

Now set up apt:

192:/etc# vi /etc/apt/sources.list

Set it to:

# See sources.list(5) for more information, especialy
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free

# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

Edit /etc/resolv.conf and point it to your DNS server. Look on your running system to see what it should be.

Edit /etc/hostname and put your machine's name in it.

Edit /etc/hosts and add your host, like (replacing the names with your name, but leave localhost alone):

127.0.0.1               server.minyard.local server localhost

Now update apt:

192:/etc# apt-get update

This may take some time and generates some output. It may generate an error on a couple of gets, this is probably not a big deal.

Let's set up the initrd now:

192:/etc# cd /initrd
192:/initrd# apt-get install busybox
192:/initrd# mkdir bin dev lib proc root
192:/initrd# cp /lib/ld-linux.so.2 lib
192:/initrd# cp /lib/libc.so.6 lib/
192:/initrd# cp /lib/libcrypt.so.1 lib
192:/initrd# cp /lib/libm.so.6 lib
192:/initrd# cp /bin/busybox bin
192:/initrd# cp /sbin/pivot_root bin/
192:/initrd# cp /sbin/insmod bin/
192:/initrd# ln -s busybox bin/sh
192:/initrd# cp -a /dev/console /dev/md0 /dev/md1 /dev/null /dev/ram0 /dev/tty /dev/ttyS0 /dev/zero /dev/sda2 /dev/sda3 /dev/sdb2 /dev/sdb3 dev
192:/initrd# cp /lib/modules/2.6.12.6-arm1/sd_mod.ko .
192:/initrd# vi bin/init

Put the following in bin/init:

#!/bin/sh

echo "/init script running..."

export init=/bin/init
export rootmnt=/root

echo -n " [*] mounting /proc..."
mount -t proc proc /proc || die "failed to mount /proc"
echo "done"

# Standard kernel from D-Link doesn't have sd_mod built in.
echo -n " [*] loading sd_mod..."
insmod /sd_mod.ko
echo "done"

echo -n " [*] assembling RAID arrays..."
echo 'DEVICE /dev/sda2 /dev/sda3 /dev/sdb2 /dev/sdb3' >mdadm.conf
mdadm --examine --scan --config=partitions >>mdadm.conf
mdadm --assemble --scan --config=mdadm.conf
echo "done"

echo -n " [*] mounting /root..."
mount /dev/md0 ${rootmnt}
echo "done"

echo -n " [*] Cleaning up..."
# Clean up
umount -l /proc
echo "done"

# Pivot Root
echo " [*] Switching to real root fs..."
# Don't pass in args, they are bogus.
cd /root
pivot_root . old_root
exec /usr/sbin/chroot . sh -c 'umount /old_root; /usr/local/sbin/freeramdisk /dev/ram0; exec /sbin/init' </dev/console >/dev/console 2>&1

#shouldn't get here!
echo "switch_root must have failed"
exec /bin/sh

And make it executable:

192:/initrd# chmod +x bin/init

You will need to install mkimage from mkimage.gz into /usr/local/bin after un-gzipping it. Make sure to chmod +x' 'the file, too, so it will be executable. The sources are available as part of the uboot code from D-Link, but I've pared it down in mkimage.tgz. You should also install freeramdisk from freeramdisk.gz into /usr/local/sbin'' after un-gzipping it. chmod this one, too. The source is in freeramdisk.c.gz.

Now create the tools to build the init ramdisk:

192:/initrd# cd /root
192:/initrd# vi make_uinitrd

Set it to:

rm -f initrd.img.gz
dd if=/dev/zero of=initrd.img bs=4096 count=1024
mke2fs -F initrd.img
mkdir -p mnt
mount -o loop initrd.img mnt
cp -a /initrd/* mnt/
umount mnt
gzip initrd.img
mkimage -a 0x800000 -e 0x800000 -n 'boot ramdisk' -A arm -O linux -T ramdisk -C gzip -d initrd.img.gz initrd.uImage

And make it executable

192:~# chmod +x make_uinitrd

Now get the mdadm package:

192:/etc# apt-get install mdadm

If it asks you for arrays needed for the root filesystem, you can say “None”, and not to start MD arrays automatically.

Now put mdadm onto the initrd:

192:~# cp /sbin/mdadm /initrd/bin/

Now you can create the RAID arrays. If you have one disk, I still recommend using RAID so you can mirror the second disk if you add it.

For two disks:

192:/etc# mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2
192:/etc# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sda3 /dev/sdb3

If you have one disk:

192:/etc# mdadm --create /dev/md0 --level=1 --force --raid-devices=1 /dev/sda2
192:/etc# mdadm --create /dev/md1 --level=1 --force --raid-devices=1 /dev/sda3

It may ask you questions, just tell it “yes”. Now create the filesystem on /dev/md0.

192:/etc# mke2fs -j /dev/md0

We will make md1 into an LVM later. Now copy everything into the new filesystem:

192:/etc# umount /mnt
192:/etc# mount /dev/md0 /mnt
kjournald starting.  Commit interval 5 seconds
EXT3 FS on md0, internal journal
EXT3-fs: mounted filesystem with ordered data mode.
192:/etc# cp -a /bin /boot /dev /etc /home /initrd /lib /media /opt /root /sbin /srv/ /usr /var /mnt
192:/etc# mkdir /mnt/mnt /mnt/proc /mnt/sys /mnt/tmp
192:/etc# chmod 777 /mnt/tmp
192:/etc# chmod +t /mnt/tmp
192:/etc# mkdir /mnt/old_root

Now let's edit the fstab on the disk:

192:/etc# vi /mnt/etc/fstab

Remove the comments from the /dev/sda1 and /dev/md0 lines. If you have a second disk, you can remove the comment form /dev/sdb1. We can also edit the network config:

192:/etc# vi /mnt/etc/network/interfaces

Delete the line that says “auto lo” and uncomment the next “auto” line.

Now we are ready to boot set up to boot from disk. Create the initrd:

192:/etc# cd /root
192:~# ./make_uinitrd
1024+0 records in
1024+0 records out
4194304 bytes (4.2 MB) copied, 2.7383 seconds, 1.5 MB/s
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1024 inodes, 4096 blocks
204 blocks (4.98%) reserved for the super user
First data block=1
Maximum filesystem blocks=4194304
1 block group
8192 blocks per group, 8192 fragments per group
1024 inodes per group

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 23 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
Image Name:   boot ramdisk
Created:      Sat Sep 15 09:05:22 2007
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    1227711 Bytes = 1198.94 kB = 1.17 MB
Load Address: 0x00800000
Entry Point:  0x00800000

Now write the initrd into the flash and reboot:

192:~# dd if=/root/initrd.uImage of=/dev/mtdblock3
192:~# umount /mnt
192:~# reboot

You should boot from disk now. Do not do the “space” “1” thing, you want to boot using the initrd you just put onto the disk.

Log in as root, set the root password, and you are in a fully functional debian system. Not much will be installed, that will depend on your needs. 64MB is plenty of room to run a server, though you may run into problems if you run programs that use X.

A few other things you might want to do:

Makes the hwclock work right:

server:~/dns323-oldfs# cd /dev
server:/dev# MAKEDEV rtc

Provide access to the temperature sensor:

server:~# cd ~/dns323-oldfs
server:~/dns323-oldfs# mount -o loop image.cfs /mnt/
server:~/dns323-oldfs# cp /mnt/sbin/temperature /usr/local/sbin/
server:~/dns323-oldfs# temperature
temperature - query and set the temperature sensor

Usage: temperature [function]

Functions:
 h - show this help
 w [1,2] degree - set temperature degree in register 1:Thyst 2:Tos
 g [0~2] - get temperature in register 0:temperature 1:Thyst 2:Tos
server:~/dns323-oldfs# temperature g 0
Temperature type : Centigrade
<temperaturertc>: get temperature = 46
server:~/dns323-oldfs# umount /mnt

I'm not sure what all the sensor values mean here.

If you want to go back to the normal DNS-323 software, just restore the contents of /dev/mtdblock3:

192:~# dd if=/root/oldmtd/mtd3 of=/dev/mtdblock3

The DNS-323 may be confused about the partitions, not sure.


Navigation

Personal Tools