Install Debian 5.0 (Lenny) On Buffalo Linkstation Mini
From NAS-Central Buffalo - The Linkstation Wiki
Revision as of 22:03, 15 July 2010 by Rpinchbeck (Talk | contribs)
|
Contents |
Prerequisites
- Buffalo LinkStation Mini using stock firmware
- This process was tested with model LS-WS1.0TGL/R1, but other models may work as well
- If your device has already been modified to run another operating system and/or firmware, see Revert Buffalo Linkstation Mini To Stock Firmware
- Computer which can boot ubuntu 9.04 successfully (most modern computers meet this requirement).
- Ubuntu 9.04 Desktop Edition CD-ROM (download and burn from http://releases.ubuntu.com/jaunty/ubuntu-9.04-desktop-i386.iso)
Overview
- Use ACP Commander to establish Telnet session with device.
- Uncouple secondary drive partitions from existing RAID configuration
- Partition and format secondary drive, install Debian 5.0, and prepare for initial boot.
- Reboot device, establish SSH session with device, and complete installation.
Prepare Device
Note: Do not attempt to execute the following commands as a single script. Instead, copy and paste each block of commands into a shell window and monitor the resulting output for errors.
- Disconnect power cable from device
- Move device switch to "on" position
- Connect network cable to device (Linkstation Mini)
- Connect power cable to device
- Wait for device to finish booting (no blinking lights)
- Open device web interface (factory default address is http://192.168.11.150, DHCP network users should check their DHCP client list)
- Remove existing RAID configuration (Disk Management | RAID Setup | RAID Array 1 | Change RAID Array ...)
- Create new RAID1 (mirroring) array (Disk Management | RAID Setup | RAID Array 1 ...) You may proceed immediately after the array has been created (you do not need to wait for the drive check to complete).'
- Boot Ubuntu 9.04 Desktop CD on computer
- Specify language (English)
- Enter live mode ("Try Ubuntu without any change to your computer")
- Open a new terminal window (Applications | Accessories | Terminal )
- Start a new bash shell with root privileges
sudo bash
- Install GNU Java package
apt-get update apt-get -q -y install gij
- Download ACP Commander software (acp_commander.jar)
wget http://downloads.nas-central.org/TOOLS/ALL_LS_KB_ARM9/ACP_COMMANDER/acp_commander.jar
- Determine IP address of device and assign it to environment variable (substitute appropriate IP address)
export IP_ADDRESS=192.168.11.150
- Instruct device to enable telnet and remove root password
gij -jar acp_commander.jar -t ${IP_ADDRESS} -o - Establish Telnet session with device
telnet ${IP_ADDRESS} - Login as root (no password required)
- Set recent date and time (prevent error messages about file dates, format=MMDDhhnnYYYY)
date 071600002010
- Kill all unnecessary processes
kill -9 $(ps | grep -vE '\[.*\]|(init)|(syslogd)|(klogd)|(getty)|(telnetd)|(-sh)|(ps)|(VmSize)|(grep)|(kill)|(awk)' | awk '{print $1}') - Free secondary drive (/dev/sdb) partitions from RAID configuration
mdadm --manage /dev/md0 --fail /dev/sdb1 mdadm --manage /dev/md1 --fail /dev/sdb2 mdadm --manage /dev/md10 --fail /dev/sdb5 mdadm --manage /dev/md2 --fail /dev/sdb6 mdadm --manage /dev/md0 --remove /dev/sdb1 mdadm --manage /dev/md1 --remove /dev/sdb2 mdadm --manage /dev/md10 --remove /dev/sdb5 mdadm --manage /dev/md2 --remove /dev/sdb6
- Make sure secondary drive is not in use
if hdparm -z /dev/sdb ; then echo; echo "SECONDARY DRIVE READY (/dev/sdb)"; echo; else grep sdb /proc/mounts /proc/mdstat; echo "Please check that /dev/sdb is not in use"; fi;
- Remove existing superblocks (if any) from secondary drive (ignore any errors)
mdadm --zero-superblock /dev/sdb mdadm --zero-superblock /dev/sdb1 mdadm --zero-superblock /dev/sdb2 mdadm --zero-superblock /dev/sdb3 mdadm --zero-superblock /dev/sdb4 mdadm --zero-superblock /dev/sdb5 mdadm --zero-superblock /dev/sdb6
The following commands will delete all existing partitions on the secondary drive and reconfigure it as follows...
Partition Mount Size Type Description 1 /boot 128MB fd linux raid autodetect 2 swap 256MB 82 linux swap 3 / (root) 12GB fd linux raid autodetect 4 /srv 100% fd linux raid autodetect - Repartition secondary drive (substitute partition sizes as desired)
PARTITION1_SIZE=128MB PARTITION2_SIZE=256MB PARTITION3_SIZE=12GB echo -e "d\n1\nd\n2\nd\n3\nd\n4\nn\np\n1\n\n+${PARTITION1_SIZE}\nn\np\n2\n\n+${PARTITION2_SIZE}\nn\np\n3\n\n+${PARTITION3_SIZE}\nn\np\n\n\nt\n1\nfd\nt\n2\n82\nt\n3\nfd\nt\n4\nfd\nw\n" | fdisk /dev/sdb - Create and activate swap partition
mkswap /dev/sdb2 swapon /dev/sdb2
- Create RAID volumes
echo "y" | mdadm --create --verbose /dev/md11 --level=1 --raid-devices=2 missing /dev/sdb1 echo "y" | mdadm --create --verbose /dev/md13 --level=1 --raid-devices=2 missing /dev/sdb3 echo "y" | mdadm --create --verbose /dev/md14 --level=1 --raid-devices=2 missing /dev/sdb4
- Format RAID volumes
mkfs.ext3 -F /dev/md11 mkfs.ext3 -F /dev/md13 mkfs.ext3 -F /dev/md14
- Mount RAID volumes
mkdir -p /mnt/lsmini mkdir -p /mnt/lsmini/boot mkdir -p /mnt/lsmini/srv mount -t ext3 /dev/md13 /mnt/lsmini mount -t ext3 /dev/md11 /mnt/lsmini/boot mount -t ext3 /dev/md14 /mnt/lsmini/srv
Install Debian System
- Install root filesystem (from archive of debootstrap stage 2 files)
cd /mnt/lsmini wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/5.0/bootstrap-debian-5.0.5-armel-stage2.tar.gz tar --extract --verbose --same-permissions --gzip --file /mnt/lsmini/bootstrap-debian-5.0.5-armel-stage2.tar.gz
- Install custom kernel (Debian 5.0 backported kernel 2.6.32-15)
cd /mnt/lsmini wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/5.0/kernel-2.6.32-15-debian-lsmini.tar.gz tar --extract --verbose --same-permissions --gzip --file kernel-2.6.32-15-debian-lsmini.tar.gz
- Install custom boot loader (force boot from /dev/md13)
cd /mnt/lsmini wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/initrd-md13-armv5tejl-softfloat-1.0.tar.gz tar --extract --verbose --same-permissions --gzip --file /mnt/lsmini/initrd-md13-armv5tejl-softfloat-1.0.tar.gz
- Prepare host settings (adjust host name and IP addresses as needed)
export HOST_NAME=lsmini export HOST_ADDRESS=192.168.1.77 export HOST_NETMASK=255.255.0.0 export HOST_GATEWAY=192.168.1.1
- Configure network interfaces (/etc/network/interfaces)
echo "# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or" >/mnt/lsmini/etc/network/interfaces echo "# /usr/share/doc/ifupdown/examples for more information." >>/mnt/lsmini/etc/network/interfaces echo "#" >>/mnt/lsmini/etc/network/interfaces echo "auto lo eth0" >>/mnt/lsmini/etc/network/interfaces echo "iface lo inet loopback" >>/mnt/lsmini/etc/network/interfaces echo "iface eth0 inet static" >>/mnt/lsmini/etc/network/interfaces echo " address ${HOST_ADDRESS}" >>/mnt/lsmini/etc/network/interfaces echo " netmask ${HOST_NETMASK}" >>/mnt/lsmini/etc/network/interfaces echo " gateway ${HOST_GATEWAY}" >>/mnt/lsmini/etc/network/interfaces - Configure host name (/etc/hostname)
echo "${HOST_NAME}" >/mnt/lsmini/etc/hostname - Configure host mappings (/etc/hosts)
echo "127.0.0.1 localhost" >/mnt/lsmini/etc/hosts echo "${HOST_ADDRESS} ${HOST_NAME}" >>/mnt/lsmini/etc/hosts - Configure mount points (/etc/fstab)
WARNING: Do not modify the last column... any value other than zero will cause the device to hang (at the console) on disk errors. Don't find out the hard way.
echo "/dev/sdb2 none swap sw,pri=1 0 0" >/mnt/lsmini/etc/fstab echo "/dev/md13 / ext3 noatime,errors=remount-ro 0 0" >>/mnt/lsmini/etc/fstab echo "/dev/md11 /boot ext3 noatime,errors=remount-ro 0 0" >>/mnt/lsmini/etc/fstab echo "/dev/md14 /srv ext3 noatime,errors=remount-ro 0 0" >>/mnt/lsmini/etc/fstab echo "shm /dev/shm tmpfs noatime,nodev,nosuid,noexec 0 0" >>/mnt/lsmini/etc/fstab
- Configure network name resolution (/etc/resolv.conf)
cp -a /etc/resolv.conf /mnt/lsmini/etc/resolv.conf
- Change root password (new password = lsmini)
export SED_FILE='/mnt/lsmini/etc/shadow' export SED_SEARCH='^\s*root\:\*?\:' export SED_REPLACE='root:$6$bmlbpJYn$xAgZr6KxoRLjDcPZNDBcnMF52gZrU7xkib43LhSlAvzVS4OqmiHaxB0GInPtoaPQ2FguHQQuxM95cMfvUnYn31:' sed -r "s/${SED_SEARCH}/${SED_REPLACE}/" -i ${SED_FILE} - Prepare for reboot (Overwrite factory installed boot files with custom ones)
cd /mnt/lsmini rm -rf /boot/* cp -a /mnt/lsmini/boot/* /boot/
- Wait for RAID synchronization to complete
while egrep -iq '(recovery)|(resync)' /proc/mdstat; do clear cat /proc/mdstat sleep 1 done clear cat /proc/mdstat sync - Unmount RAID volumes
sync cd /mnt umount /mnt/lsmini/boot umount /mnt/lsmini/srv umount /mnt/lsmini sync
- Reboot device
reboot; logout
Configure Debian System
- Wait for device to finish booting (no blinking lights)
- Use SSH to login as root (password = lsmini)
ssh root@${IP_ADDRESS} - Change root password to something hard to guess
passwd root
- Configure package sources (/etc/apt/sources.list)
echo "deb http://ftp.debian.org lenny main contrib" >/etc/apt/sources.list echo "deb-src http://ftp.debian.org lenny main contrib" >>/etc/apt/sources.list echo "deb http://security.debian.org lenny/updates main contrib" >>/etc/apt/sources.list echo "deb-src http://security.debian.org lenny/updates main contrib" >>/etc/apt/sources.list
- Update package lists
apt-get update
- Install locales
umount /tmp # force /tmp to be on hard disk (this package requires more space than the device has in memory) apt-get -q -y install locales-all
- Select timezone
dpkg-reconfigure tzdata
- Ensure that date and time are correct
date
- Create devices for primary and secondary drives
cd /dev MAKEDEV sda MAKEDEV sdb
- Install hdparm
apt-get -q -y install hdparm
- Make sure primary drive is not in use (/dev/sda)
if hdparm -z /dev/sda ; then echo; echo "PRIMARY DRIVE READY (/dev/sda)"; echo; else grep sda /proc/mounts /proc/mdstat; echo "Please check that /dev/sda is not in use"; fi;
- Repartition primary drive (must have same partition sizes as secondary drive)
PARTITION1_SIZE=128MB PARTITION2_SIZE=256MB PARTITION3_SIZE=12GB echo -e "d\n1\nd\n2\nd\n3\nd\n4\nn\np\n1\n\n+${PARTITION1_SIZE}\nn\np\n2\n\n+${PARTITION2_SIZE}\nn\np\n3\n\n+${PARTITION3_SIZE}\nn\np\n\n\nt\n1\nfd\nt\n2\n82\nt\n3\nfd\nt\n4\nfd\nw\n" | fdisk /dev/sda - Format and activate swap partition on primary drive
mkswap /dev/sda2 swapon /dev/sda2
- Automatically mount swap partition (by adding it to /etc/fstab)
echo "/dev/sda2 none swap sw,pri=2 0 0" >>/mnt/lsmini/etc/fstab
- Install mdadm package (for administering software RAID configuration). Ignore any "/dev/MAKEDEV not found" failure message -- it is a bug which does not affect this process.
export DEBIAN_FRONTEND=noninteractive apt-get update apt-get -q -y install mdadm unset DEBIAN_FRONTEND
- Mount all automatic devices (listed in /etc/fstab)
mount -a
- Add primary drive partitions to RAID volumes (/dev/md11, /dev/md13, and /dev/md14)
echo "y" | mdadm --manage /dev/md11 --add /dev/sda1 echo "y" | mdadm --manage /dev/md13 --add /dev/sda3 echo "y" | mdadm --manage /dev/md14 --add /dev/sda4
- Install sudo package (for allowing users to obtain root privileges)
apt-get -q -y install sudo
- Add user (never login as root again, use sudo command instead)
export USER_NAME=visitor adduser ${USER_NAME} - Allow user to become super user (using sudo command)
echo "${USER_NAME} ALL=(ALL) ALL" >>/etc/sudoers - Wait for RAID synchronization to complete
while egrep -iq '(recovery)|(resync)' /proc/mdstat; do clear cat /proc/mdstat sleep 1 done clear cat /proc/mdstat sync - Restart device
reboot; logout;
Congatulations! You now have a working Debian 5.0 server running on a Buffalo Linkstation Mini.
See Also
References


