Mittwoch, 28. September 2016

Debian Jessie auf WD MyBook Live (MBL) - Teil 2: Bootstrap

Mein Anfangspost zu Jessie auf dem MyBook Live ist deutlich umfangreicher geworden als zunächst gedacht. Daher folgen nun die Schritte für die eigentliche Installation analog zu Wheezy Installation auf dem MBL.

(Ausgehend von einer frischen Installation aus dem Western Digital Original Image.)


Zuerst wird die Partition 1 aus dem Raid entfernt und neu formatiert:

mdadm --manage /dev/md1 --fail /dev/sda1
mdadm --manage /dev/md1 --remove /dev/sda1
mkfs.ext3 /dev/sda1
mkdir /mnt
mount /dev/sda1 /mnt/

Nun kann das Bootstrapping beginnen (vorher noch den aktuellen Schlüssel zum Keyring hinzufügen):
cd /tmp
wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.48+deb7u4_all.deb
dpkg -i debootstrap_1.0.48+deb7u4_all.deb

gpg --keyserver pgp.mit.edu --recv-keys CBF8D6FD518E17E1
gpg --armor --export CBF8D6FD518E17E1  | apt-key add -
debootstrap --keyring=/etc/apt/trusted.gpg --arch powerpc jessie /mnt http://ftp.de.debian.org/debian

Damit das Netzwerk startet muss die /mnt/etc/network/interfaces Datei gefüllt werden:

#/etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Die Jessie Paketquellen müssen ergänzt werden (/mnt/etc/apt/sources.list):

#/etc/apt/sources.list
deb http://httpredir.debian.org/debian jessie main contrib non-free
deb-src http://httpredir.debian.org/debian jessie main contrib non-free

deb http://httpredir.debian.org/debian jessie-updates main contrib non-free
deb-src http://httpredir.debian.org/debian jessie-updates main contrib non-free

deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free

Wichtig ist die Konfiguration der beim Start zu mountenden Verzeichnisse. Auf keinen Fall darf eine noch nicht korrekt initialisierte Swap- bzw. Daten-Partition gemountet werden. In diesem Fall kann man nur per serieller Schnittstelle das System reparieren!!! (/mnt/etc/fstab)

#/etc/fstab
proc            /proc                   proc    defaults                                0 0
sysfs           /sys                    sysfs   defaults                                0 0

/dev/sda1       /                       ext3    defaults,noatime,nodiratime,barrier=1   0 1
#/dev/sda3      swap                    swap    defaults                                0 0
#/dev/sda4      /media                  ext4    auto,exec,rw,noatime,nodiratime,suid    0 0

tmpfs           /var/cache/samba        tmpfs   defaults                                0 0
#tmpfs          /var/log                tmpfs   nodev,nosuid,size=16M                   0 0

Wenn der Start geklappt hat, soll wieder die Grüne LED leuchten (/mnt/etc/rc.local):

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo green > /sys/class/leds/a3g_led/color

exit 0

Jetzt kann in das neue System gewechselt werden.

cd /mnt/
mount -t proc proc proc/
mount -t sysfs sys sys/
mount -o bind /dev dev/
chroot .

Das Bootstrap enthält noch kein SSH:

apt-get update
apt-get upgrade
apt-get install openssh-server bzip2 parted hdparm busybox-syslogd ntpdate

Nun wird der Kernel aus dem ersten Teil heruntergeladen und installiert:

wget http://loetzimmer.de/patches/MBL_4.1.33.tar.bz2
tar xfj MBL_4.1.33.tar.bz2

Da sich in Jessie der Root-User nicht per SSH einloggen darf, legen wir einen neuen Benutzer an

adduser --home /home/alex --shell /bin/bash alex

und ändern zusätzlich das Root-Passwort

passwd

Es folgt ein kleiner Test, ob SSH im neuen System startet und den neuangelegten Benutzer akzeptiert:

exit
/etc/init.d/ssh stop
chroot /mnt
/etc/init.d/ssh start

Startet man nun eine SSH-Sitzung, sollte der SSH-Server aus dem chroot antworten (WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!).
Wenn sich der neue Benutzer anmelden kann, hat alles geklappt.

/etc/init.d/ssh stop
exit

Ich verwende ein paar der originalen Western Digital Scripte um z.B. die Festplatte abzuschalten. Daher kopiere ich sie ins neue System (löschen kann ich später immer noch):

cp /usr/local/sbin/rotateLogs.sh /mnt/usr/local/sbin/
cp /usr/local/sbin/monitorio.sh /mnt/usr/local/sbin/
cp /etc/init.d/purgelogs.sh /mnt/usr/local/sbin/
cp /etc/init.d/saveclock.sh /mnt/etc/init.d/

Damit sollte dem Booten ins neue System nichts mehr im Wege stehen:

umount /mnt/proc/
umount /mnt/sys/
umount /mnt/dev/
umount /mnt/
reboot

Jetzt heißt es Daumen drücken und wenn alles gut gegangen ist, kann man sich wenige Sekunden später ins neue System einloggen.