IPKG: Unterschied zwischen den Versionen
imported>Tomas123 |
imported>QTip |
||
(38 dazwischenliegende Versionen von 14 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
Um die Installation zusätzlicher Software zu vereinfachen, verwendet man das Paketverwaltungssystem '''IPKG (Itsy Package Management System)'''. | |||
Um die Installation | IPKG verwendet prozessorspezifische Programmpakete, sodass bei der Installation zusätzlicher Software nicht mehr auf die Kompatibilität zum verwendeten Prozessor geachtet werden muss. | ||
IPKG ist nicht Bestandteil der Synology-Firmware und muss zunächst selbst installiert werden. | |||
== Installation == | |||
=== Automatische Installation per Paket-Zentrum === | |||
Installiere das Paket [[Paketzentrum_Quellen#Community_Package_Hub|Easy Bootstrap Installer (EBI)]]. | |||
==Vorbereitung== | '''Hinweis:''' die Quelle kann nur auf DSM 4.0 bis 4.2 eingebunden werden ("Only for DSM 4.0 - DSM 4.2"). | ||
Die Installation von IPKG muss auf den vorhandenen Prozessortyp abgestimmt sein. [[Welchen Prozessortyp besitzt mein System?| | Auf DSM 5.x erhält man den Hinweis: Ungültiger Speicherort | ||
=== Manuelle Installation per Terminal === | |||
==== Vorbereitung ==== | |||
Die Installation von IPKG muss auf den vorhandenen Prozessortyp abgestimmt sein. Es gibt zwei Möglichkeiten den Prozessortyp zu identifizieren: | |||
# Über die entsprechende [[Welchen Prozessortyp besitzt mein System?|Tabelle]] in der Wiki | |||
*Für ARM (armv5tejl): http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh | # Auf der Kommandozeile den Prozessortyp auslesen: <pre>cat /proc/cpuinfo | more</pre> Der Prozessortyp wird auf unterschiedlichen DiskStations mit unterschiedlichen Attributen angezeigt, zB. <tt>cpu</tt>, <tt>model name</tt> oder <tt>Processor</tt>. | ||
Das Bootstrap-Skript, das im nächsten Schritt verwendet wird, ist abhängig vom identifizierten Prozessortyp: | |||
*Für ARM (armv5tejl, nur DS107+,DS207+,CS407,RS407): http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh | |||
*Für PowerPC (ppc_6xx): http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh | *Für PowerPC (ppc_6xx): http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh | ||
*Für PowerPC (ppc_85xx): http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh | *Für PowerPC (ppc_85xx, e500v?): http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh | ||
*Für Marvell Kirkwood 88F6281, 88F6282, 88FR131 (ARMv5TE Feroceon) : http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh | *Für Marvell Kirkwood 88F6281, 88F6282, 88FR131 (ARMv5TE Feroceon) : http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh | ||
* Für Intel Atom: http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh | * Für Intel Atom: http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh | ||
==== Durchführung ==== | |||
# Mit [[Die_Kommandozeile|SSH/Telnet]] '''!als root, nicht als admin!''' auf der Synology Station einloggen. Das Passwort für den Benutzer '''root''' ist das gleiche wie für den Benutzer '''admin''' Ab Version DSM 6.0 ist ein Login mit root nicht mehr möglich! Hier muss man sich '''admin''' anmelden und zu root wechseln mittels '''sudo su'''. | |||
== | # In irgend ein Arbeitsverzeichnis wechseln - Beispiel: <pre>cd /volume1/public</pre> | ||
#Mit [[Die_Kommandozeile|SSH/Telnet]] '''!als root, nicht als admin!''' auf der Synology Station einloggen. Das Passwort für '''root''' ist das gleiche wie für den | # Die prozessorspezifische Bootstrap-Skript-Datei (siehe Vorbereitung) mit '''wget''' herunterladen - Beispiel für ARM: <pre>wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh</pre> | ||
# | # Das Bootstrap-Skript ausführen - Beispiel: <pre>sh syno-x07-bootstrap_1.2-7_arm.xsh</pre> | ||
#Die prozessorspezifische Datei mit wget herunterladen - Beispiel: <pre>wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh</pre> | #* '''Nur für DS112+/DS212+/DS212/DS212j/DS111/DS211/DS411slim/DS411:''' Das Boostrap-Skript <tt>syno-mvkw-bootstrap_1.2-7_arm.xsh</tt> ist noch nicht an den in der DS211/DS411slim/DS411 verwendeten Marvell 88F6282/88FR313 angepasst worden. Es bricht unnötigerweise mit der Fehlermeldung "''Error: CPU not Marvell Kirkwood, probably wrong bootstrap.xsh''" ab. Dies kann man korrigieren, indem man in der inzwischen erzeugten Datei <tt>bootstrap/bootstrap.sh</tt> die Zeile 21 wie folgt ändert von<br><code>if ! grep Feroceon-KW /proc/cpuinfo >/dev/null 2>&1; then</code><br>in<br><code>if ! grep Feroceon /proc/cpuinfo >/dev/null 2>&1; then</code><br>Es wird also nur das <tt>-KW</tt> gelöscht. Um den Vorgang zu Ende zu bringen, führt man danach dieses Skript aus mit: <pre>sh bootstrap/bootstrap.sh</pre> | ||
#Das | # Sicherstellen dass <tt>/opt/bin</tt> und <tt>/opt/sbin</tt> im PATH des root-Benutzers sind. Ab DSM4.0 müssen dazu in <tt>/root/.profile</tt> die Zeilen <pre>PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin</pre><pre>export PATH</pre> auskommentiert (ein # an den Zeilenanfang setzen) oder gelöscht werden. | ||
#*'''DS212+/DS212/DS212j/DS111/DS211/DS411slim/DS411:''' Das Boostrap Skript syno-mvkw-bootstrap_1.2-7_arm.xsh ist noch nicht an den in der DS211/DS411slim/DS411 verwendeten Marvell 88F6282/88FR313 angepasst worden. Es bricht unnötigerweise mit der Fehlermeldung "''Error: CPU not Marvell Kirkwood, probably wrong bootstrap.xsh''" ab. Dies kann man korrigieren, indem man in der Datei | # Das Bootstrap-Skript kann jetzt aus dem Verzeichnis <tt>/volume1/public</tt> gelöscht werden - Beispiel: <pre>rm syno-x07-bootstrap_1.2-7_arm.xsh</pre> | ||
# | # Neustart des Systems | ||
# | |||
---- | |||
=== Wohin wurde jetzt installiert? === | === Wohin wurde jetzt installiert? === | ||
ipkg verwaltet Programme im | ipkg verwaltet Programme im Pfad <pre>/opt</pre>. Das Bootstrap Script legt entsprechend ein Verzeichnis <pre>"/volume1/@optware" bzw. bei den alten PPC Modellen "/volume1/opt"</pre> an und mounted das Verzeichnis als <pre>/opt</pre> | ||
== | == Konfiguration == | ||
Auch wenn die einfach IPKG Installation erst einmal funktionsfähig ist, hat diese Originale IPKG Installation leider ein paar Nachteile. Vor allem kann es vorkommen, dass die DS nicht mehr korrekt heruntergefahren wird, wenn man nicht noch ein paar Dinge anpasst, welche nachfolgend beschrieben werden. | |||
===Aufruf des originalen Optware Startup Scripts auskommentieren=== | |||
Das IPKG Bootstrap Script hat in das Startup Script <tt>/etc/rc.local</tt> einen Aufruf des Optware Startup Scripts <tt>/etc/rc.optware</tt> eingefügt. Dieses Optware Startup Script hat einige schlechte Eigenschaften und es wird in der Folge dieser Beschreibung durch ein Alternatives ersetzt. Sein Aufruf muss entweder gelöscht oder auskommentiert werden. | |||
< | |||
< | |||
Die entsprechende Stelle in <tt>/etc/rc.local</tt> sieht nach einer Auskommentierung so aus: | |||
<pre> | |||
# Optware setup | |||
#[ -x /etc/rc.optware ] && /etc/rc.optware start | |||
</pre> | |||
===Mount Bind entfernen=== | ===Mount Bind entfernen=== | ||
Nach dem | Nach dem Entfernen des originalen Startup Scripts, wird /opt beim Booten der DS nicht mehr per mount bind eingebunden. Das ist auch gut so, da man ohne Probleme einen Symbolischen Link verwenden kann und so der Mount Bind beim herunterfahren nicht mehr per umount entfernt werden muss. | ||
Umount eines ggf. noch gemounteten /opt | Umount eines ggf. noch gemounteten /opt | ||
umount /opt | umount /opt | ||
Falls es beim umount zu Problemen kommen sollte, weil noch Dienste der Optware laufen, müssen diese vorher beendet werden. Danach klappt es auch mit dem umount. Falls es gar nicht klappen will, dann wird nach dem entfernen des Eintrags in rc.local einfach die DS neu gestartet. Da die Optware Prozesse zu diesem Zeitpunkt ggf. noch laufen, kann es allerdings sein, dass die DS nicht sauber herunterfährt. Einfach nicht | Falls es beim umount zu Problemen kommen sollte, weil noch Dienste der Optware laufen, müssen diese vorher beendet werden. Danach klappt es auch mit dem umount. Falls es gar nicht klappen will, dann wird nach dem entfernen des Eintrags in rc.local einfach die DS neu gestartet. Da die Optware Prozesse zu diesem Zeitpunkt ggf. noch laufen, kann es allerdings sein, dass die DS nicht sauber herunterfährt. Einfach nicht nervös werden und der DS ein paar Minuten Zeit geben, die Filesystem Caches auf die Platte zu schreiben. Danach beherzt abschalten und wieder hochfahren lassen. Dann wieder als root einloggen und weitermachen. | ||
Um den Symbolischen Link statt des Mount Bind zu setzen wird folgendermaßen vorgegangen: | Um den Symbolischen Link statt des Mount Bind zu setzen wird folgendermaßen vorgegangen: | ||
Zeile 73: | Zeile 60: | ||
ln -s /volume1/@optware /opt | ln -s /volume1/@optware /opt | ||
Dabei bitte | Dabei bitte kontrollieren, dass /volume1/@optware auch existiert! Auf manchen DS Varianten scheint das Verzeichnis anders zu heißen. Zur Not also mit einem | ||
ls -l / | ls -l /volume1 | ||
nachsehen, wie das entsprechende Verzeichnis | nachsehen, wie das entsprechende Verzeichnis heißt. | ||
===Neues separates Startup Script für Optware=== | ===Neues separates Startup Script für Optware=== | ||
Zeile 93: | Zeile 80: | ||
case $1 in | case $1 in | ||
start) | start) | ||
[ ! -h /opt -a ! -d /opt ] && ln -s /volume1/@optware /opt | |||
for i in /opt/etc/init.d/S??* ;do | for i in /opt/etc/init.d/S??* ;do | ||
# | # | ||
Zeile 154: | Zeile 142: | ||
Zusätzlich kann man mit dieser Vorgehensweise sehr klar feststellen, wo es hakt. | Zusätzlich kann man mit dieser Vorgehensweise sehr klar feststellen, wo es hakt. | ||
== IPKG verwenden == | |||
=== iPKGui === | |||
Installiere das Paket [[Paketzentrum_Quellen#Community_Package_Hub|iPKGui]]. | |||
Anschließend kannst du IPKG über die Weboberfläche benutzen. | |||
=== Terminal === | |||
Die Liste der verfügbaren Pakete sollte man updaten: | |||
<pre>ipkg update</pre> | |||
Für alle installierten ipkg Pakete kann man die neueste Version folgendermassen installieren: | |||
<pre>ipkg upgrade</pre> | |||
Weitere Pakete können so installiert werden (wobei xxxx für einen Paketnamen steht): | |||
<pre>ipkg install xxxx</pre> | |||
Alle verfügbaren Pakete (die mit ipkg update auch schon lokal bekannt sind) findet man mit | |||
<pre>ipkg list</pre> | |||
Angenehmer zu lesen mittels | |||
<pre>ipkg list | more</pre> | |||
- wenn man nach xxxx sucht | |||
<pre>ipkg list | grep xxxx</pre> | |||
Die Liste der bereits installierten Pakete anzeigen: | |||
<pre>ipkg list_installed</pre> | |||
==Alternative IPKG Startup Scripts== | ==Alternative IPKG Startup Scripts== | ||
Zeile 484: | Zeile 499: | ||
# Script zum Backup der Optware incl. der Einstellungen | # Script zum Backup der Optware incl. der Einstellungen | ||
# | # | ||
OPTWARE="/volume1/@optware /etc/rc.optware /etc/rc.local /usr/local/etc/rc.d/optware.sh" | OPTWARE="/volume1/@optware /etc/rc.optware /etc/profile /etc/rc.local /usr/local/etc/rc.d/optware.sh" | ||
BACKUPDIR="/volume1/backup_data" | BACKUPDIR="/volume1/backup_data" # sollte auf ein externes Medium gelegt werden (z.B. USB-Stick) | ||
# | # | ||
if [ ! -e $BACKUPDIR ]; then mkdir -p $BACKUPDIR; fi | |||
BACKUPFILE=optware-backup-`date +%a`.tar.bz2 | BACKUPFILE=optware-backup-`date +%a`.tar.bz2 | ||
tar -cjf ${BACKUPDIR}/${BACKUPFILE} ${OPTWARE} | tar -cjf ${BACKUPDIR}/${BACKUPFILE} ${OPTWARE} | ||
Zeile 497: | Zeile 513: | ||
*[http://nslu2-linux.dyoung-mirror.net/feeds/optware/ http-Mirror] | *[http://nslu2-linux.dyoung-mirror.net/feeds/optware/ http-Mirror] | ||
*[ftp://ftp.osuosl.org/pub/nslu2/feeds/optware/ ftp-Mirror] | *[ftp://ftp.osuosl.org/pub/nslu2/feeds/optware/ ftp-Mirror] | ||
[[Kategorie: | [[Kategorie:IPKG-Apps|!]] |
Aktuelle Version vom 25. Februar 2018, 11:30 Uhr
Um die Installation zusätzlicher Software zu vereinfachen, verwendet man das Paketverwaltungssystem IPKG (Itsy Package Management System). IPKG verwendet prozessorspezifische Programmpakete, sodass bei der Installation zusätzlicher Software nicht mehr auf die Kompatibilität zum verwendeten Prozessor geachtet werden muss. IPKG ist nicht Bestandteil der Synology-Firmware und muss zunächst selbst installiert werden.
Installation
Automatische Installation per Paket-Zentrum
Installiere das Paket Easy Bootstrap Installer (EBI).
Hinweis: die Quelle kann nur auf DSM 4.0 bis 4.2 eingebunden werden ("Only for DSM 4.0 - DSM 4.2"). Auf DSM 5.x erhält man den Hinweis: Ungültiger Speicherort
Manuelle Installation per Terminal
Vorbereitung
Die Installation von IPKG muss auf den vorhandenen Prozessortyp abgestimmt sein. Es gibt zwei Möglichkeiten den Prozessortyp zu identifizieren:
- Über die entsprechende Tabelle in der Wiki
- Auf der Kommandozeile den Prozessortyp auslesen:
cat /proc/cpuinfo | more
Der Prozessortyp wird auf unterschiedlichen DiskStations mit unterschiedlichen Attributen angezeigt, zB. cpu, model name oder Processor.
Das Bootstrap-Skript, das im nächsten Schritt verwendet wird, ist abhängig vom identifizierten Prozessortyp:
- Für ARM (armv5tejl, nur DS107+,DS207+,CS407,RS407): http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh
- Für PowerPC (ppc_6xx): http://ipkg.nslu2-linux.org/feeds/optware/ds101g/cross/unstable/ds101-bootstrap_1.0-4_powerpc.xsh
- Für PowerPC (ppc_85xx, e500v?): http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/syno-e500-bootstrap_1.2-7_powerpc.xsh
- Für Marvell Kirkwood 88F6281, 88F6282, 88FR131 (ARMv5TE Feroceon) : http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/syno-mvkw-bootstrap_1.2-7_arm.xsh
- Für Intel Atom: http://ipkg.nslu2-linux.org/feeds/optware/syno-i686/cross/unstable/syno-i686-bootstrap_1.2-7_i686.xsh
Durchführung
- Mit SSH/Telnet !als root, nicht als admin! auf der Synology Station einloggen. Das Passwort für den Benutzer root ist das gleiche wie für den Benutzer admin Ab Version DSM 6.0 ist ein Login mit root nicht mehr möglich! Hier muss man sich admin anmelden und zu root wechseln mittels sudo su.
- In irgend ein Arbeitsverzeichnis wechseln - Beispiel:
cd /volume1/public
- Die prozessorspezifische Bootstrap-Skript-Datei (siehe Vorbereitung) mit wget herunterladen - Beispiel für ARM:
wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/syno-x07-bootstrap_1.2-7_arm.xsh
- Das Bootstrap-Skript ausführen - Beispiel:
sh syno-x07-bootstrap_1.2-7_arm.xsh
- Nur für DS112+/DS212+/DS212/DS212j/DS111/DS211/DS411slim/DS411: Das Boostrap-Skript syno-mvkw-bootstrap_1.2-7_arm.xsh ist noch nicht an den in der DS211/DS411slim/DS411 verwendeten Marvell 88F6282/88FR313 angepasst worden. Es bricht unnötigerweise mit der Fehlermeldung "Error: CPU not Marvell Kirkwood, probably wrong bootstrap.xsh" ab. Dies kann man korrigieren, indem man in der inzwischen erzeugten Datei bootstrap/bootstrap.sh die Zeile 21 wie folgt ändert von
if ! grep Feroceon-KW /proc/cpuinfo >/dev/null 2>&1; then
inif ! grep Feroceon /proc/cpuinfo >/dev/null 2>&1; then
Es wird also nur das -KW gelöscht. Um den Vorgang zu Ende zu bringen, führt man danach dieses Skript aus mit:sh bootstrap/bootstrap.sh
- Nur für DS112+/DS212+/DS212/DS212j/DS111/DS211/DS411slim/DS411: Das Boostrap-Skript syno-mvkw-bootstrap_1.2-7_arm.xsh ist noch nicht an den in der DS211/DS411slim/DS411 verwendeten Marvell 88F6282/88FR313 angepasst worden. Es bricht unnötigerweise mit der Fehlermeldung "Error: CPU not Marvell Kirkwood, probably wrong bootstrap.xsh" ab. Dies kann man korrigieren, indem man in der inzwischen erzeugten Datei bootstrap/bootstrap.sh die Zeile 21 wie folgt ändert von
- Sicherstellen dass /opt/bin und /opt/sbin im PATH des root-Benutzers sind. Ab DSM4.0 müssen dazu in /root/.profile die Zeilen
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
export PATH
auskommentiert (ein # an den Zeilenanfang setzen) oder gelöscht werden. - Das Bootstrap-Skript kann jetzt aus dem Verzeichnis /volume1/public gelöscht werden - Beispiel:
rm syno-x07-bootstrap_1.2-7_arm.xsh
- Neustart des Systems
Wohin wurde jetzt installiert?
ipkg verwaltet Programme im Pfad
/opt
. Das Bootstrap Script legt entsprechend ein Verzeichnis
"/volume1/@optware" bzw. bei den alten PPC Modellen "/volume1/opt"
an und mounted das Verzeichnis als
/opt
Konfiguration
Auch wenn die einfach IPKG Installation erst einmal funktionsfähig ist, hat diese Originale IPKG Installation leider ein paar Nachteile. Vor allem kann es vorkommen, dass die DS nicht mehr korrekt heruntergefahren wird, wenn man nicht noch ein paar Dinge anpasst, welche nachfolgend beschrieben werden.
Aufruf des originalen Optware Startup Scripts auskommentieren
Das IPKG Bootstrap Script hat in das Startup Script /etc/rc.local einen Aufruf des Optware Startup Scripts /etc/rc.optware eingefügt. Dieses Optware Startup Script hat einige schlechte Eigenschaften und es wird in der Folge dieser Beschreibung durch ein Alternatives ersetzt. Sein Aufruf muss entweder gelöscht oder auskommentiert werden.
Die entsprechende Stelle in /etc/rc.local sieht nach einer Auskommentierung so aus:
# Optware setup #[ -x /etc/rc.optware ] && /etc/rc.optware start
Mount Bind entfernen
Nach dem Entfernen des originalen Startup Scripts, wird /opt beim Booten der DS nicht mehr per mount bind eingebunden. Das ist auch gut so, da man ohne Probleme einen Symbolischen Link verwenden kann und so der Mount Bind beim herunterfahren nicht mehr per umount entfernt werden muss.
Umount eines ggf. noch gemounteten /opt
umount /opt
Falls es beim umount zu Problemen kommen sollte, weil noch Dienste der Optware laufen, müssen diese vorher beendet werden. Danach klappt es auch mit dem umount. Falls es gar nicht klappen will, dann wird nach dem entfernen des Eintrags in rc.local einfach die DS neu gestartet. Da die Optware Prozesse zu diesem Zeitpunkt ggf. noch laufen, kann es allerdings sein, dass die DS nicht sauber herunterfährt. Einfach nicht nervös werden und der DS ein paar Minuten Zeit geben, die Filesystem Caches auf die Platte zu schreiben. Danach beherzt abschalten und wieder hochfahren lassen. Dann wieder als root einloggen und weitermachen.
Um den Symbolischen Link statt des Mount Bind zu setzen wird folgendermaßen vorgegangen:
rmdir /opt ln -s /volume1/@optware /opt
Dabei bitte kontrollieren, dass /volume1/@optware auch existiert! Auf manchen DS Varianten scheint das Verzeichnis anders zu heißen. Zur Not also mit einem
ls -l /volume1
nachsehen, wie das entsprechende Verzeichnis heißt.
Neues separates Startup Script für Optware
Ein neues Startup Script sorgt dafür, dass die Optware Scripte doch wieder ausgeführt werden, diesmal sorgt aber der DS Startup und Shutdown Prozess dafür, dass auch jeweils die "start" und ganz wichtig die "stop" Scripte ausgeführt werden. Es sollte dabei darauf geachtet werden, dass die originalen IPKG Optware Startup Scripte nicht unbedingt gut für den Start/Stop-Betrieb geeignet sind. Vor deren Verwendung sollte daher noch einmal sichergestellt werden, dass diese Scripts ordentlich mittels start und stop gesteuert werden können, ansonsten muss man vor einem sauberen Shutdown die entsprechenden Dienste von Hand per "kill" beenden. Wenn alle Scripte sauber mittels "start"- und "stop"-Parameter funktionieren, kann die DiskStation die IPKG Optware-Dienste und selbstdefinierten Dienste sauber hoch- und herunterfahren. Damit wird sichergestellt, dass die DiskStation beim Herunterfahren nicht "hängenbleibt".
Nicht verschwiegen werden soll, dass das neue Optware Startup Script die Optware Dienste erst gegen Ende des Startup Prozesses startet und nicht wie das Alte Script, ganz am Anfang. Dies dürfte aber keinen Nachteil darstellen, die Vorteile überwiegen eindeutig.
Das neu Optware Startup Script sollte unter /usr/local/etc/rc.d/optware.sh abgelegt werden und folgendermaßen aussehen, dabei muss man ggf. das Verzeichnis /usr/local/etc/rc.d von Hand mittels mkdir anlegen. Fall es gar nicht mit dem mkdir klappen sollte, kann man noch das AdminTool installieren, beim Installieren des 3d Party Scripts wird das Verzeichnis unter /usr/local mit angelegt.
#!/bin/sh # # Optware setup # Alternatives Optware Startup und Shutdown Script #/usr/local/etc/rc.d/optware.sh # case $1 in start) [ ! -h /opt -a ! -d /opt ] && ln -s /volume1/@optware /opt for i in /opt/etc/init.d/S??* ;do # # Ignore dangling symlinks (if any). [ ! -f "$i" ] && continue # case "$i" in *.sh) # Source shell script for speed. ( trap - INT QUIT TSTP set start . $i ) ;; *) # No sh extension, so fork subprocess. $i start ;; esac done ;; # stop) # for i in /opt/etc/init.d/S??* ;do # # Ignore dangling symlinks (if any). [ ! -f "$i" ] && continue # case "$i" in *.sh) # Source shell script for speed. ( trap - INT QUIT TSTP set stop . $i ) ;; *) # No sh extension, so fork subprocess. $i stop ;; esac done ;; # *) echo "Usage: $0 [start|stop]" ;; esac # # End
Jetzt noch das Script ausführbar machen, damit es von der DS beim Starten und Stoppen ausgeführt werden kann.
chmod +x /usr/local/etc/rc.d/optware.sh
Fertig zum Testen. Wenn man alles richtig gemacht hat, werden die Optware Dienste beim Starten ausgeführt und beim Herunterfahren sauber beendet. Kein Hängenbleiben der DS beim Reboot mehr.
Wer ganz vorsichtig sein will, benennt erst einmal alle Scripts unter /opt/etc/init.d/ von gross "S" nach klein "s" am Anfang um und startet seine DS erst einmal neu. Danach wird ein Script nach dem anderen wieder nach gross "S" umbenannt, wenn es denn gebraucht wird und die DS neu gestartet. Wenn man die nicht benötigten Startup Scripte weglässt, hat das gleich noch den Vorteil, dass man etwas entrümpelt, falls doch alzu viele IPK Dienste bereits ihren Weg auf die DS gefunden haben.
Zusätzlich kann man mit dieser Vorgehensweise sehr klar feststellen, wo es hakt.
IPKG verwenden
iPKGui
Installiere das Paket iPKGui. Anschließend kannst du IPKG über die Weboberfläche benutzen.
Terminal
Die Liste der verfügbaren Pakete sollte man updaten:
ipkg update
Für alle installierten ipkg Pakete kann man die neueste Version folgendermassen installieren:
ipkg upgrade
Weitere Pakete können so installiert werden (wobei xxxx für einen Paketnamen steht):
ipkg install xxxx
Alle verfügbaren Pakete (die mit ipkg update auch schon lokal bekannt sind) findet man mit
ipkg list
Angenehmer zu lesen mittels
ipkg list | more
- wenn man nach xxxx sucht
ipkg list | grep xxxx
Die Liste der bereits installierten Pakete anzeigen:
ipkg list_installed
Alternative IPKG Startup Scripts
Wie bereits geschrieben, sind die Originalen Startup Scripts des IPKG Optware unter "/opt/etc/init.d/" nicht gerade das gelbe vom Ei. Die Scripts eignen sich gerade mal dazu die Dienste zu starten, aber für das herunterfahren der DS sind diese Scripts einfach nicht geeignet. Daher sind hier alternative Start/Stop Scripts abgelegt und jeder, der seine DS erweitert ist aufgerufen, weitere Scripts, welche ein sauberes Starten und stoppen ermöglichen, hier abzulegen. Wenn man nachfolgende Scripts verwendet, ist das alternative "optware.sh" Sript beim herunterfahren der DS dazu in der Lage die entsprechenden Dienste sauber mit stop zu beenden.
Startup Script atd
Das originale aus dem IPK stammende Startup Script unter /opt/etc/init.d/ wurde um start/stop/restart Prozeduren erweitert.
#!/bin/sh # # Startup script for atd # # Stop myself if running PIDFILE=/var/run/atd.pid # start() { /opt/sbin/atd & echo "Optware startup atd" } # stop() { [ -f ${PIDFILE} ] && kill `cat ${PIDFILE}` echo "Optware shutdown atd" } # case "$1" in start) start ;; stop) stop ;; restart) stop sleep 1 start ;; *) echo "Usage: $0 (start|stop|restart)" exit 1 ;; esac # End
Startup Script fetchmail
Das Script ist etwas angepasst, damit für jeden User ein eigenes fetchmail aufgerufen werden kann. Das Logfile hat derzeit den Nachteil, dass es für alle User beschreibbar und lesbar sein muss. Da ist noch ein kleines TODO, aber fürs erste ist das Script besser, wie das Originale, welches sich für das IPKG unter /opt/etc/init.d/ findet.
#!/bin/sh PROG=fetchmail #ARGS="-d 300 -t 60 -a -e 50 --auth password -f /opt/etc/fetchmailrc -L /opt/var/log/fetchmail" ARGS="-d 910 -t 60 -a -e 50 --auth password -L /opt/var/log/fetchmail" # if [ -z "$1" ] ; then case `echo "$0" | /bin/sed 's/^.*\/\(.*\)/\1/g'` in S??*) rc="start" ;; K??*) rc="stop" ;; *) rc="usage" ;; esac else rc="$1" fi # case "$rc" in start) echo "starting service $PROG" for user in `cat /etc/passwd | awk -F':' '{ print $1}'`; do USERHOME=`cat /etc/passwd | grep "^${user}" | awk -F':' '{print $6}'` if [ -f ${USERHOME}/.fetchmailrc ]; then su - ${user} -c "export HOME=${USERHOME} ; $PROG $ARGS" 2>&1 fi done exit # ;; stop) echo "stopping service $PROG" # if [ -n "`pidof $PROG`" ]; then killall $PROG fi ;; restart) "$0" stop sleep 1 "$0" start ;; *) echo "Usage: $0 (start|stop|restart|usage)" ;; esac # # End
Startup Script rsyncd
Das nachfolgende Script für /opt/etc/init.d/ sollte bei verwendung besser noch einmal sauber durchgetestet werden. Da mit DSM3.0 die Diskstation einen eingenen rsynd anbietet, ist das Script nur vollständigkeitshalber hier abgelegt.
#!/bin/sh # # Startup and Shutdown script for rsyncd # # Start start() { [ -e /opt/etc/default/rsync ] && . /opt/etc/default/rsync # if ${RSYNC_ENABLE} ; then /opt/bin/rsync --daemon ${RSYNC_OPTS} echo "Optware startup rsyncd." fi } # # Stop stop() { if [ -f /var/run/rsyncd.pid ] ; then kill `cat /var/run/rsyncd.pid` else killall rsync 2>/dev/null fi rm -f /var/run/rsyncd.pid } # stop # start # case "$1" in start) start ;; stop) stop ;; restart) stop sleep 1 start ;; *) echo "Usage: $0 (start|stop|restart)" exit 1 ;; esac # # End
Startup Script cupsd
#!/bin/sh # # Start / Stop Script for cupsd http://localhost:631 # PREFIX=/opt NAME=cupsd DAEMON=/opt/sbin/cupsd DAEMON_OPTS="" # # start() { echo "Starting Service: $NAME" $DAEMON $DAEMON_OPTS } # # stop() { killall cupsd } # # case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Usage: $0 (start|stop|restart)" exit 1 ;; esac # # End
Startup Script openvpn mit NAT
Bitte ggf. die Adresse das VPN-Subnetzes entsprechend der /opt/etc/openvpn/openvpn.conf anpassen. Bitte vorher modprobe in Betrieb nehmen.
Hinweis: Beim Booten könnten die korrekten Pfade nicht bekannt sein (zumindest bei DS 212+ mit DSM 4.0). In Folge werden die Module (z.B. tun) nicht geladen. Dann sind im Script die absoluten Pfade anzugeben, d.h. statt modprobe -> /opt/sbin/modprobe, iptables -> /opt/sbin/iptables (6 Änderungen).
#!/bin/sh # # Startup script for openvpn server with NAT routing # to access your local net by VPN. # start() { # Get network interface of default route DEV=$( route -n | grep "^0\.0\.0\.0" | sed 's/ */ /g' | cut -d" " -f8 ) # Get local IP address of default routing interface IPA=$( ip addr show ${DEV} | awk '$1~/^inet$/ {gsub("/.*$","",$2);print $2}' ) # Make sure IP forwarding is enabled echo 1 > /proc/sys/net/ipv4/ip_forward # Make device if not present (not devfs) if ( [ ! -c /dev/net/tun ] ) then # Make /dev/net directory if needed if ( [ ! -d /dev/net ] ) then mkdir -m 755 /dev/net fi mknod /dev/net/tun c 10 200 fi # Make sure the tunnel driver is loaded if ( !(lsmod | grep -q "^tun") ); then modprobe tun fi # Make sure the nat table is loaded # (Will load ip_nat, ip_tables and ip_conntrack too.) if ( !(lsmod | grep -q "^iptable_nat") ); then modprobe iptable_nat fi ## Start standalone servers (without xinetd) comment out if xinetd is used # Start the openvpn daemon - add as many daemons as you want /opt/sbin/openvpn --daemon --cd /opt/etc/openvpn --config openvpn.conf # Setup NAT (adjust address if different) iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source ${IPA} echo "Optware startup openvpn with NAT to ${IPA}" } # stop() { # Kill all servers running if [ -n "`/opt/bin/pidof openvpn`" ]; then /opt/bin/killall openvpn 2>/dev/null fi # Erase and unload nat table if ( (lsmod | grep -q "^iptable_nat") ); then iptables -t nat -F modprobe -r iptable_nat; fi # unloaded no longe needed modules if ( (lsmod | grep -q "^tun") ); then #ifconfig tun0 down modprobe -r tun; fi echo "Optware shutdown openvpn" } # case "$1" in start) start ;; stop) stop ;; restart) stop sleep 1 start ;; *) echo "Usage: $0 (start|stop|restart)" exit 1 ;; esac # End
Allgemeines Startup Script für eigene Scripte
Wenn ein eigenes Programm/Script nicht als Daemon geschrieben wurde, muss man es mit "&" in den Hintergrund legen und die Datei $PIDFILE selber erzeugen und löschen. Eine gute Ausgangsbasis ist das o.g. schlanke Start/Stop für atd. Als exemplarisches (und getestetes Beispiel) habe ich ein sich Python-Script (Datenlogger in Endlos-Loop) eingesetzt. Der Befehl nohup ist nicht für den Systemstart erforderlich. Wenn man aber in einer Konsole den Prozess starten will mit:
sudo /opt/etc/init.d/S10wfrog.sh start
dann würde ohne nohup beim Beenden der SSH-Verbindung das eigene Daemon-Script ebenfalls beendet werden. Ein von nohup gestartetes Kommando läuft unabhängig von der aktiven Shell.
#!/bin/sh # # Startup script for myscript.py # # Stop myself if running PIDFILE=/var/run/myscript.pid # start() { nohup /opt/bin/python2.6 /volume1/Daten/myscript.py & # write pidfile echo $! > $PIDFILE echo "Optware startup myscript" } # stop() { [ -f ${PIDFILE} ] && kill `cat ${PIDFILE}` # remove pidfile rm -f $PIDFILE echo "Optware shutdown myscript" } # case "$1" in start) start ;; stop) stop ;; restart) stop sleep 1 start ;; *) echo "Usage: $0 (start|stop|restart)" exit 1 ;; esac # End
Backup Script Optware / IPKG Installation
Das nachfolgende kleine Backup Script soll als Beispiel dienen, wie die Optware Installation gesichert werden kann. Das Quellverzeichnis muss entsprechend dem DS Pfad für IPKG angepasst werden und das BACKUPDIR sollte natürlich auf einem externen Medium liegen.
#!/bin/sh # # Script zum Backup der Optware incl. der Einstellungen # OPTWARE="/volume1/@optware /etc/rc.optware /etc/profile /etc/rc.local /usr/local/etc/rc.d/optware.sh" BACKUPDIR="/volume1/backup_data" # sollte auf ein externes Medium gelegt werden (z.B. USB-Stick) # if [ ! -e $BACKUPDIR ]; then mkdir -p $BACKUPDIR; fi BACKUPFILE=optware-backup-`date +%a`.tar.bz2 tar -cjf ${BACKUPDIR}/${BACKUPFILE} ${OPTWARE} # # End
externe Links, Mirrors
Mirror wenn ipkg.nslu2-linux.org down ist