====== ARMedslack on the DNS-323 ====== http://www.armedslack.org/ 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 >/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.