Install Debian 6.0 (Squeeze) On Buffalo Linkstation Mini
From NAS-Central Buffalo - The Linkstation Wiki
Rpinchbeck (Talk | contribs) (Edited regex in grep expression for usb vfat) |
Rpinchbeck (Talk | contribs) m (Added spaces to end of source blocks) |
||
| Line 55: | Line 55: | ||
<pre> | <pre> | ||
sudo bash | sudo bash | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 62: | Line 63: | ||
apt-get update | apt-get update | ||
apt-get -q -y install openjdk-6-jre | apt-get -q -y install openjdk-6-jre | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 68: | Line 70: | ||
<pre> | <pre> | ||
wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/acp_commander.jar | wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/acp_commander.jar | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 74: | Line 77: | ||
<pre> | <pre> | ||
IP_ADDRESS=192.168.11.150 | IP_ADDRESS=192.168.11.150 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 80: | Line 84: | ||
<pre> | <pre> | ||
java -jar acp_commander.jar -t ${IP_ADDRESS} -o | java -jar acp_commander.jar -t ${IP_ADDRESS} -o | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 86: | Line 91: | ||
<pre> | <pre> | ||
telnet ${IP_ADDRESS} | telnet ${IP_ADDRESS} | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 94: | Line 100: | ||
<pre> | <pre> | ||
date 050900002011 | date 050900002011 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 100: | Line 107: | ||
<pre> | <pre> | ||
kill -9 $(ps | grep -vE '\[.*\]|(init)|(syslogd)|(klogd)|(getty)|(telnetd)|(-sh)|(ps)|(VmSize)|(grep)|(kill)|(awk)' | awk '{print $1}') | kill -9 $(ps | grep -vE '\[.*\]|(init)|(syslogd)|(klogd)|(getty)|(telnetd)|(-sh)|(ps)|(VmSize)|(grep)|(kill)|(awk)' | awk '{print $1}') | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 115: | Line 123: | ||
mdadm --manage /dev/md10 --remove /dev/sdb5 | mdadm --manage /dev/md10 --remove /dev/sdb5 | ||
mdadm --manage /dev/md2 --remove /dev/sdb6 | mdadm --manage /dev/md2 --remove /dev/sdb6 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 121: | Line 130: | ||
<pre> | <pre> | ||
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; | 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; | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 164: | Line 174: | ||
PARTITION3_SIZE=12GB | 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 | 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 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 171: | Line 182: | ||
mkswap /dev/sdb2 | mkswap /dev/sdb2 | ||
swapon /dev/sdb2 | swapon /dev/sdb2 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 179: | Line 191: | ||
echo "y" | mdadm --create --verbose /dev/md13 --level=1 --raid-devices=2 missing /dev/sdb3 | 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 | echo "y" | mdadm --create --verbose /dev/md14 --level=1 --raid-devices=2 missing /dev/sdb4 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 187: | Line 200: | ||
mkfs.ext3 -F /dev/md13 | mkfs.ext3 -F /dev/md13 | ||
mkfs.ext3 -F /dev/md14 | mkfs.ext3 -F /dev/md14 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 198: | Line 212: | ||
mkdir -p /mnt/lsmini/srv | mkdir -p /mnt/lsmini/srv | ||
mount -t ext3 /dev/md14 /mnt/lsmini/srv | mount -t ext3 /dev/md14 /mnt/lsmini/srv | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 209: | Line 224: | ||
wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/6.0/bootstrap-debian-6.0.1a-armel-stage2.tar.gz | wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/6.0/bootstrap-debian-6.0.1a-armel-stage2.tar.gz | ||
tar --extract --verbose --same-permissions --gzip --file /mnt/lsmini/bootstrap-debian-6.0.1a-armel-stage2.tar.gz | tar --extract --verbose --same-permissions --gzip --file /mnt/lsmini/bootstrap-debian-6.0.1a-armel-stage2.tar.gz | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 217: | Line 233: | ||
wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/6.0/kernel-2.6.32-31-debian-lsmini.tar.gz | wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/6.0/kernel-2.6.32-31-debian-lsmini.tar.gz | ||
tar --extract --verbose --same-permissions --gzip --file kernel-2.6.32-31-debian-lsmini.tar.gz | tar --extract --verbose --same-permissions --gzip --file kernel-2.6.32-31-debian-lsmini.tar.gz | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 225: | Line 242: | ||
wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/initrd-md13-armv5tejl-softfloat-1.0.tar.gz | 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 | tar --extract --verbose --same-permissions --gzip --file /mnt/lsmini/initrd-md13-armv5tejl-softfloat-1.0.tar.gz | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 234: | Line 252: | ||
HOST_NETMASK=255.255.255.0 | HOST_NETMASK=255.255.255.0 | ||
HOST_GATEWAY=192.168.1.1 | HOST_GATEWAY=192.168.1.1 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 256: | Line 275: | ||
<pre> | <pre> | ||
echo "${HOST_NAME}" >/mnt/lsmini/etc/hostname | echo "${HOST_NAME}" >/mnt/lsmini/etc/hostname | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 263: | Line 283: | ||
echo "127.0.0.1 localhost" >/mnt/lsmini/etc/hosts | echo "127.0.0.1 localhost" >/mnt/lsmini/etc/hosts | ||
echo "${HOST_ADDRESS} ${HOST_NAME}" >>/mnt/lsmini/etc/hosts | echo "${HOST_ADDRESS} ${HOST_NAME}" >>/mnt/lsmini/etc/hosts | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 274: | Line 295: | ||
echo "/dev/md14 /srv ext3 noatime 0 0" >>/mnt/lsmini/etc/fstab | echo "/dev/md14 /srv ext3 noatime 0 0" >>/mnt/lsmini/etc/fstab | ||
echo "none /dev/shm tmpfs noatime,nodev,nosuid,noexec 0 0" >>/mnt/lsmini/etc/fstab | echo "none /dev/shm tmpfs noatime,nodev,nosuid,noexec 0 0" >>/mnt/lsmini/etc/fstab | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 280: | Line 302: | ||
<pre> | <pre> | ||
cp -a /etc/resolv.conf /mnt/lsmini/etc/resolv.conf | cp -a /etc/resolv.conf /mnt/lsmini/etc/resolv.conf | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 289: | Line 312: | ||
SED_REPLACE='root:$6$bmlbpJYn$xAgZr6KxoRLjDcPZNDBcnMF52gZrU7xkib43LhSlAvzVS4OqmiHaxB0GInPtoaPQ2FguHQQuxM95cMfvUnYn31:' | SED_REPLACE='root:$6$bmlbpJYn$xAgZr6KxoRLjDcPZNDBcnMF52gZrU7xkib43LhSlAvzVS4OqmiHaxB0GInPtoaPQ2FguHQQuxM95cMfvUnYn31:' | ||
sed -r "s/${SED_SEARCH}/${SED_REPLACE}/" -i ${SED_FILE} | sed -r "s/${SED_SEARCH}/${SED_REPLACE}/" -i ${SED_FILE} | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 297: | Line 321: | ||
mkdir /mnt/lsmini/etc/network/run | mkdir /mnt/lsmini/etc/network/run | ||
touch /mnt/lsmini/etc/network/run/ifstate | touch /mnt/lsmini/etc/network/run/ifstate | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 305: | Line 330: | ||
rm -rf /boot/* | rm -rf /boot/* | ||
cp -a /mnt/lsmini/boot/* /boot/ | cp -a /mnt/lsmini/boot/* /boot/ | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 318: | Line 344: | ||
cat /proc/mdstat | cat /proc/mdstat | ||
sync | sync | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 328: | Line 355: | ||
umount /mnt/lsmini/srv | umount /mnt/lsmini/srv | ||
umount /mnt/lsmini | umount /mnt/lsmini | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 334: | Line 362: | ||
<pre> | <pre> | ||
reboot; logout | reboot; logout | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 345: | Line 374: | ||
<pre> | <pre> | ||
IP_ADDRESS=192.168.1.77 | IP_ADDRESS=192.168.1.77 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 351: | Line 381: | ||
<pre> | <pre> | ||
ssh root@${IP_ADDRESS} | ssh root@${IP_ADDRESS} | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 357: | Line 388: | ||
<pre> | <pre> | ||
passwd root | passwd root | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 363: | Line 395: | ||
<pre> | <pre> | ||
dpkg-reconfigure tzdata | dpkg-reconfigure tzdata | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 369: | Line 402: | ||
<pre> | <pre> | ||
date | date | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 375: | Line 409: | ||
<pre> | <pre> | ||
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; | 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; | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 384: | Line 419: | ||
PARTITION3_SIZE=12GB | 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 | 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 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 391: | Line 427: | ||
mkswap /dev/sda2 | mkswap /dev/sda2 | ||
swapon /dev/sda2 | swapon /dev/sda2 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 397: | Line 434: | ||
<pre> | <pre> | ||
echo "/dev/sda2 none swap sw,pri=2 0 0" >>/etc/fstab | echo "/dev/sda2 none swap sw,pri=2 0 0" >>/etc/fstab | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 405: | Line 443: | ||
echo "y" | mdadm --manage /dev/md13 --add /dev/sda3 | echo "y" | mdadm --manage /dev/md13 --add /dev/sda3 | ||
echo "y" | mdadm --manage /dev/md14 --add /dev/sda4 | echo "y" | mdadm --manage /dev/md14 --add /dev/sda4 | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 414: | Line 453: | ||
SED_REPLACE='#\1' | SED_REPLACE='#\1' | ||
sed -r "s~${SED_SEARCH}~${SED_REPLACE}~g" -i ${SED_FILE} | sed -r "s~${SED_SEARCH}~${SED_REPLACE}~g" -i ${SED_FILE} | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 423: | Line 463: | ||
echo "deb http://security.debian.org squeeze/updates main contrib" >>/etc/apt/sources.list | echo "deb http://security.debian.org squeeze/updates main contrib" >>/etc/apt/sources.list | ||
echo "deb-src http://security.debian.org squeeze/updates main contrib" >>/etc/apt/sources.list | echo "deb-src http://security.debian.org squeeze/updates main contrib" >>/etc/apt/sources.list | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 429: | Line 470: | ||
<pre> | <pre> | ||
apt-get update | apt-get update | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 442: | Line 484: | ||
cat /proc/mdstat | cat /proc/mdstat | ||
sync | sync | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
| Line 448: | Line 491: | ||
<pre> | <pre> | ||
reboot; logout | reboot; logout | ||
| + | |||
</pre> | </pre> | ||
</li> | </li> | ||
Revision as of 04:14, 11 May 2011
|
Contents |
Overview
The following process converts a Buffalo Linkstation Mini (model LS-WSxxxxGL/R1) into a fully functional GNU/Linux server running Debian version 6.0.1a (Squeeze) with the Linux kernel (version 2.6.32-31). Here is how the process works:
- Use ACP Commander software to establish Telnet session with device
- Uncouple secondary drive partitions from existing RAID configuration
- Partition and format secondary drive, install Debian 6.0, and prepare for initial boot
- Reboot device, establish SSH session with device, and complete installation
Requirements
- Buffalo LinkStation Mini models LS-WSxxxxGL/R1 running stock firmware (LS-WSXxxxxTL/R1 models will not work)
- If your device has already been modified to run another operating system and/or firmware, you should revert to stock firmware
- This process was tested with model LS-WS1.0TGL/R1, but other models may work as well
- Ubuntu 10.04 Desktop Edition CD-ROM (download and burn this disc image)
- Computer which can boot the Ubuntu 10.04 Desktop Edition CD-ROM and access the network successfully (most modern computers meet this requirement)
Instructions
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
- Disconnect all USB devices (and keep them disconnected for the duration of this process)
- Move device switch to "on" position
- Attach device to network
- 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, or use the IP address assigned by your network)
- Login (user = admin, password = password)
- 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 | RAID Mode: RAID1 ...)
- Wait for "Building RAID Array" to complete
- Boot Ubuntu 10.04 Desktop Edition CD-ROM on computer
- Select language as desired (English)
- Click on "Try Ubuntu 10.04 LTS" (to use Ubuntu without making any changes to your system)
- Open a new terminal window (Applications | Accessories | Terminal )
- Start a new bash shell with root privileges
sudo bash
- Install OpenJDK (for running ACP Commander software)
apt-get update apt-get -q -y install openjdk-6-jre
- Download ACP Commander software (acp_commander.jar)
wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/acp_commander.jar
- Determine IP address of device and assign it to environment variable (substitute appropriate IP address)
IP_ADDRESS=192.168.11.150
- Instruct device to enable Telnet and remove root password
java -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 050900002011
- 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;
- 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 mount -t ext3 /dev/md13 /mnt/lsmini mkdir -p /mnt/lsmini/boot mount -t ext3 /dev/md11 /mnt/lsmini/boot mkdir -p /mnt/lsmini/srv mount -t ext3 /dev/md14 /mnt/lsmini/srv
- Install root filesystem (from archive of debootstrap stage 2 files)
cd /mnt/lsmini wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/6.0/bootstrap-debian-6.0.1a-armel-stage2.tar.gz tar --extract --verbose --same-permissions --gzip --file /mnt/lsmini/bootstrap-debian-6.0.1a-armel-stage2.tar.gz
- Install custom kernel (Debian 6.0 kernel 2.6.32-31)
cd /mnt/lsmini wget http://downloads.buffalo.nas-central.org/Users/rpinchbeck/lsmini/debian/6.0/kernel-2.6.32-31-debian-lsmini.tar.gz tar --extract --verbose --same-permissions --gzip --file kernel-2.6.32-31-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)
HOST_NAME=lsmini HOST_ADDRESS=192.168.1.77 HOST_NETMASK=255.255.255.0 HOST_GATEWAY=192.168.1.1
- Configure network interface (/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 rm -f /mnt/lsmini/etc/udev/rules.d/[0-9]*-persistent-net.rules # remove all persistent network devices (force auto detection of eth0) - Configure host name (/etc/hostname)
echo "${HOST_NAME}" >/mnt/lsmini/etc/hostname - Configure mapping from address to host name (/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)
echo "/dev/sdb2 none swap sw,pri=1 0 0" >/mnt/lsmini/etc/fstab echo "/dev/md13 / ext3 noatime 0 0" >>/mnt/lsmini/etc/fstab echo "/dev/md11 /boot ext3 noatime 0 0" >>/mnt/lsmini/etc/fstab echo "/dev/md14 /srv ext3 noatime 0 0" >>/mnt/lsmini/etc/fstab echo "none /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)
SED_FILE='/mnt/lsmini/etc/shadow' SED_SEARCH='^\s*root\:\*?\:' SED_REPLACE='root:$6$bmlbpJYn$xAgZr6KxoRLjDcPZNDBcnMF52gZrU7xkib43LhSlAvzVS4OqmiHaxB0GInPtoaPQ2FguHQQuxM95cMfvUnYn31:' sed -r "s/${SED_SEARCH}/${SED_REPLACE}/" -i ${SED_FILE} - Fix bug in Debian 6 (/etc/network/run links to the temp filesystem)
mv /mnt/lsmini/etc/network/run run.original mkdir /mnt/lsmini/etc/network/run touch /mnt/lsmini/etc/network/run/ifstate
- 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 5 done clear cat /proc/mdstat sync - Unmount RAID volumes
sync cd /mnt umount /mnt/lsmini/boot umount /mnt/lsmini/srv umount /mnt/lsmini
- Reboot device
reboot; logout
- Wait for device to finish booting (no blinking lights)
- Assign new IP address to environment variable
IP_ADDRESS=192.168.1.77
- Use SSH to login as root (password = lsmini)
ssh root@${IP_ADDRESS} - Change root password to something hard to guess
passwd root
- Select timezone
dpkg-reconfigure tzdata
- Ensure that date and time are correct
date
- 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 at boot
echo "/dev/sda2 none swap sw,pri=2 0 0" >>/etc/fstab
- 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
- Disable login terminals (prevent error messages in /var/log/syslog every 5 minutes about /sbin/getty respawning too fast)
SED_FILE='/etc/inittab' SED_SEARCH='(^\s*[0-9]+\:[0-9]+\:respawn\:\/sbin\/getty\s+[0-9]+\s+tty[0-9]+\s*$)' SED_REPLACE='#\1' sed -r "s~${SED_SEARCH}~${SED_REPLACE}~g" -i ${SED_FILE} - Configure package sources (/etc/apt/sources.list)
echo "deb http://ftp.debian.org squeeze main contrib" >/etc/apt/sources.list echo "deb-src http://ftp.debian.org squeeze main contrib" >>/etc/apt/sources.list echo "deb http://security.debian.org squeeze/updates main contrib" >>/etc/apt/sources.list echo "deb-src http://security.debian.org squeeze/updates main contrib" >>/etc/apt/sources.list
- Update package lists
apt-get update
- Wait for RAID synchronization to complete
while egrep -iq '(recovery)|(resync)' /proc/mdstat; do clear cat /proc/mdstat sleep 5 done clear cat /proc/mdstat sync - Restart device
reboot; logout
- Allow USB flash drives formatted with the VFAT file system (Windows) to be mounted automatically in /media/usb
SED_FILE='/etc/usbmount/usbmount.conf' SED_SEARCH='^(\s*FILESYSTEMS\s*=\s*\")(.*)(\"\s*)$' SED_REPLACE='\1\2 vfat\3' if ! grep -E '^\s*FILESYSTEMS\s*=\s*\"((vfat\s+[^\"]*)|([^\"]*\s+vfat\s+[^\"]*)|([^\"]*\s+vfat))\"$' "${SED_FILE}"; then sed -r "s~${SED_SEARCH}~${SED_REPLACE}~g" -i ${SED_FILE}; fi - Add user (never login as root again, use sudo command instead)
USER_NAME=visitor adduser ${USER_NAME} - Allow user to become super user (using sudo command)
echo "${USER_NAME} ALL=(ALL) ALL" >>/etc/sudoers
Prepare Device
You may proceed immediately after the array has been built (you do not need to wait for the drive check to complete)
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 |
Install Debian System
Configure Debian System
Congratulations! You should now have a working Debian 6.0 server running on a Buffalo Linkstation Mini.
Extras
See Also
- Revert Buffalo Linkstation Mini To Stock Firmware
- Install Debian 5.0 (Squeeze) On Linkstation Mini
- Install Ubuntu 9.04 On Linkstation Mini
- Install Gentoo On Linkstation Mini
- GenLink for ARM9
References
- Debian website
- Installing new Debian systems using debootstrap
- Custom initrd which boots from /dev/md13


