===== Install Debian Sarge - by Mike Gore =====
**Please feel free to update, cleanup or correct this page**
**What is this?**
This document shows how to setup Debian on the DNS-323.
Note: this technique installs a Debian environment into the existing system, and does not require you to reflash or hack the NAS.
==== 1. prerequisites =====
You should already have [[Telnet]] access to your device.
Or better, install ssh and disable Telnet. See:
http://www.penoycentral.net/linuxnix/configuring-ssh-and-rsync-in-dlink-dns-323/
==== 2. base system ====
You have two options to proceed. You can either download a preconfigured image or create your own.
=== 2A. download a minimal image ===
* Debian Sarge 3.1 - [http://wopr.levring.nu/sarge.tar] (83Mb)
* Debian Etch 4.0 - [http://dev.skcserver.de/dns323/etch.tar] (169 Mb)
* Debian Etch 4.0 (U.S. mirror) - [http://www.bfaber.com/dl/etch.tar]
If you wish to use one of these, simply download it and proceed to step 3 below.
=== 2B. create a minimal image ===
** You will need a Debian Linux x86** system to create the install image.
(My system is a Ubuntu Dapper x86 system)
Make sure you have **cdebootstrap smbfs** installed
apt-get install cdebootstrap smbfs
**Note - I called my DNS-323 "disk"**
We will now mount the DNS-323 on the host Debian system. Your system has to be formatted with an admin password. I will use **disk** for the DNS-323 and **/mnt** for the mount points in this document - you can use whatever you like.
mount -t cifs //disk/Volume_1 /mnt -o username=admin
**Or** use the IP address of the DNS-323
mount -t cifs //10.0.0.1/Volume_1 /mnt -o username=admin
We will now "bootstrap" an ARM debian system using our x86 debian system
**note it will error out at the final install phase - this is just fine**
This process will create an ARM debian environment under a directory called **sarge**
cdebootstrap -aarm sarge sarge ftp://ftp.debian.org/debian
For the current stable (**etch**) you should use the following
When you use this line, you should replace all "sarge" texts with "**etch**".
cdebootstrap -aarm etch etch ftp://ftp.debian.org/debian
*update by Explisit (22rd Feb 08) - Etch source for arm architecture are not available from ftp://ftp.debian.org/debian try different mirror for instance ftp://ftp.bg.debian.org/debian
Archive the **sarge** directory we created with the bootstrap
tar cf sarge.tar sarge
Copy this tar file to **/mnt/HD_a2** (Update 20 jan 2008, Stefan: The /HD_a2 is not needed because we mounted /Volume_1 in /mnt)
cp sarge.tar /mnt
==== 3. finalizing installation ====
*update by Berry (26th March 08) - If you have firmware 1.04 then make sure to turn off Oplocks now on the web interface before you untar (Advanced / Network access)
# On the host x86 system reboot the DNS-323 using the web interface
# Telnet or ssh to the DNS-323
telnet disk
**Note We are now logged into the DNS-323**
# CD to the hard disk we just copied everything to
cd /mnt/HD_a2
# At this point, you should untar the {sarge,etch}.tar file that you made above
./lnx_bin/busybox3 tar -xf sarge.tar
Or for firmware 1.04:
tar -xf sarge.tar
# Replace sarge.tar with etch.tar above if you built an etch install
# chroot into the partly bootstrapped sarge debian root
./lnx_bin/busybox3 chroot sarge /bin/bash
Or for firmware 1.04:
chroot sarge /bin/bash
# At this point you should have a shell in the new debian root
# Fix the broken packages caused by the failed cdebootstrap - above
** Note - 08 dec 2007 by Chris - I think before proceeding you want to be sure that /proc, /dev, and friends all contain
something reasonable - for example as set up by the mount commands in the fun_plug listed at the bottom of this page.
Some of the installers seem to get confused when they can't find fstab, /dev, etc. **
*update by Richard (23rd Dec 07) I think Chris (above) is right, go through the fun_plug and type in the commands by hand. Also, do dpkg*deb first (below), then libc6.
*update by Paul (18 Apr 08) This all seems much simpler with 1.04. no need to do any of those things afaict.
cd /var/cache/bootstrap
dpkg --force-all -i libc6*deb
dpkg --force-all -i dpkg*deb
dpkg --force-all -i libc6*deb
# repeat next step several times until no more errors\\
(if you are using the downloaded sarge package the .deb files are located in "/var/cache/apt/archives" not in "/var/cache/bootstrap"!)\\
dpkg -iGREB .
# check remaining dpkg errors if any
#
*update by Richard (23rd Dec 07) I had to delete /var/mail to get base_files to install properly
*update by Michael (20th June 08) I had to delete /var/mail in sarge. etch was fine.
==== customizing ====
# Edit your /etc/resolv.conf so that the system can find the Debian servers: See this [[howto:chroot_debian:resolv.conf|sample]]
# Edit your /etc/apt/sources.list so that includes some servers. For instance:
deb http://ftp1.ca.debian.org/debian stable main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free
# Update packages
apt-get install debian-archive-keyring
apt-get update
apt-get dist-upgrade
# make root password
passwd root
# Go nuts installing packages
apt-get install gcc
apt-get install make
apt-get install unzip
apt-get install flex bison
apt-get install g++
# etc ....
===Create a **fun_plug** script===
If you would like Debian to automatically begin after it is installed, you will need to add some commands to your startup (fun_plug) script.
[[.:chroot_debian:fun_plug|Download the Debian Fun Plug Script here]]
Copy this fun_plug to /mnt **we assume you still have the DNS-323 mounted**
On the DNS-323
cd /mnt/HD_a2
chmod 755 fun_plug
Create a **linuxrc** script
[[.:chroot_debian:linuxrc|Download the Debian linuxrc Script here]]
Copy this linuxrc to /mnt (we assume you still have the DNS-323 mounted*
On the DNS-323
cd /mnt/HD_a2/sarge
chmod 755 linuxrc
# Note: be sure to install both the linuxrc script *and* the fun_plug script before rebooting!
** Reboot the DNS-323 and test **
=== Manual chroot to a Debian etch when using fonz funplug ===
To do a manual chroot to a "fresh" extracted Debian etch,
use the following command:
env -i TERM=vt102 USER=root $SBINDIR/chroot /mnt/HD_a2/etch /bin/bash -ls
(Try this if you get errors such as "sh: /mnt/HD_a2/fun_plug.d/bin/ls: No such file or directory" or
"dpkg - error: PATH is not set")
If there are still issues like "dpkg - error: PATH is not set" export PATH into your chrooted system. First change to a bash shell of your etch/sarge by typing the previous command. The use export PATH:
env -i TERM=vt102 USER=root $SBINDIR/chroot /mnt/HD_a2/etch /bin/bash -ls
etch /> export PATH
[[howto:crosscompile|Cross Compile Software for the DNS-323]]