Debian auf der Linkstation Live

Dank fjen jetzt mit Debian 7.

Während ältere Linkstations neben dem U-Boot Loader noch den Kernel und anderes im Flash haben, hat die Linkstation Live nur noch das U-Boot im Flash. Dieser Bootloader lädt dann von der ersten Partition der Platte Kernel und Ramdisk nach.

Die Standard-Einstallungen sind:

  • Kernel: sda1:/uImage.buffalo
  • Ramdisk: sda1:/initrd.buffalo

Debian kann aus dem Rettungsmodus der LS heraus installiert werden, oder man beginnt die Installation von Debian auf einer neuen, frischen Platte – In meinem Fall einer 2TB Hitachi HDS722020ALA330. Die originale Platte kann nach Ausbau gesichert werden.

Unter Debian GNU/Linux lenny rootfs image v0.3.2 auf linkstation.agrimm.de ist eine Anleitung zu finden, nach der ohne das Gehäuse zu öffnen Lenny installiert wird. Das funktioniert tadellos, getestet und für gut befunden. Wenn man die Sache jedoch das erste Mal macht, ist es sehr handlich, einen Linux-PC mit SATA-USB-Adapter in greifbarer Nähe zu haben, glaubt mir… Ich beschreibe hier die "Aufzucht" einer neuen Platte und die Installation ohne Rettungs-System, Telnet und apc_commander, sondern mit Ausbau der originalen Festplatte und Vorbereiten der neuen an einem Linux-PC.

Grundlagen

Es wird angenommen, dass die Festplate der LS am PC angeschlossen /dev/sdb ist, benötigt werden lediglich ein paar Dateien, die alle im Text verlinkt sind.

Öffnen der Linkstation

Bei Yasunari Yamashita ist in wenigen Bildern zu sehen, wie das Gehäuse geöffnet wird. Das Gehäuse der LS-Revisionen V1-V3 ist mehr oder weniger identisch. Zusammenfassung:

  • Wahlweise Lüfter entfernen, dazu Schraube auf der Oberseite herausdrehen und Lüfter herausziehen, Kabel abstecken
  • An der Unterseite entlang der Gehäuse-Naht mit einem Cutter durch die Aufkleber schneiden
  • Spätestens hier sollte man merken, dass die Gewährleistung/Garantie erlischt, und ich keinerlei Verantwortung für Euer Vorgehen übernehme!
  • Die 2 Clips vorsichtig nach innen drücken zum Aushängen
  • Hälften trennen, Rest zerlegen, Platte ausbauen, an einen PC anschliessen oder beiseite legen und eine frische SATA-Platte an den PC klemmen

Sichern der Festplatte

Das Sichern der Original-Platte und Übertragen der 1. Partition 1:1 ist nicht nötig, auch wenn oft geschrieben wird, die Partition #1 sei auf jeden Fall und uuuuuuunbedingt zu klonen oder auf die neue Platte zu zaubern. Meine LS-CHL-V2 mit 1TB-Platte hatte eine GPT-Partitionstabelle auf der Platte, wie anscheinend viele der neueren LS – Und? Es läuft. Auch mit Debian auf einer Platte mit MS-DOS-Partitionstabelle. Ohne Hexerei und Klonen.

parted/gparted kann mit GPT-Tabellen umgehen, wo fdisk versagt.

Die Partitionen der Buffalo-Installation sind wie folgt:

sdb1: /boot, ext2-Dateisystem
sdb2: /, ext3- oder xfs-Dateisystem
sdb4: Erweiterte Partition
sdb5: Swap, im Kernel als "sda5" festgelegt
sdb6: Rest als Daten-Grab, xfs-Dateisystem

Verwendet man die original-Platte weiter, sollte man mit Acronis True Image o.ä. zuerst ein Voll-Backup machen, um den Ursprungs-Zustand wieder herstellen zu können. Alternativ dazu kann man die Platte am PC unter Linux mit z.B. dd sichern.

Partitionieren und Dateisysteme

Das System benötigt zumindest eine /boot und eine root-Partition. Es ergibt sich damit etwas in der Art:

Anlegen von

sdb1, primär, mit 100MB, ext2/3/4, bootbar (schadet nicht)
sdb2, primär, mit je nach Bedarf 4-10GB, ext2/3/4
sdb3, primär, als Swap
sdb4, primär, ext2/3/4, mit dem Rest – bei mir knappe 1TB

