ARMedslack on the DNS-323
ARMedslack is a port of the Slackware® Linux distribution to the ARM architecture.
IMPORTANT:
- Currently, the kernel only works on DNS-323 rev A1
- This HOWTO assumes that you have configured two separate disks. If you're running RAID, you're on your own.
Download files
Telnet into your DNS-323, and download ARMedslack packages from the slackware.pl mirror:
# mkdir -p /mnt/HD_a2/home/armedslack # cd /mnt/HD_a2/home/armedslack # rsync -avP inreto.de::dns323/armedslack/get-armedslack.sh . # ./get-armedslack.sh
Get kernel and ramdisks:
# cd /ffp/boot # rsync -avP inreto.de::dns323/armedslack/ramdisks .
Installer
Boot the installer ramdisk:
# cd /ffp/boot/ramdisks # ./installer.sh
As usual, wait a few seconds, open a new telnet session and login as root (no password required). If you cannot establish a new connection within a minute or two, the loader might have failed due to memory fragmentation. Reboot your box and retry.
We install to a 'linux' directory on /dev/sda2, and set the ROOT environment variable for installpkg:
# mount /dev/sda2 /mnt # mkdir -p /mnt/linux # export ROOT=/mnt/linux
We're going to chroot to /mnt/linux later for the main package installation. Make sure we can access the packages, then:
# mkdir -p /mnt/linux/old # mount /dev/sda2 /mnt/linux/old
Some packages (e.g. sysvinit) need to know that we're installing Slackware:
# touch /etc/slack-installer
Package tools
We first unpack the package tools to get the installpkg utility:
# cd /mnt/linux # tar xzf /mnt/linux/old/home/armedslack/armedslack-current/slackware/a/pkgtools*.tgz # rm -rf install
Next, we prepare the chroot by installing a few essential packages:
# cd /mnt/linux/old/home/armedslack/armedslack-current/slackware # /mnt/linux/sbin/installpkg a/*.tgz
Ignore the warnings.
Chroot
We can now mount the usual virtual filesystems and enter the chroot.
# cd /mnt/linux # mount -t proc proc proc # mount -t sysfs sysfs sys # chroot . /bin/bash -ls
Ignore the 'cat' error.
ARMedslack packages
Unset $ROOT now:
# unset ROOT
Ready to install ARMedslack packages. First, properly reinstall the a series:
# cd /old/home/armedslack/armedslack-current/slackware # upgradepkg --reinstall a/*.tgz
Continue with:
# installpkg ap/*.tgz d/*.tgz l/*.tgz n/*.tgz tcl/*.tgz
This takes a while and installs about 2GB.
Finally, remove the following packages which are specific to a different hardware platform:
# removepkg kernel-modules kernel_versatile
Network Configuration
We start with the network config:
# cd # netconfig
Next, activate the telnet or ssh server:
For telnet, enable telnet via inetd:
# sed -i '/^#telnet/ s@^#@@' /etc/inetd.conf # chmod a+x /etc/rc.d/rc.inetd
Double check with:
# grep telnet /etc/inetd.conf telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
To activate the ssh server:
# chmod a+x /etc/rc.d/rc.sshd
root password
Now, set a root password:
# passwd
To allow root login over telnet/serial, change /etc/securetty:
# sed -i '/^#[pt]/ s/#//' /etc/securetty
Time zone
To select your timezone, run
# timeconfig
System initialization
Next, we adjust the boot files. Since the DNS-323 is headless, we don't need the standard virtual consoles:
# sed -i 's@^c@#&@' /etc/inittab
But we want the serial console. The following sed command removes the comment character from the 's1' entry:
# sed -i '/^#s1:/ s@#@@' /etc/inittab
We also need to disable automatic filesystem checks at boot. We do this by simply replacing /sbin/fsck with /bin/true in rc.S:
# sed -i 's@/sbin/fsck@/bin/true@' /etc/rc.d/rc.S
Also, rc.S will complain if the root filesystem is mounted read-write. Make it continue with:
# sed -i '/read junk/d' /etc/rc.d/rc.S
Disable unneeded services
By default, ARMedslack starts a number of services that we don't need on the DNS-323. To disable them, do:
# cd /etc/rc.d # chmod a-x rc.acpid rc.alsa rc.pcmcia rc.wireless rc.yp.new # rm rc.modules-* rc.font.new
fstab
Get the inital /etc/fstab:
# cd /etc # rsync -avP inreto.de::dns323/armedslack/etc/fstab .
It looks like this:
# cat fstab /dev/sda1 swap swap defaults 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 devpts /dev/pts devpts mode=0620 0 0 tmpfs /dev/shm tmpfs defaults 0 0
fan controller
Get and unpack the fanctl source code:
# cd # wget http://www.inreto.de/dns323/utils/fanctl-2.tar.gz # tar xzvf fanctl-2.tar.gz
Compile and install:
# cd fanctl-2 # make # cp fanctl /usr/sbin # cp fan.conf /etc
Add fanctl to /etc/rc.d/rc.local, so it's started automatically on boot:
# echo 'fanctl /etc/fan.conf >/dev/null 2>&1 </dev/null &' >>/etc/rc.d/rc.local
Done
Finally, exit the chroot, and reboot into the firmware:
# exit # reboot
Start ARMedslack with:
# cd /ffp/boot/ramdisks # ./linux.sh
Because SSH keys are generated during the initial boot, it takes a few minutes.
The linux initramfs will search partitions for linux/sbin/init, and if found, chroot and exec sbin/init.