Chroot-System (Unix/Linux) auf ein NAS installieren

Aus NAS Wiki

Wechseln zu:Navigation, Suche

Eine Chroot-Umgebung auf ein NAS-System installieren und benutzen wie ein Echtes Linux Debian oder Getnoo. Aufgeteilt in 3 verschiedene Ableitungsschritte je nach Bedarf. Zusätzlich wird hier gezeigt wie Chroot und NAS gut zusammen passt und Ressourcen schonend arbeitet.


Inhaltsverzeichnis

Vorwort

Diese Anleitung ist eine Beschreibung und soll ein Einblick über das Thema: Chroot auf ein NAS-System installieren, wie es aufgebaut ist und arbeitet. Da viel hier im Forum/Community schon mehre mal das Thema angesprochen ist u.a was ist Chroot?, wie nutzt man es?, wie installiere ich Chroot auf mein NAS? oder ähnliche Fragen hier gestellt worden sind. Es gibt auch schon hier im Forum bzw. Community einige Beschreibung bzw. fertige Chroot zum download für gewisse NAS-Systeme fix und fertig. Aber das Problem besteht darin das damit nur Erfahrene Linux User sich damit auskennen und/oder nur für bestimmtes NAS-System genutzt werden kann.
Da aber hier das Forum bzw. die Community ein Breites und Tiefes Sortiment an NAS-Geräten und Themen zu Verfügung stellt, wird dadurch nicht oder kann auch nicht jedes NAS-Gerät berücksichtigt werden. Mein Anliegen besteht darin das sich ein Bereites Spektrum damit bedienen kann wie man im Allgemeinen ein Chroot-System auf eine NAS-Geräte installieren lässt und dabei wird es nicht direkt um ein speziales NAS-Gerät/Typ gehen, aber ein oder zwei Nas-Geräte/Typen werde als Beispiel beschrieben, damit man die Anleitung für viele NAS-Geräte nachvollziehen kann. Beschrieben wird in dieser Anleitung Hauptsächlich der Aufbau von Chroot mit Debian aber es wird auch ein Teil mit Gentoo beschrieben. Es ist natürlich auch mögliche andere Chroot-System zu nutzen, denn der Aufbau wäre ähnlich.
Des weitern wird beschrieben wo man fertige Chroot bekommt die man nur noch auf sein NAS legen muss und angerissen kurz wie man aus ein Chroot ein volles Linux-System unter Debian bekommt. Debian stellt einen Sonderfall dar, da Debian selbst für die Installation weiterer Debian-Instanzen in Chroot-Umgebungen bereits vorbereitet ist. Die Installation wird mit debootstrap durchgeführt.

Einführung

Die Frage nimm ich erstmal vorweg: Was ist eigentlich Chroot? für User die es noch nicht wissen hier mal eine kurze Einleitung: Ein Chroot Umgebung ist eine Umgebung, aus der man nicht mehr herauskommt. Dazu wird ein beliebiges Verzeichnis zum root - Verzeichnis; das hat dann die Folge, das man in kein anderes Verzeichnis wechseln kann, weil man ja schon in der "Wurzel ist. Oder anders gemeint ist Chroot nicht anders als Chroot definiert das Universum für ein Programm neu. Genauer gesagt, es definiert die Verzeichniswurzel ("ROOT: /") für Programme und Login-Zugänge neu. Für das Programm bzw. die Eingabeaufforderung, die mit Chroot eingeschränkt wird, existieren die Verzeichnisse außerhalb nicht.

Das Wurzel-Verzeichnis ist so aufgebaut wie bei ein Linux-System:

 root../
     	/bin/
	/dev/
	/etc/
	/lib/
	/opt/
	/root/
	/usr/
	/var/

Die Verzeichnisstruktur kann auch von dieser Struktur etwas abweichen.

Wozu ist das nützlich? Bei ein normalen Linux-System würde man Chroot verwenden um, wenn jemand in einen Computer einbricht, sieht er nicht alle Dateien des Systems. Auf Dateien, die man aber nicht kennt, kann man nur schwer Kommandos anwenden und man kann sich weiterhin nicht den Inhalt jeder unsicheren Datei anzeigen lassen. Natürlich wäre das auf ein NAS-System auch übertragbar. Was aber hier nicht das Anliegen dieser Anleitung sein soll. Sondern um ein System das man nutzen kann um Programme zu installieren die sonst so ohne weiteres nicht auf eine NAS-Gerät laufen. Also Programme dich man ohne großen Aufwand installieren kann und die dann in eine Chroot-Umgebung laufen. Es ist nicht so einfach jedes Programm/Tool/Dienst was für Unix/Linux geschrieben ist einfach mal so auf ein Endebted-System zu installieren, denn so sind die meisten NAS-Geräte von den Herstellern aufgebaut. Darüber hinaus soll in Chroot eine Chroot-Umgebung geschaffen werden wie man auf sein NAS-System als eine Art Entwickler-Umgebung nutzen kann z.B. Um das Bauen von Sourcecodes die dann passend für das NAS als Binär umgewandelt werden. Gemeint wird damit dass man aus dem Code eines Programms ein lauffähiges Programm erstellen kann mit dem passenden Werkzeugen die dann in Chroot liegen für die passende CPU des NAS-Systems. Es gibt zwar Build-Umgebungen für HOST-386/686 Architektur die man dann in den entsprechende NAS-CPU übersetzen kann, aber der Aufwand und die Problem sind meistens größer als man denk. Noch ein Problem besteht, man kann die erstellten Programme nicht gleich sofort testen ob sie laufen für die passende CPU. In der Chroot-Umgebung ist das kein Problem weil ja gleich auf die passende Architektur gebaut wird. Aber dieses Thema wird jetzt nicht weiter vertieft sondern hier geht es darum um mit dem Chroot später laufende Programme zu intrigieren die nicht ohne weiters in der NAS-Firmware laufen würden.

