Debian auf der Linkstation Live

Geschrieben am 18.10.2010, zuletzt geändert am 14.12.2019
In Home » Linkstation Live (LS-CHL) V1, V2 und V3

Diese Seite wurde vor über einem Jahr erstellt oder zuletzt bearbeitet. Der Inhalt ist eventuell veraltet.

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:

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:

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:

<pre class="language-bash">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

<pre class="language-bash">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

<pre class="language-bash">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:

<pre class="language-bash">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:

<pre class="language-bash">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:

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:

<pre class="language-bash"># 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:

<pre class="language-bash">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,

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

musste ich durch

<pre class="language-bash">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'