Skillnad mellan versioner av "OWFS på DNS-320/325"

Från Temperatur.nu
Hoppa till navigeringHoppa till sök
Rad 119: Rad 119:
 
  exit
 
  exit
  
=== Steg 7, skapa debians start-script och boota upp debian ===
+
=== 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:
 
Skapa en fil /mnt/HD/HD_a2/fun_plug.mydebian på din NAS med följande innehåll:
 
  #!/bin/sh
 
  #!/bin/sh

Versionen från 5 december 2012 kl. 01.20

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 inte som dom ska. Den här beskrivningen visar hur man kan ta sig runt det problemet.

Mål

Att få igång 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 eller t.o.m. har Debian Squeeze installerat.

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
echo "ln -snf $FFP_PATH /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

mkdir -p $CHROOT/mnt/root
mount --bind / $CHROOT/mnt/root
mount -o bind  /dev  $CHROOT/dev
mount -o bind  /proc $CHROOT/proc
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 /etc/resolv.conf $CHROOT/etc/resolv.conf
cp /etc/hosts $CHROOT/etc/hosts

cp -f /proc/mounts $CHROOT/etc/mtab
rm -f $CHROOT/etc/fstab
touch $CHROOT/etc/fstab
cp -f /etc/resolv.conf $CHROOT/etc
hostname >$CHROOT/etc/hostname
cp -f /etc/hosts $CHROOT/etc

#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 7, 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

ssh eddie -l root

lösen: dlink.

Byt lösenord för root:

passwd

Installera locale för att slippa en massa varningsutskrifter (jag vet inte om dom är farliga, men dom är i vart fall irriterande). Byt ut en_GB.UTF-8 mot din locale (skriv 'locale' om du inte vet vilken du har).

apt-get update && apt-get -y install locales
sed -i 's/^.*en_GB.UTF-8/en_GB.UTF-8/' /etc/locale.gen
locale-gen

Du bör få utskriften

Generating locales (this might take a while)...
  en_GB.UTF-8... done
Generation complete.

Lägg till säkerhetsuppdateringar och installera baspaket.

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

Fortsätt

Vi är strax redo att följa OWFS_HowTo, men först ska vi skapa en användare så vi slipper köra allt som root.

adduser owfs
apt-get -y install sudo
adduser owfs sudo

Logga nu ut som root och in som owfs och kör OWFS_HowTo. Räkna med att kompileringssteget 'sudo make && sudo make install' tar runt 20 minuter.

Tyvärr verkar inte den snygga metoden att få OWFS att starta automatiskt fungera, antagligen för update-rc.d uppdaterar filer i det chroot:ade filsystemet och inte i originalfilsystemet. Nån med bättre linux-kunskaper än jag får gärna reda ut problemet. Jag funderar på nån ful-lösning med hjälp av cron. Kommer att posta här om jag får nåt att fungera.

Om du inte vill börja från början

  • 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 förmodligen starta från steg 3 och bara skippa nedladdning av fun_plug v0.7.
  • Har du redan installerat debian vill göra en minimal förändring så editera fun_plug (den som följde med 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

Källor