Als Beispiele für laufende Chroot Programme können u.a. sein: Bittorrent, Webbserverr mit php und SQL Unterstützung, Streamer, Mail-Server und vieles mehr.

Anforderungen

Anforderung für alle NAS-Geräte gelten und unbedingt haben müssen, ein offenes NAS-System d.h. Es muss der Zugriff auf dem NAS per Telnetoder SSH gewährleistet sein! Wenn das nicht der Fall ist kann man das ganze mit Chroot vergessen. Dann sollte Busybox installiert sein. Telnet und/oder SSH sollte man aktivieren können. Ein Client-Programm damit man auf dem NAS zugreifen kann am besten per FTP oder SSH/SCP (bessere wahl) zu empfehlen für Windows WinSCP oder wenn man ein Linux-Client hat Ubuntu/Debian/Suse oder andere Distributionen nutz sollte Dropbear bzw. OpenSSH installiert sein und oder mit Genome oder KDE als X-Windows laufen. Dann darf natürlich der root Account nicht fehlen. Kenntnisse mit Linux wären von Vorteil aber nicht Bedienung.

  • Eine Internet Anbindung sollte natürlich auch vorhanden sein am besten ein DSL-Verbindung um später die Sachen zu downloaden


Es gib unter schiedliche Anforderung die in drei Themen bereiche gegliedert werden.

Vorgehensweise

Die Voraussetzung sollten überprüft werden gegeben falls. Sich das Eine oder Andere besorgen. Da sich zwischen den einzelnen Distributionen keine großen Unterschiede aufzeigen ist es ziemlich einfach ein fertiges Debian-Chroot auf dem NAS-System packen oder ein fertiges Gentoo-Chroot-Paket auf dem NAS zu bringen. Hier in diesen beiden Anleitung gehen wir jetzt mal von eine ICY-Box 4220 und eine CH3SNAS baugleich mit der DNS323 aus, was aber mit andren NAS-Geräten/Typen ähnlich sein wird.


Fertiges Debian-Chroot auf dem NAS-System packen

Das ist eine ziemlich schnelle und einfache Sache, wenn man ein Vorkonfiguration Chroot was aber allgemein gehalten wird und nicht für eine Persönliche konfigurierte Vorstellung entspricht. Aber dann für User gedacht ist die nicht so gute Unix/Linux Kenntnisse besitzen

Voraussetzung

Wie in der Anforderungen beschrieben, sollten erfüllt sein. Ein passenden Betriebssystem für den Client und ein Client-Programm damit man eine Verbindung auf sein NAS-System aufbauen kann. Ausgegangen wird jetzt mal von Client Windows mit Client-Programm WinSCP was einfach zu bedienen ist. Mit Linux-Systemen sollte es ähnlich Funktionieren.

Die Arbeitsschritte

Alle Arbeitsschritte werden hier Systematisch durchgeführt und beschrieben. Downloads Links gibt es am Ende der gesamten Chroot-Anleitung.

Das Grundsystem besorgen

Download des Grundsystems von SourceForge - Linux on Psion was eine ältere Chroot-Sargebook Debian 3.1 ist und es später mit dist auf Debian Etch 4.01 updaten kann. Oder man besorgt sich ein fertiges Debian-Image 4.0 von der Donwloadseite.

Verbinden mit dem NAS

Sich mit SSH oder Telnet auf dem NAS verbinden und dann die geladen Debian-Crhoot in das Verzeichnis oder Festplatten Partition laden wo später Chroot laufen soll.

Entpacken der Datei und mounten

In das entsprechende Verzeichnis oder Festplatten-Partition entpacken wo Chroot laufen wird und mounten von proc.

Was dann Beispiel so aussehen könnte:

cd /mnt/ide/debian/
tar xzvf passende_Debian_chroot.tgz
mount -t proc none ./proc

Wechseln nach Chroot

Jetzt sollten wir in die Chroot-Umgebung/System wechseln mit:

usr/sbin/chroot ./ /bin/bash

Was so oder ähnlich aussehen könnte. Wichtig ist hier bei dass der Befehl chroot in Verzeichnis bin vorhanden sein sollte.

Anpassen des System DNS-Namen

Jetzt die /etc/resolv.conf ,damit das System DNS-Namen auflösen kann und eine Verbindung zum Internet erstellt wird. Es muss ein Nameserver eingestellt werden, z.B. euer Router passende IP zb. 192.168.1.1.Die IP müsst hier im Router finden.

echo "nameserver 192.168.1.1" > /etc/resolv.conf

Bei Namenserver müsst Ihr die IP eures Routers anpassen.

Sourcen eintragen und Pakete installieren

