P89626/debootstrap
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
- http://www.debian.org/releases/stable/mips/apds03.html.de
- http://jeff.doozan.com/debian/dockstar.debian-squeeze.sh
- http://freetz.org/wiki/packages/debootstrap
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:
- Download: http://packages.debian.org/squeeze/all/ncurses-term/download
- Dateliste des Archivs: http://packages.debian.org/squeeze/all/ncurses-term/filelist
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.