root@stefanpc /media # fdisk -l /dev/sdb

Platte /dev/sdb: 1000.2 GByte, 1000204886016 Byte
255 Köpfe, 63 Sektoren/Spur, 121601 Zylinder
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x1da26627

   Gerät  boot.     Anfang        Ende     Blöcke   Id  System
/dev/sdb1   *           1          14      112423+  83  Linux
/dev/sdb2              15         744     5863725   83  Linux
/dev/sdb3             745         867      987997+  82  Linux Swap / Solaris
/dev/sdb4             868      121601   969795855   83  Linux

mkfs.ext3 /dev/sdb1 -L BOOT/boot formatieren
mkfs.ext3 /dev/sdb2 -L ROOTroot formatieren
mkswap /dev/sdb3 -L SWAP – Swap erstellen
mkfs.ext3 /dev/sdb4 -L DATA/data formatieren

mount /dev/sdb2 /media/sdb2root mounten

mkdir /media/sdb2/boot – Verzeichnis für /boot erstellen
mkdir /media/sdb2/data – Verzeichnis für /data erstellen

mount /dev/sdb1 /media/sdb2/boot/boot mounten
mount /dev/sdb4 /media/sdb2/data/data mounten

Die Parameter für das Root- und das Daten-Dateisystem anpassen, 100 reservierte Blocks und Filesystem-Checks nur alle 171 bzw. 169 Tage sind OK:

tune2fs -i 171 -c 0 -r 100 /dev/sdb1
tune2fs -i 171 -c 0 -r 100 /dev/sdb2
tune2fs -i 169 -c 0 -r 100 /dev/sdb4

Root-Dateisystem auspacken

Im Ordner, in dem sdb2 (root) gemountet ist, wird ein Debian-"Tarball" und danach der Inhalt von /boot und /lib/modules entpackt.

"Isch hab da ma watt voorbereitet": Einen Tarball und Kernel+Module sowohl für die Linkstation Live V1 als auch für die V2 mit Kernel 2.6.22.7 (v1) bzw. 2.6.22.18-88f6281 (v2):

Andere Debian-Tarballs für ARM9-Systeme sind z.B.:

Auspacken

cd /media/sdb2
wget /content/ls-chl_lenny_rootfs_2010-10-19.tar.bz2
tar xvjpf ls-chl_lenny_rootfs_2010-10-19.tar.bz2
rm ls-chl_lenny_rootfs_2010-10-19.tar.bz2

Kernel Für Linkstation Live V1 / Kernel 2.6.22.7:

cd /media/sdb2
wget /content/ls-chl_v1_2.6.22.7.tar.bz2
tar xvjpf ls-chl_v1_2.6.22.7.tar.bz2
rm ls-chl_v1_2.6.22.7.tar.bz2

Für Linkstation Live V2 / Kernel 2.6.22.18:

mount /dev/sdb1 boot/
wget /content/ls-chl_v2_2.6.22.18.tar.bz2
tar xvjpf ls-chl_v2_2.6.22.18.tar.bz2
rm ls-chl_v2_2.6.22.18.tar.bz2

Damit ist das System installiert und die restlichen Anpassungen können gemacht werden:

Anpassungen

Zumindest folgende Anpassungen sollten auf der Partition sdb2 vorgenommen werden:

  • Löschen von etc/udev/rules.d/70-persistent-net.rules, sodass eth0 der richtigen MAC-Adresse zugeordnet wird
  • Editieren von etc/network/interfaces, anpassen der Netzwerk-Konfiguration
  • Editieren von etc/hostname
  • Editieren von etc/ntp.conf, bevorzugte(n) NTP-Server eintragen
  • Editieren von etc/apt/sources.list, Auswahl des bevorzugten Debian-Mirrors
  • Editieren von etc/fstab – Dateisystem-Typen überprüfen, z.B. xfs oder ext3 für /dev/sda6 einsetzen, je nach verwendetem Dateisystem

Achtung: Auf meiner LS v2 ist das aktive Netzwerk-interface eth1, das habe ich jedoch erst nach ca. 12x neu installieren bemerkt… Man sollte sich also gleich angewöhnen, eth0 undeth1 zumindest auf DHCP zu stellen!