Nun noch Sourcen eintragen und erst mal ein paar Sachen installieren die man braucht um später Leichter zu arbeiten. Was die Pakete bedeuten wird jetzt hier nicht eingegangen, denn das Erklärt sich schon von selbst. Dan das System /chroot updaten mit apt-get:

echo "deb http://security.debian.org/ sarge/updates main contrib non-free" > /etc/apt/sources.list
echo "deb http://ftp.de.debian.org/debian sarge main" >> /etc/apt/sources.list
apt-get update
apt-get install apt-utils
apt-get install nano iptraf findutils mc
apt-get upgrade

Anmerkung: Wer sich das fertige Debian 4.01 Image von Donwloadseite besorgt hat braucht nur dieses auszuführen:

apt-get update
apt-get install apt-utils
apt-get install nano iptraf findutils mc
apt-get upgrade

So nun wäre Debian-Chroot mit Sarge fertig, aber wie beschrieben handelt es sich um eine ältere Version. Will man auf Debian-Chroot auf Etch aktualisieren was sinnvoll ist wäre, bezieht sich auf SourceForge - Linux on Psion.

Von Sarge auf Etch

Update von Sarge auf Etch mit dist-update folgendes machen:

echo "deb http://security.debian.org/ etch/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp.de.debian.org/debian etch main" >> /etc/apt/sources.list
apt-get update
apt-get dist-upgrade

So damit wäre Debian-Chroot Etch 4.01 installiert und auf dem neusten Stand gebracht und Debian-Chroot ist auf dem NAS-System lauffähig.

Script erstellen

Ein kleines Script erstellen um mit dem Script-Aufruf schnell in der Chroot-Umgebung zu gelangen. Das Script könnte mit dem Namen ./debian-chroot.sh (Name kann beliebig geändert werden) so aussehen:

#!/bin/sh
CWD=`pwd`
cd /mnt/ide/debian/
mount -t proc none ./proc
mount -t sysfs none ./sys
mount -t usbfs none ./proc/bus/usb
usr/sbin/chroot ./ /bin/bash
cd $CWD


Dann das Script Ausfügbar machen:

chmod 755 skriptname

Das Script kann jetzt aufgerufen werden z.B. mit dem passenden Scriptnamen dieses Beispiels.

./debian-chroot

Das Script bewirkt jetzt das man jetzt im Verzeichnisses des Chroot-System gelangt, der mount- Befehl ausgeführt wird und man im Debian-Chroot-Umgebung kommt.

Erweiterung

Man kann nun nach belieben mit apt-get install paketnamen Programme/Packagers etc. nachinstallieren und aber auch eine Entwicklungsumgebung für sein NAS-Typ bauen.

Link zu Thema

Ein Beispiel für die ICYBOX 4220 von Raidsonic ist auch hier auf Debian auf die ICYBOX 4220 beschrieben.


Fertiges Gentoo-Chroot auf dem NAS packen

Das ist eine ziemlich schnelle und einfache Sache, wenn man ein vorkonfiguriertes Chroot, was aber allgemein gehalten wird und nicht für eine Persönliche Konfigurierte Vorstellung entspricht. Aber dann für User gedacht ist die nicht so gute Unix/Linux Kenntnisse besitzen. Hier bei Handelt es sich sogar um eine fertige Entwicklungsumgebung die der User ElektromAn hier im Forum zu Verfügung gestellt hat. Hier bei geht es mehr um eine NASBOX von Radsonic des Typ ICYBOX 4220.
Was man beachten muss, aber für NAS-Typen mit einer ARM-Architektur auch laufen sollte.

Voraussetzung

Wie in der Anforderung beschrieben, sollten erfüllt sein. Ein passenden Betriebssystem für den Client und ein Client-Programm damit man eine Verbindung auf sein NAS-System aufbauen kann. Ausgegangen wird jetzt mal von Client Windows mit Client-Programm WinSCP was einfach zu bedienen ist. Mit Linux-Systemen sollte es ähnlich Funktionieren. Benötig wird noch das Paket local-apps siehe local-apps wenn es sich um eine IB-NAS4220-B handelt. Bei anderen NAS-Systemen wurde das Paket noch nicht getestet ob es lauffähig ist.

Die Arbeitsschritte

Alle Arbeitsschritte werden hier Systematisch durchgeführt und beschrieben. Downloads Link gibt es am Ende der gesamten Chroot-Anleitung.

Chroot-System besorgen

Das fertige Gentoo-Chroot-Sytem und Busybox (Link folgt) statisch gelinkt Version besorgen. Ein ganzes Projekt gibt es und der Download-Page Sourceforge zu finden.

Dateien entpacken und mounten

In das entsprechende Verzeichnis oder Festplatten-Partition entpacken wo Chroot laufen wird und mounten von proc.

Was dann Beispiel so aussehen könnte:

cd /mnt/ide/gentoo/
busybox tar xvf ARM-GLIBC-2008.10.14.tar.bz2
tar xzvf passende_gentoo.tgz
mount -t proc none ./proc

Datei kopieren und mounten

Jetzt die resolv.conf kopieren:

cp /etc/resolv.conf etc

Dann das proc- Verzeichnis mounten damit es gelesen werden kann.

mount -t proc /proc /mnt/ide1/gentoo/proc -o bind

Gentoo-Chroot-Umgebung betreten

In Verzeichnis oder Partition wechseln wo die Chroot-Umgebung liegt und in Chroot wechseln.

