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

Från Temperatur.nu
Hoppa till navigeringHoppa till sök
Rad 156: Rad 156:
 
  apt-get -y upgrade && apt-get -y python fuse-utils less at sysklogd
 
  apt-get -y upgrade && apt-get -y python fuse-utils less at sysklogd
  
=== Fortsätt ===
+
== Fortsätt ==
  
 
Härifrån ska det gå att följa [[OWFS_HowTo]], förutom den snygga metoden att få OWFS att starta automatiskt vid boot inte verkar 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.
 
Härifrån ska det gå att följa [[OWFS_HowTo]], förutom den snygga metoden att få OWFS att starta automatiskt vid boot inte verkar 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.

Versionen från 23 november 2012 kl. 23.07

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. 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 filer

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

# Download fun_plug.debian and squeeze.tar.gz from dlink.
wget ftp://ftp.dlink.pl/dns/dns-320/driver_software/DNS-320\&325_linuxDebian_revA_Squeeze_all_en_20110111.zip
unzip DNS-320\&325_linuxDebian_revA_Squeeze_all_en_20110111.zip

Du bör nu ha filerna fun_plug, funplug.tgz, fun_plug.debian, squeeze.tar.gz och DNS-320&325_howto_Linux-Debian-in-chroot.txt i samma katalog. Lägg följande kod i en fil med namnet fun_plug.debian.patch:

if grep -q -e '--rbind[ \t]/proc' ./fun_plug.debian; then
  echo 'mount --rbind /proc exists, not patching.'
else
  echo -n 'mount --rbind /proc not found, patching...'
  sed -i 's:mount[ \t]*--bind[ \t]/proc:mount --rbind /proc:' ./fun_plug.debian
  sed -i 's:mount[ \t]*--bind[ \t]/dev:mount --rbind /dev:' ./fun_plug.debian
  echo done.
fi

if grep -q fun_plug.local ./fun_plug.debian; then
  echo 'Reference to fun_plug.local exists, not patching.'
else
  echo -n 'No reference to fun_plug.local found, patching...'
  perl -pi -e '/chroot/ && print "# run fun_plug.local, if present\nif [ -x ./fun_plug.local ]; then\n\techo -n \"* Running ./fun_plug.local ...\"\n\t./fun_plug.local\n\techo done.\nfi\n\n"' fun_plug.debian
  echo done.
fi

if grep -q 'Write a log file'; then
  echo 'Loggin is enabled, not patching.'
else
  echo -n 'Enabling logging...'

  perl -ni -e 'chomp; print "echo \"$_\"\n" unless (/^\s*$/ || /^\s*(if|fi|echo|#)/); print "$_\n"' fun_plug.debian

  perl -ni -e 'print; print "\n# Write a log file\nexec >> /mnt/HD/HD_a2/ffpdeb.log 2>&1\necho\ndate\n" if m:/bin/sh:' fun_plug.debian
fi

Steg 4, 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, fun_plug.debian, fun_plug.debian.patch och squeeze.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 5, 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 (tagna från beskrivningen i filen DNS-320&325_howto_Linux-Debian-in-chroot.txt):

cd /mnt/HD/HD_a2
gunzip squeeze.tar.gz # may take a minute
tar -xf squeeze.tar   # ditto

Om du kör

ls

bör du se en ny katalog squeeze.

Steg 6, patcha debians start-script och boota upp debian

Kör

source ./fun_plug.debian.patch

Du bör få utskriften

mount --rbind /proc not found, patching...done.
No reference to fun_plug.local found, patching...done.
Enabling logging...done.

Patch-scriptet gör tre saker med fun_plug.debian:

  • Byter ut mount --bind mot mount --rbind på /proc och /dev. Detta gör att även underkataloger till /proc och /dev blir synliga för Debian efter chroot. Detta behövs för att kunna kommunicera med usb-enheter som blir synliga under /proc/bus/usb.
  • Lägger in att om en fil fun_plug.local finns och är körbar så kommer den att köras före chroot. Kan behövas för att installera stöd för t.ex. usb-to-serial-converters. (Hmm...fun_plug.local bör kanske placeras nån annanstans än i \\eddie\Volume_1 av säkerhetsskäl...hmm...)
  • Slår på loggning så man kan kolla hur bootningen gick. Bra för felsökning.

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

mv fun_plug fun_plug.ffp
cp fun_plug.debian 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.

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

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 python fuse-utils less at sysklogd

Fortsätt

Härifrån ska det gå att följa OWFS_HowTo, förutom den snygga metoden att få OWFS att starta automatiskt vid boot inte verkar 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.