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:
sda1:/uImage.buffalo
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.
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.
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:
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.
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 ROOT
– root
formatieren
mkswap /dev/sdb3 -L SWAP
– Swap erstellen
mkfs.ext3 /dev/sdb4 -L DATA
– /data
formatieren
mount /dev/sdb2 /media/sdb2
– root
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
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.:
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:
Zumindest folgende Anpassungen sollten auf der Partition sdb2
vorgenommen werden:
etc/udev/rules.d/70-persistent-net.rules
, sodass eth0
der richtigen MAC-Adresse zugeordnet wirdetc/network/interfaces
, anpassen der Netzwerk-Konfigurationetc/hostname
etc/ntp.conf
, bevorzugte(n) NTP-Server eintragenetc/apt/sources.list
, Auswahl des bevorzugten Debian-Mirrorsetc/fstab
– Dateisystem-Typen überprüfen, z.B. xfs
oder ext3
für /dev/sda6
einsetzen, je nach verwendetem DateisystemAchtung: 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
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…
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 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.
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.
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.
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.