Das ganze sollte so etwa aussehen:

cd /mnt/die/gentoo
usr/sbin/chroot./ /bin/bash

Anpassen des System DNS-Namen

Jetzt die /etc/resolv.conf , damit das System den DNS-Namen auflösen kann und eine Verbindung zum Internet erstellt wird. Es muss ein Nameserver eingestellt werden, z.B. euer Router passende IP zb. 192.168.1.1.Die IP müsst hier im Router finden.

echo "nameserver 192.168.1.1" > /etc/resolv.conf

Bei Namenserver müsst Ihr die IP eures Routers anpassen.

Chroot aktualisieren und updaten

Das System auf dem neusten Stand bringen und später mit exit wieder verlassen.

env-update
source /etc/profile
exit

Fertig wäre die Gentoo-Chroot Umgebung als ein vollwertiges System.

Script erstellen

Ein kleines Script erstellen um mit dem Script-Aufruf schnell in der Chroot-Umgebung zu gelangen. Das Script könnte mit dem Namen ./getnoo-chroot.sh (Name kann beliebig geändert werden) so aussehen:

#!/bin/sh
CWD=`pwd`
cd /mnt/ide/gentoo/
mount -t proc none ./proc
mount -t sysfs none ./sys
mount -t usbfs none ./proc/bus/usb
usr/sbin/chroot ./ /bin/bash
cd $CWD


Dann das Script Ausfügbar machen:

chmod 755 skriptname

Das Script kann jetzt aufgerufen werden z.B. mit dem passenden Scriptnamen dieses Beispiels.

./gentoo-chroot

Das Script bewirkt jetzt das man jetzt im Verzeichnisses des Chroot-System gelangt, der mount- Befehl ausgeführt wird und man im Debian-Chroot-Umgebung kommt.

Resultat

Man hat jetzt ein fix und fertige Entwicklungsumgebung, wo man nu u.a. seine eigene Sourcecode/Pakete für sein NAS-System bauen kann.Man kann aber auch zusätzliche Programme/Packagers nach belieben installieren. Wie das geht kann man aus dem Gentoo-Seiten entnehmen.

Link zu Thema

Das Thema wird hier im Froum beschrieben und diskutiert. Bei Fragen bitte dort posten.

Selber ein Debian–Chroot auf ein NAS-System bauen

Was jetzt hier beschrieben wird ist die besserer Variante, wie man anhand von Debian sein eigenes konfiguriertest Debina-Chroot, sei es Etch (stabel) oder Lenny (testing) Version auf sein NAS-System bringt. So bekommt man auf den meisten NAS-Sytsemen die offen sind ein Debian-Chroot installiert, egal was für eine CPU-Typ in das NAS-Gerät/Typ verbaut ist. Es ist auch in allgemeinen die bessere Wahl so sein eigenes Chroot-System zubauen.

Voraussetzung

  • Als erste ist natürlich hier Unix/Linux -Kenntnisse gefragt aber keine Bedienung, man kann sich auch in dieser Materie einarbeiten und es wird nach Möglichkeit jeder Arbeitsschritt genau beschreiben.
  • Ein Linux System sollte auf dem Client-PC installiert sein, denn darüber wird das Chroot-System gebaut.Beste Auswahl wäre eine Debian ähnliches System etwas wie Debian selbst oder Ubuntu etc. Ein andere wie u.a Suse Gentoo sollte auch gehen, aber hier nicht genauer beschrieben wird. Für Windows-Client wäre AndLinux zu empfehlen, was man nachträglich auf sein Windows-PC (2000/XP/Vista) installieren muss.
  • wie in den Anforderungen beschrieben sollte Unbedingt beachtet werden u.a. eine offenes NAS-System. Denn wenn das NAS-System nicht offen ist d.h.man kann keine Verbindung mit SSH oder Telnet aufbauen, ist es sehr schwer oder gar nicht möglich ein Chroot-System zu installieren.
  • Ein Internetzugang um die passenden Dateien von den Debian-Server runter zuladen. Hier wäre eine DSL Anbindung die beste Wahl.

Die folgende Anleitung wird mit ein Debian-Etch 4.0 System beschrieben.

Arbeitsschritte

Der erste Teil beschreibt die Vorgehensweise das Bauen eines Debian-Chroot auf ein Linux-Host-PC mit i386 Architektur.

Verzeichnis anlegen

Konsole mit root rechten öffnen und ein Verzeichnes anlegen wo Debian-Chroot auf dem Client-PC abgelegt werden soll zb. in mnt/debian.

mkdir /mnt/debian/

Debootstrap runterladen und installieren

Jetzt mit apt-get install debootstrap ausführen oder alternative mit wget debootstrap herunterladen.

apt-get install debootstrap

alternative herunterladen:

wget http://ftp.de.debian.org/debian/pool/main/d/debootstrap/ debootstrap_1.0.10_all.deb  

Dann mit dpkg bauen.

dpkg --install debootstrap_1.0.10_all.de

Hier bei sollte beachtet werden das man die Aktuellste für all.deb Version nimmt, die man hier findet.

Datei ausführen im Client

Die debootstrap‚ ausführen so das sie passend für den entsprechenden Nas-Typ laufen soll als Debian-Chrot-System. Dabei ist es wichtig für welche Architektur --arch der CPU gebaut werden soll. Im diesem Beispiel mit eine ARM-CPU in das Verzeichnis /mnt/debian.

