P89626/debootstrap

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Hier ein Versuch einen USB Stick mit Debian für MEDION LIFE P89626 (MD 86407) NAS zu erstellen. Diese Anleitung funktioniert, soweit nicht anders angegeben, auch mit den neuen Medion Life P89631 (MD 86729).

<< zurück zur Hauptseite 'P89626'

links

Stick erstellen

Vorbereitung

Vorbereitungen des USB-Sticks an einem Ubuntu System:

Den USB-Stick in das Dateisystem ext3 formatieren

Stick einbinden, z.B.:

 sudo mount /dev/sdb1 /mnt/

Falls nicht installiert:

 sudo apt-get install debootstrap

debootstrap - Schritt 1

Am PC führt man den ersten Teil vom debootstrap durch:

Squeeze (veraltet):

sudo debootstrap --verbose --foreign --arch armel --include=udev,netbase,ifupdown,iproute,openssh-server,dhcpcd,iputils-ping,nano,wget,net-tools,ntpdate,uboot-envtools squeeze /mnt/ http://cdn.debian.net/debian/

Wheezy (aktuell):

sudo debootstrap --verbose --foreign --arch armel --include=udev,netbase,ifupdown,iproute,openssh-server,dhcpcd,iputils-ping,nano,wget,net-tools,ntpdate,uboot-envtools wheezy /mnt/ http://cdn.debian.net/debian/


Stick mit

 sudo umount /mnt

auswerfen, Stick vom PC entehmen und in der Vorderseite der Box einstecken.

debootstrap - Schritt 2

Auf der Box per Telnet folgendes eingeben:

 mkdir /e-data/`ls /e-data`/proc
 mount -t proc proc /e-data/`ls /e-data`/proc
 chroot /e-data/`ls /e-data`/ /debootstrap/debootstrap --second-stage

... der debootstrap second-stage dauert etwas... Es endet dann mit: """I: Base system installed successfully."""

Datenübernahme

Einige Daten kann man direkt weiter nutzten, z.B.:

 cp /etc/hostname /e-data/`ls /e-data`/etc/hostname

Samba config Übernehmen

 cp -r /etc/samba /e-data/`ls /e-data`/etc/samba

NFS exports:

 cp /etc/exports /e-data/`ls /e-data`/etc/exports

Debian per chroot einrichten

danach kann man bash starten...

 chroot /e-data/`ls /e-data`/ /bin/bash

Ein wenig einrichten:

 echo "LANG=C" > /etc/default/locale
 echo "export TERM=xterm-color" >> /etc/profile
cat <<END > /etc/network/interfaces
auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
END
cat <<END > /etc/fstab
/dev/root      /               ext3    noatime,errors=remount-ro 0 1
tmpfs          /tmp            tmpfs   defaults          0       0
END
cat <<END > /etc/apt/sources.list
deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free
END

Hinweis: Die Box muss direkt an der Box neu gestartet werden, danach wieder in der Weboberfläche anmelden und den Backdor-Link ausführen, damit Telnet wieder geöffnet ist.

Danach kann man weiter machen z.B.:

Edit wachtelbauer@wachtelbauer.de folgende Befehle sind nach dem Telnet Login erneut nötig:

mount -t proc proc /e-data/`ls /e-data`/proc

chroot /e-data/`ls /e-data`/ /bin/bash

Bei mir ging das aptitude update schief

 Err http://security.debian.org/ squeeze/updates/main Translation-en
 Could not resolve 'security.debian.org'

Also noch einmal raus mit

exit

dann

cp /etc/resolv.conf /e-data/`ls /e-data`/etc/resolv.conf

dann wieder

chroot /e-data/`ls /e-data`/ /bin/bash

dann weiter

Ende Edit

aptitude update
aptitude dist-upgrade

chroot per Skript

Wenn man hin und wieder ins Debian System wechseln möchte, bzw. parallel in beiden Umgebungen sein will, kann man sich dafür auf dem Stick das Script do_chroot.sh legen:

~ # cd /e-data/XXX/ # <- XXX ist die ID des Sticks
curl --insecure https://raw.github.com/jedie/NAS7820-Tools/master/do_chroot.sh > do_chroot.sh
chmod +x do_chroot.sh
./do_chroot.sh

Beispiel: Eine Verbindung mit Telnet/SSH-Verbindung wird aufgebaut und das Skript gestartet, dann ist man in Debian... Mit exit wird das System verlassen und landet wieder im normalen System.

Das einbinden von /dev (Beitrag wegen Fehler: http://www.mikrocontroller.net/topic/240238#2450527)

mount -t devpts pts ${ROOT}/dev/pts

Debian chroot-Umgebung mit statisch kompiliertem GNU Screen

Ein Problem ist, dass die chroot-Umgebung geschlossen wird, sobald die SSH-Verbindung unterbrochen wird. So kann man keine Server (z.B. bacula) in der chroot-Umgebung laufen lassen.

Abhilfe schafft ein statisch kompiliertes GNU Screen: https://www.gnu.org/software/screen/

Das fertige Paket für die armel-Architektur gibt es hier: https://mocko.org.uk/projects/armbinaries/

Zusätzlich müssen noch die Terminfos zur Verfügung gestellt werden. Die bekommt man durch das Paket ncurses-term:

Das terminfo Verzeichnis <chroot>/usr/share/terminfo zum Beispiel nach /i-data/6764ac2f/lib/terminfo kopieren und die Umgebungsvariable mittels export bekannt machen:

/i-data/6764ac2f/admin/bin/ # export TERMINFO=/i-data/6764ac2f/lib/terminfo

Anschließend kann mittels screen eine Screen Session gestartet werden, in der dann wiederum die Debian chroot-Umgebung geladen werden kann. Wenn die Screen Session detached wird, läuft die chroot-Umgebung und damit auch etwaige Server weiter. Das Ganze lässt sich natürlich noch weiter automatisieren.

<< zurück zur Hauptseite 'P89626'