OWFS på DNS-320/325

Från Temperatur.nu
Hoppa till navigeringHoppa till sök

Här följer en beskrivning för att komma igång med OWFS på D-links nätverkshårddisk (NAS - Network Attached Storage) DNS-320/325 med Debian Squeeze. För att konfigurera OWFS på ett normalt Linux-system, se OWFS HowTo.

Bakgrund

D-link DNS-320 är en billig nätverkshårddisk från D-link med plats för två hårddiskar och en USB-port. Trots att programvaran är specialskriven för att agera just nätverkshårddisk så finns det möjighet att öppna upp enheten och få vad som nästan är ett normalt linux-system. D-link har släppt instruktioner för hur man ska göra för att få en chroot:ad installation av Debian Squeeze. Tyvärr är inte USB-porten tillgänglig i Debian om man följer den instruktionen och rc.d-init-scripten körs dessutom inte som dom ska. Den här beskrivningen visar hur man kan ta sig runt det problemet.

Mål

Att få igång en fungerande Debian Squeeze-installation med ett 1-wire-nät med OWFS på en D-link DNS-320 med 1-wire-USB-adaptern DS9490R.

Hårdvara

Mjukvara

Beskrivning

Beskrivningen startar med att nollställa och formattera om hårddiskarna på NAS:en. Se noterna längst ner om du har data på hårddiskarna du inte vill radera.

Steg 1, återställ NAS:en och ge den baslinjeinställningar

  • Logga in på din NAS via dess web-interface.
  • Välj Management/System Management/System Settings/Defaults/Restore to Factory Defaults Settings.
  • Vänta på reboot.
  • Logga in med admin/<blank>.
  • Välj Management/Account Management/Admin Password och sätt password.
  • Välj Management/System Management/Time and Date.
    • Sätt tidszon och NTP-server.
  • Välj Management/System Management/Device.
    • Namnge enheten workgroup/eddie/DNS-320. (NAS:en heter alltså 'eddie' i denna beskrivning.)
  • Följande punkter är ej nödvändiga.
    • Välj Management/System Management/System Settings.
      • Sätt Idle Time till 60 minuter.
    • Välj Management/System Management/Power Management.
      • Sätt Hibernation=5 minuter, Power Recovery=on och Fan Control=Auto.
    • Välj Management/System Management/Notifications och fyll i din mail-info.

Steg 2, formattera om hårddiskarna

  • Välj Management/Disk Management/Hard Drive Configuration.
  • Välj Set RAID Type and Re-Format.
  • Bestäm själv RAID-typ. Jag kör med RAID 1 och Disable Auto-rebuild.
  • Om du får ett felmeddelande under formatteringen, välj 'Restart' och kör steg 2 en gång till. (Kan hända om du redan har fun_plug installerat.)

Nu är NAS:en färdig.

Steg 3, ladda ner fun_plug

På din PC, kör följande (koden fungerar på ett linux-system, kör du t.ex. Windows får du ev. ladda ner filerna med din web-läsare.)

# Create a dir for downloaded files.
mkdir dns320deb
cd dns320deb

# Download fun_plug v0.7 from uli.
wget http://wolf-u.li/u/433 -O fun_plug
wget http://inreto.de/dns323/fun-plug/0.7/arm/fun_plug.tgz

Steg 4, skapa/ladda ner Debian Squeeze

Jag kallar filen nedan mysqueeze.tar.gz för att minska risken för sammanblandning med den version som D-link släppt, där filen heter squeeze.tar.gz.

Alt. A, packa din egen fil

Välj det här alternativet om du vill göra allt själv och har en linux-dator.

Installationen av Debian Squeeze görs i två steg, det första på din linux-dator och det andra på din NAS. Först behöver du installera paketet debootstrap

sudo apt-get install debootstrap

Skapa sen en katalog och kör debootstrap (OBS! En versioner av debootstrap har en bugg och hänger sig vid nedladdningen. Det gäller t.ex. versionen i Ubuntu 10.04. Detta är testat i Ubuntu 12.04.)

mkdir ~/squeeze_on_dns320
cd ~/squeeze_on_dns320
sudo debootstrap --include=openssh-server,locales --arch=armel --verbose --foreign squeeze ./mysqueeze
sudo tar cf mysqueeze.tar mysqueeze
sudo gzip mysqueeze.tar

Du ska nu har en fil mysqueeze.tar.gz innehåller det packade squeeze-systemet.

Alt. B, ladda ner en förpackad fil

Välj det här alternativet om du saknar linux-dator och litar på mig ;)

Ladda ner mysqueeze.tar.gz (88Mb). Filen har md5-summan 48b247ca693e3bf4599f79da25f5d4d3.

Steg 5, kopiera filerna till din NAS och boota om

Anslut \\eddie\Volume_1 som en nätverksenhet via Samba (byt ut eddie mot vad din NAS heter).

Kopiera fun_plug, fun_plug.tgz och mysqueeze.tar.gz till \\eddie\Volume_1.

Boota om din NAS genom att logga in på den via dess web-interface och välja Management/System Management/System Settings/Restart/Restart.

Steg 6, logga in med telnet och packa upp Debian

Om allt gått som det ska så har fun_plug 0.7 installerats efter boot och telnet-porten öppnats.

Logga in med telnet (putty på Windows) till din NAS. Du bör välkomnas av en prompt sh-4.1#. Kör följande kommandon i telnet-fönstret för att packa upp Debian Squeeze:

cd /mnt/HD/HD_a2
tar xzf mysqueeze.tar.gz
chroot /mnt/HD/HD_a2/mysqueeze /bin/bash

Du kör nu "inne" i den halvfärdigt uppackade squeeze-installationen. Dags att köra steg 2.