Der Aufruf sollte dann so aussehen wobei bei --arch unbedingt drauf geachtet werden muss, dass man auch den richtigen CPU TYP angibt:

debootstrap --foreign --arch arm etch debian "http://ftp.de.debian.org/debian" 

wenn man eine andere Architektur als --arch verwendet, kann man diese austauschen, zB. mit --arch mips für eine MIPS-CPU-Typ.

Packen von Chroot

Ist alles mit debootstrap durchgelaufen ohne Fehler dann das ganze mit tar packen.

cd /mnt/
tar -czf dabian.tar.gz debian
cd /debian

Anschließen im Verzeichnis ein debian.tar.gz zu finden.

Chroot auf dem NAS laden

Um das gepackte debian.tar.gz auf dem NAS-System zubekommen müssen, wir eine Verbindung zum NAS aufgebauen. Am besten ist dafür geeignet SSH/SCP aber auch ftp kann genutzt werden. Die debian.tar.gz in das Verzeichnis oder Partition hochladen wo später die Debian-Chroot_Umgebung laufen soll.
Die Verbindung bauen wir jetzt mit SCP auf. Hier im Beispiel mit einer ICYBOX 4220! Da auf dem meisten NAS-Typen Unix/Linux läuft dürfte der Kommando-Aufruf ähnlich aussehen. Wichtig ist aber hierbei das ein SSH-Server mit SSH/SCP Unterstützung auf dem NAS-Gerät installiert ist.Das könnte u.a Dropbear oder OpenSSH sein.

cd /debian
scp dabian.tar.gz root@meinNAS:/Verzeichnis/des chroot/

Beispiel auf der ICYBOX 4220

cd /debian
scp dabian.tar.gz root@192.168.0.3:/mnt/ide/debian/

Nun wird die dabian.tar.gz in das Verzeichnis geladen wo später die Chroot-Umgebung laufen soll.

Verbindung auf die Konsole zum NAS

Nach dem hochladen von dabian.tar.gz wird es jetzt Zeit sich per ssh für Linux oder wer Windows nutzt mit Putty sich auf dem NAS-System zu verbinden.

Hier im Beispiel läuft die Verbindung über Linux mit der Konsole. Andere Verbindungs-Arten mit dem Client gibt es unter Linux-Anfänger-Ecke zu lesen.

ssh root@meinNAS

hier im Beispiel:

ssh root@192.168.0.3
Verbindung zu Nasbox

Chroot im Verzeichnis entpacken

In das entsprechende Verzeichnis wechseln wo die Datei debian.tar.gz liegt und mit tar entpacken.

cd /mnt/ide/debian/
tar -xzf debian.tar.gz
Datei:debian tar.jpg
Entpacken von debina.tar.gz


Nun ist das Chroot-System auf dem NAS-System gepackt und können uns von Linux-Client (PC) entfernen und weiter auf dem NAS-System zu arbeiten, um die Debian-Chroot-Umgebung für den Bedarf einzurichten.

Vorgebautes Debian-Chroot zum download

Wer kein Linux-PC Host zuhand hat oder keine Lust hat, für den gibt es für eine ARM-CPU-Architektur ein vorgebautes Chroot zum download. Andere CPU Architekturen für andere NAS-Sytseme werden sicher noch folgen.

Wer sich die Datei gezogen hat kann nur weiter fortfahren und sein Chroot-System einrichten.Anleitung folgen!

Fragen dazu gibt es hier zum Thema

Chroot-System fertig bauen und einrichten

Debian-Chroot-System auf dem NAS-Geräte/Type passend einrichten so nach seinen eigenden Bedürfnissen. Aber als erstes wird hier erstmal das Grundsystem einrichtet damit die Chroot-Umgebung mit der NAS-System richtig läuft

Dateien mounten und in Chroot wechseln

Mit dem Befehl mount werden erstmal /proc zu dem Chroot-System gemountet und dann mit dem chroot-Aufruf in Debian-Chroot-Umgebung gewechselt.

Mounten von proc:

cd /debian
mount -t proc none ./proc

in das System wechseln mit chroot:

usr/sbin/chroot ./ /bin/bash

wenn man in der Chroot-Umgebung kommt, sieht schon mal alles ganz gut aus :)

Chroot-Umgebung


Hat alles geklappt sieht es so wie hier im Bild aus. Der Hinweis I have no Name bedeutet nicht anders das Debian-Chroot noch eingereichtet werden muss was auch hier anschließend passieren wird.

Bauen auf dem NAS

Damit das System jetzt für die CPU-Architektur gebauten werden kann für den passen NAS-Typen muss noch mit debootstrap im Debain-Chroot auf die Kosnsole ausgeführt werden.

/debootstrap/debootstrap --second-stage

Das kann jetzt eine weile dauern bis das Chroot-System auf dem NAS fertig gebaut/installiert ist, wenn dann keine Fehlermeldung kommt sieht alles ganz gut aus.

Debian auf dem NAS einrichten

Kopiern ein paar Sachen u.a. wie Host, Namen Server, Group, Passwörter u.m. aus dem /etc Verzeichnis der Firmware des NAS-Systems. Firmware ist damit gemeint das Betriebssystemder NAS-Typen was eigentlich in den meisten fällen ein Unix/Linux entbetet System ist.