Wenn man schon dabei ist, sollte man zusätzlich gleich die Einstellungen für die Ethernet-Devices egiga0 und egiga1 einfügen, manche Kernel verwenden diese Device-Namen für Marvell Gigabit-Controller, und wenn man einmal einen eigenen/anderen Kernel probiert, sollte das LAN auf jeden Fall gestartet werden können.

/etc/network/interfaces:

# we always want the loopback interface
#
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

auto egiga0
iface egiga0 inet dhcp

auto egiga1
iface egiga1 inet dhcp

Boot

Nach Unmounten der Partitionen mit umount /dev/sdb?, Abstecken und Einbau der Platte in die Linkstation sollte diese jetzt erfolgreich booten und man kann sich per SSH anmelden. Auf ping reagieren die Original-Kernel von Buffalo nicht unbedingt, also im Zweifelsfall mit nmap oder Angry IP-Scanner das Netz durchforsten oder die Logs des DHCP-Server ansehen.

Das root-Passwort meiner Filesystem-Images lautet root - Passwörter gleich mit passwd ändern…

Einstellungen

Ein wenig Kosmetik ist noch nötig, damit alles rund läuft:

Die Zeitzone mit dpkg-reconfigure tzdata einstellen, mit apt-get update und apt-get upgrade das System auf den neusten Stand bringen, danach mit aptitude/apt-get nach Belieben Software installieren.

blstools statt micro-evtd installieren und konfigurieren

blstools wird für die Kommunikation mit dem Kurbox/Linkstation Controller benötigt und steuert die LEDs, USB, Lüfter und fragt (wenn vorhanden) die Buttons ab. blstools benötigt hddtemp und smartmontools, beides bereits im Image enthalten.

Ich bevorzuge blstools statt micro_evtd. Falls es nachträglich aktualisiert oder auf einer anderen Linkstation installiert werden soll:

cd /tmp
wget http://xyz/...../blstools-0.2.0.tar.gz
tar zxf blstools-0.2.0.tar.gz
cd blstools-0.2.0
sudo ./install.sh

Das Skript /etc/init.d/lsmonitor hat in der aktuellen Version 0.2.0 anscheinend einen Fehler beim Auslesen der Festplatten-Temperatur: Die Zeile 52,

HDDTEMP=$(smartctl -d marvell /dev/sda --all -T permissive | grep "^194" | sed -re 's/^.* ([0-9]+)$/\1/')

musste ich durch

HDDTEMP=$(smartctl -d marvell /dev/sda --all -T permissive | grep "^194" | tr -s " " | cut -d " " -f10)

ersetzen.

USB ein-/ausschalten

Das USB-Subsystem inclusive Stromzufuhr der USB-Buchse kann deaktiviert werden. Vor Anstecken eines USB-Geräts muss USB mit /etc/init.d/usb start aktiviert werden, nach umounten eines Datenträgers kann USB mit /etc/init.d/usb stop wieder komplett abgeschaten werden.

Das sollte es schon gewesen sein. Die Linkstation verwendet noch den originalen "Buffalo"-Kernel, ein Tausch gegen einen selbstgebackenen ist von wechselndem Erfolg gekrönt.

Links

Fooboot

Mit fooboot, einem Wrapper-Skript für fw_printenv und fw_setenv, kann auf einfache Weise zwischen Booten von Platte ("Normaler" Kernel oder EM-System) und TFTP-Boot umgeschaltet werden: davy_gravy’s Verzeichnis mit fooboot-0.5.1.tar.gz und anderen nützlichen Dateien.

Foonas-EM

Ein nettes Rettungssystem, falls mal nixmehr geht, ist uImage_em_lspro_sda1kernel_sda2rootfs-setup:

Wenn man einer Linkstation diese Kombination aus Kernel und Ramdisk per TFTP von der Adresse 192.168.11.1 aus zur Verfügung stellt, hat man damit ein komplett lauffähiges System, das man mit Telnet erreichen kann (Login: root, Passwort: hydr0g3n) und mit dem man ohne Zerlegen der Linkstation ein Debian aufsetzen kann – Mehr Info hier.

Andere Seiten unter 'Linkstation Live (LS-CHL) V1, V2 und V3'