/debootstrap/debootstrap --second-stage
I: Installing core packages...
...
I: Base system installed successfully.

Nu är Squeeze uppackat. Lite "housekeeping" innan vi är klara.

Byt lösenord för root.

passwd

Skapa locale för att slippa varningsmeddelanden senare. Byt ut en_GB.UTF-8 till din egen.

sed -i 's/^.*en_GB.UTF-8/en_GB.UTF-8/' /etc/locale.gen
locale-gen

Nu är uppackningen klar. Lämna squeeze.

exit

Steg 7, skapa Debians start-script och boota upp Debian

Skapa en fil /mnt/HD/HD_a2/fun_plug.mydebian på din NAS med följande innehåll:

#!/bin/sh

export DIR=/mnt/HD/HD_a2
export DIST=mysqueeze
export CHROOT=$DIR/$DIST

# Write a log, in case something goes wrong
FFP_LOG=$DIR/ffpdeb.log
#FFP_LOG=/dev/null
exec >>$FFP_LOG 2>&1

echo
echo "Debian mysqueeze fun_plug"
date

# Create /ffp link
FFP_PATH=$DIR/ffp
ln -snf $FFP_PATH /ffp

# run fun_plug.init, if present
if [ -x /ffp/etc/fun_plug.init ]; then
    echo "Running /ffp/etc/fun_plug.init ..."
    /ffp/etc/fun_plug.init
fi

cd $DIR

mkdir -p $DIST$DIR
mount --bind $DIR $DIST$DIR

# To get access to host root system from chrooted squeeze.
mkdir -p $CHROOT/mnt/root
mount --bind / $CHROOT/mnt/root

mount -o bind  /dev  $CHROOT/dev
mount -o bind  /proc $CHROOT/proc

# Without this, commands such as lsusb and libusb user by owfs doesn't see any
# usb devices mounted by the host system.
mount -o bind /proc/bus/usb $CHROOT/proc/bus/usb

mount -o bind  /sys  $CHROOT/sys
mount -o bind /dev/pts $CHROOT/dev/pts

cp -f /etc/resolv.conf $CHROOT/etc
cp -f /etc/hosts $CHROOT/etc

cp -f /proc/mounts $CHROOT/etc/mtab
rm -f $CHROOT/etc/fstab
touch $CHROOT/etc/fstab

hostname >$CHROOT/etc/hostname

#echo "env > /mnt/HD/HD_a2/env"
#env > /mnt/HD/HD_a2/env

#echo "ls -l > /mnt/HD/HD_a2/ls-l"
#ls -l > /mnt/HD/HD_a2/ls-l

# run fun_plug.local, if present in current directory
if [ -x /mnt/HD/HD_a2/fun_plug.local ]; then
    echo "Running /mnt/HD/HD_a2/fun_plug.local..."
    /mnt/HD/HD_a2/fun_plug.local
fi

echo "$CHROOT/usr/sbin/chroot $CHROOT /etc/init.d/rc 2"
$CHROOT/usr/sbin/chroot $CHROOT /etc/init.d/rc 2

Se till att filen är körbar.

chmod +x fun_plug.mydebian

Till sist, flytta original-fun_plug åt sidan och kopiera in mydebian:s fun_plug

mv fun_plug fun_plug.ffp
cp fun_plug.mydebian fun_plug

På detta sätt kan man senare tillfälligt boota upp i fun_plug-läge genom att kopiera fun_plug.ffp till fun_plug och boota om. Återställning till debian sker sen genom att kopiera fun_plug.debian till fun_plug och boota om.

Boota om din NAS genom att logga in på den via dess web-interface och välja Management/System Management/System Settings/Restart/Restart.

Steg 8, installera baspaket i Debian Squeeze

Om allt gått som det ska Debian Squeeze nu ha startat på din NAS och telnet-porten ha stängts. I stället ska vi logga in som root med ssh med det lösenord du valde i steg 6.

ssh eddie -l root

Sätt tidszon:

ln -sf /usr/share/zoneinfo/Europe/Stockholm /etc/localtime

Lägg till säkerhetsuppdateringar och installera baspaket.

echo "deb http://ftp.se.debian.org/debian stable main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://security.debian.org/ squeeze/updates main contrib non-free" >> /etc/apt/sources.list
apt-get update && apt-get -y upgrade && apt-get -y install python fuse-utils less at sysklogd ed usbutils sudo

Skapa en user owfs som får göra sudo och logga ut.

adduser owfs
adduser owfs sudo

Fortsätt

Logga nu ut som root och in som owfs och kör OWFS_HowTo. Glöm inte --enable-debian vid ./configure. Räkna med ett felmeddelande från apache pga att NAS:en redan kör en web-server på port 80. Räkna med att kompileringssteget 'sudo make && sudo make install' tar runt 20 minuter.

Om du inte vill radera allt på dina hårddiskar

  • Om du har data och/eller inställningar på din DNS-320 som du inte vill tappa kan du förmodligen skippa steg 1 och 2.
  • Har du fun_plug v0.5 kan du kanske starta från steg 4 och bara skippa nedladdning av fun_plug v0.7.
  • Har du installerat D-links squeeze så kan du få viss funktion genom att editera deras fun_plug(.debian) och ändra raderna
mount --bind /proc $DISTDIR/proc
mount --bind /dev $DISTDIR/dev

till

mount --rbind /proc $DISTDIR/proc
mount --rbind /dev $DISTDIR/dev

Denna förändring gör att du kan kompilera och installera owfs, men det automatiska boot-scriptet kommer inte att fungera eftersom deras version inte startar /etc/init.d/rc.

Källor