Mit exit die Debian-Chroot-Umgebung verlassen und in der Konsole, dann Kopieren mit dem Befehl cp Datei für Hostname und Namensserver aus dem /etc-Verzeichnis in das /etc-Verzeichnis von der Chroot-Umgebung.

cp /etc/resolv.conf mnt/ide/debian/etc/
cp /etc/hosts mnt/ide/debian/etc

Nun Kopien von passwort,shadow und group damit User und Gruppen für das Chroot-System passen aus der Firmware.

cp /etc/passwd ide/debian/etc/
cp /etc/shadow ide/debian/etc/
cp /etc/group ide/debian/etc/

Hinweis: Es könnte sein das die eine oder andere Datei fehlt also nicht in der Firmware vorhanden ist, diese Datei kann dann weg gelassen werden.

Es ist aber auch möglich das ganze /etc-Verzeichnis mit dem mount- Befehl in Debian-Chroot einzubinden, damit es immer wieder automatisch aktualisiert wir. Aber dazu wird Später eingegangen.

Zeitzone und Terminal-Variable anpassen

Eine Option in der Datei /etc/default/rcS legt fest, ob das System die Hardware-CMOS-Uhr als UTC-Zeit oder als lokale Zeit interpretiert. Mit dem folgenden Befehl können diese Option gesetzt werden sowie die Zeitzone festlegen.

tzconfig

Der Befehl tzconfig vertsht sich von selbst wenn man ihn ausführt.

Datei:tzonfig.jpg
Ausführung von tzonfig


Jetzt noch die Terminal-Variable setzten so dass sie mit dem Debian-Chroot-Basissystem kompatibel ist.

Zum Beispiel:

export TERM=xterm-color

Änderungen können abweichen!

Debian-Chroot-System updaten

Die wichtigen System-Einstellungen von dem NAS_System wurden in Debian-Chroot übernommen. Man könnte es auch nach belieben ändern ob zB: passwd group namenserver etc. mit anderen Werten setzten oder auch nicht von NAS-System zu übernehmen.
Was aber hier nicht zu Bedeutung kommt auch und nicht weiter eingegangenen wird.
Das Debian-Chroot-System sollte jetzt auf dem neusten Stand gebracht werden und einige Programme/Pakete nachinstalliert bekommen.

Installer einrichten

Um den apt-get einrichten zu können müssen in die sources.list die Server bzw. Spiegel-Server von Debian eingetragen sein, damit säter apt-get Programme/Pakete, Sicherheit-Updates und andere Update finden kann. Das ganze wird einfach so gemacht.

echo "deb http://security.debian.org/ etch/updates main contrib non-free" >> /etc/apt/sources.list
echo "deb http://ftp.de.debian.org/debian etch main" >> /etc/apt/sources.list

Einmal für den Debian-Server security und debian selbst.

Des weitern können Spiegel-Server und Erweiterung für apt-get in die 'sources.list eingetragen sein.

echo " deb-src http://ftp.de.debian.org/debian etch main " >> /etc/apt/sources.list
echo " deb http://security.debian.org/ etch/updates main " >> /etc/apt/sources.list
echo " deb-src http://security.debian.org/ etch/updates main " >> /etc/apt/sources.list

Das sollte die Liste vervollständigen, es könne noch andere Server eingetragen die deb angehören.

Datei:sources.jpg
Eintrag in die sources.list

Updaten und Konfigurieren Chroot

Erstes Paket localesmit dem Tool ap-get install installieren damit später das System local eingerichtet wird.

apt-get install locales 


Als nächste sollte die Konfiguration zu ende gebracht, update ausgeführt werden auf das Chroot-System. Das erledigt man mit dpkg-reconfigure im Chroot.

dpkg-reconfigure locales  

Dabei de_DE@euro ISO-8859-15 auswählen für Deutschland, falls anderes Land dann entsprechend aus Wählen.

dpkg-reconfigure -p -u -a 

Chroot-Sytem wird eingerichtet.

  • Achtung: Wer die Datei groups aus sein NAS-System in das Chroot-System übernehmen will der sollte das Kommdando weg lassen, da sonst die Datei group überschrieben wird und dann wieder angepasst werden muss!


  • Achtung: Sollte die Meldung kommen chown: `root:utmp': invalid group als Fehler auftreten, dann muss die Gruppe utmp angelegt werden. Das mach man wie folgt:
groupadd utmp

Dann dpkg-reconfigure -p -u -a nochmals ausführen.

Jetzt noch mit dem Tool ap-get update und apt–get upggrade das Debian-Chroot System auf dem neusten Stand bringen und fehlende Pakete nachinstallieren.

apt-get update && apt-get upgrade

Das kann eine Weile dauern und wenn apt-get kein Fehler meldet, sollte das Chroot-System auf dem neusten Stand gebracht sein.

  • Hinweis:Sollte es zu Netzwerkproblemen kommen zb.no connectet dann einfach per reboot das NAS-System neustarten
Update Debian-Chroot

Nachträglich Pakete installieren

Um Programme/Pakete nach zuinstallieren wie zum Beispiel das Sprachhilfspaket manpages-de für Deutsch wenn man dem Englischen nicht so mächtig ist.Das ganze passiert mit dem Befehl apt-get install mit diesem Befehl wird geschaut ob die zu installierten Programme/Pakete und Dienste auf dem Debian-Server zu Verfügung stehen bzw. auf dem Server die in der sourec.list eingetragen sind.

Beispiel manpages-de Installation

apt-get install manpages-de

Tools und Pakte die man unbedingt installieren sollte, damit man später Bequem über ein Editor und Dateimanager verfügt wie z.b.der Midnight Commander sollte man folgende Sachen installieren.

apt-get install apt-utils
apt-get install nano iptraf findutils mc
apt-get upgrade

Pakete können nach belieben installiert werden. Wer will kann auch hier mit oder auch mit dem Werkzeug aptitude wie auch mit apt-get arbeiten. Somit könnte man auch eine Entwicklungsumgebung für sein NAS-System installieren.

Umgebung anpassen

Ein paar Dinge sollten angepasst sein, dass man im Chroot_System befindet und dieses auch sieht. Wir eine Datei angelegt Namens debian_chroot am beste mit den Editor mcedit.

mcedit /etc/debian_chroot_sytem

Dort eintragen zb.DebianChrootSystem und das ganze mit F10 abspeichern.

mit mcedit wird die Datei .bashrc von User root geöffnet und editiert.

mcedit /root/.bashrc

Dann vor umask022' folgende Code einfügen:

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" -a -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot_system)
fi
# set a fancy prompt (non-color)
PS1='${debian_chroot_sytem:+($debian_chroot_system)}\u@\h:\w\$ 

Dann mit F10 abspeichern. Sollte man jetzt neu im Chroot-System wechseln wird der Name auf der Konsole recht erscheinen.

 (DebianChrootSystem)root@NAS-Server:/#

Jetzt weis man das man sich in der Chroot-Umgebung befindet.

Mounten alles Bestandteile von Debian-Chroot

Damit Debian-Chroot beim Aufruf von Chroot immer läuft und mit df Anzeige von Plattengrösse und erfassen der gemounteten Platten, ist es wichtig das man die Dateien mit ein Editor bearbeitet kann.

Datei für Mount bearbeiten

Die Datei mstab wird am besten mit dem von Midnight Commander mitgelieferten Editor mcedit bearbeitet.

mcedit /ect/mtab

Die Datei aufgerufen und diese kann jetzt erweitet bzw. angepasst werden.

/dev/root / tmpfs rw 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
Datei:mtab.jpg
mtab mit mcedit

Danach wird das ganze mit F10 abgespeichert.

Debian-Chroot starten und als Script

Es ist so das bei jedem Start des NAS-System immer die Mount Punkte für das Chroot-System festgelegt werden muss, damit aus dem NAS-System zum Chroot-System die Prozesse über geben werden kann und gelesen werden können. Mann müsste sich jedesmal mit dem mount-Befehl erst die gewissen Sachen mounten und dann im chroot zu gelangen.

Die reinfolge würde so vielleicht aussehen in der Konsole:

mount -t proc none ./proc
mount -t sysfs none ./sys
mount -t usbfs none ./proc/bus/usb
mount -o bind /dev /Pfad/zum/chroot/dev
mount -o bind /etc /Pfad/zum/chroot/etc
mount -o bind /proc /Pfad/zum/chroot/proc	
usr/sbin/chroot ./ /bin/bash

Wobei das aus etc die Einstellungen von NAS-System zu Debian-Chroot übernomen wird. Es muss aber nicht so aussehen die mount können nach belieben gelegt werden oder man lässt sie weg.

Das Script zum Starten von Mount-Points

Um das ganze zu vereinfachen ist es gleich besser sich ein Script zubauen das man mit dem Script-Aufruf alle mount für das Chroot-System eingebunden wird.

Das ganze Scripte sollte wie folgt aussehen /chroot-mount Script-Name.

#!/bin/sh
#
CWD=`pwd`
cd /mnt/ide/debian/
mount -t proc none ./proc
mount -t sysfs none ./sys
mount -t usbfs none ./proc/bus/usb
mount -o bind /dev /Pfad/zum/chroot/dev
mount -o bind /etc /Pfad/zum/chroot/etc
mount -o bind /proc /Pfad/zum/chroot/proc
cd $CWD
exit

Dann das Script mit chmod 755 skriptname ausführbar machen. Jetzt kann das Script ausgerufen werden.

./chroot-mount

Das ganze im Autostart legen wo das NAS-System (Linux/Unix) seine Scripts/init per Autostarts abarbeitet bei jeden Start/reboot des Systems.
Eine andere Möglichkeit wäre sonst das Userscript das zu mindestens mit dem NAS-Typ ICYBOX 4220 Funktioniert. Aber in Forum wurde auch berichtet das es auch mit anderen NAS-Typen gehen soll. Das Tool müsste man dann entsprechend anpassen!

Script gelangen zum Debian-Chroot

Damit man auch später ganz einfach mit ein Script Aufruf in Debian-Chroot gelangt ohne lange Umwege wir kurzerhand noch ein Script ./debian-chroot erstellt.

#!/bin/sh
#
CWD=`pwd`
cd /mnt/ide/debian/
usr/sbin/chroot ./ /bin/bash
cd $CWD

Dann das Script mit chmod 755 skriptname ausführbar machen. Nun kann das Script aufgerufen werden.

./debian-chroot

Hier als Beispiel Script.

Zusammensetzten von Scripte

Um beide oben erstellten Scripte kann man auch zu ein Script erfassen wenn man ohne Autostart arbeiten möchte bzw. alles bei einen Aufruf ausgeführt wird.

#!/bin/sh
#
CWD=`pwd`
cd /mnt/ide/debian/
mount -t proc none ./proc
mount -t sysfs none ./sys
mount -t usbfs none ./proc/bus/usb
mount -o bind /dev /Pfad/zum/chroot/dev
mount -o bind /etc /Pfad/zum/chroot/etc
mount -o bind /proc /Pfad/zum/chroot/proc
cd /mnt/ide/debian/
usr/sbin/chroot ./ /bin/bash
cd $CWD

Beispiel Script

Hinweis Man sollte die Scripte dahin legen wo das home-Verzeichnis des User ist mit dem man sich anmeldet oder wo man die Scripte am schnellsten erreicht. Gemeint, die Scripte die für das Gelangen in der Chroot-Umgebung verantwortlich sind .

Weitere Ergänzugen

Wer will kann nun auch das Chroot-System als ein Webserver, FTP-Server und andere Dienste nutzen und dies als eine Art Server im abgesicherten Modus betreiben. Der Vorteil besteht dahin, dass man sein eigenes System hat nach beliebiger Vorstellungen. Zusätzlich wird nur ein Kernel genutzt für die Chroot-Umgebung und zwar aus der Firmware des NAS-System und braucht nicht gepatcht oder geändert werden. Die Ressourcen sind dadurch auch nicht so hoch da der eine Kernel die Ressourcen und Dienste verwalltet von dem Chroot-System oder wenn man mehre Chroot's baut diese aus dem Kernel nutzen, was auch wieder ein Vorteil ist.

Negativ ist natürlich und auch Anzumerken das ein Chroot keine LinuxSystem zu 100% ersetzt und das wenn mehre Dienste über ein Kernel laufen nicht genau weis welcher Dienst über die PID es ist.
Was später von kill PID_Nurmmer-Aufruf folgen auf das Ganze System hat. Aber das wäre wohl in seltenen Fällen der Fall.

Wer aber denn noch mein er wolle ein Debian-System nutzen ohne Chroot kann auf Basis des gebauten Debian-Chroot ein volles Debian auf dem NAS-Nutzen hier beschrieb für die ICY-Box 4220 von Chris, man kann aber nicht sagen ob es für alle NS-Typen auch funktioniert. Es gibt einige User die es mit anderen NAS-Geräten von Hersteller geschafft haben ein Debian oder anders Linux auf dem NAS zu installieren.

Fazit

Jetzt weis man wie man mit einfachen mittel sein eigenes System auf dem NAS bekommt als eine Art Chroot Umgebung. Dienste und Programme laufen in einen Abgesicherten Modus ohne die Firmware zu manipulieren bzw. zuändern.
Wie man sieht ist es eine Einfache auf sein Lieblings System nicht zu verzichten, hier in diesem Fall wäre es Debian-Chroot. Was aber auch mit anderen Linux-Distribution geht, das bauen von Chroot wie zb. mit Suse, Red-Hat und ähnliche.
Es ist jetzt auch spielen leicht Pakete die sonst unter der Firmware des NAS-Typs bzw. der Hersteller des NAS-Gerätes nicht laufen oder zu Verfügung stehen, seine Lieblings Pakete/Programme oder Dienste zu installieren. Ohne großen Aufwand den Sourcecode von den Dateien zu compilieren, was ja nicht so einfach ist auf eine PC mit Intel/AMD CPU-Architektur. Die meisten Pakete bekommt man von den Hersteller(Distributionen) oder System Betreiber, wenn die Pakete/Programme zu Verfügung stehen. Sonst kann man auch in sein gebauten Chroot selbst seine Pakete/Programme bauen, wenn passender Sourcecode vorhanden ist.

Fragen und Anregungen

Nützliche Links zum Thema


Interne Links

Download Links

Wichtiger Hinweis

Ich übernehme hier keine Haftung was auch immer Ihr ausprobiert! Selbst habe ich nicht alles getestet bzw. ausprobiert. Diese Test und Bereichte habe ich teilweise von anderen User bekommen bzw. die Infos entnommen.Selbst ein Debian-Chroot habe ich nach der von mir geschriebene Anleitung gebaut und auf der ICYBOX 4220 getestet. Diese Anleitung kann aber für alle anderen NAS-System laufen ist nachvollziehbar, die auf Unix/Linux basieren und dem entsprechend offen sind d.h. mit Telnet oder SSH eine Verbindung zum NAS-System erstellen kann. Denn von Linux her sind sie fast alle gleich aufgebaut. Sollte das nicht der Fall sein sollte das Forum zu Anregung und Diskussion liefern.

Später werde ich hier noch ein fertiges Debian-Chroot als Paket für bestimmte NAS zu Verfügung stellen.

Autor und Verfasser by alias Speedport701 v. 1.11.2008 (4) update 11.11.2008

Ausblick - Erweiterte Konfigurationen

Soll hier später Zeigen wie man Programme/Pakete und Dienste einrichtet wie z.B. eine Bitorennt wget und vlc mit ein Webserver betrieben werden kann, die wenige Ressourcen verbrauchen und noch über eine extra IP_Nummer zugänglich sind.