Installalation des Synology Toolchain

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hi

irgendwie bin ich ja erst vor ein paar Tagen auf den 3rd-Party Apps Integration Guide von Synology gestoßen, aber nun ist es soweit: Ich habe den toolchain installiert.

Da man den nicht auf der DS installieren kann, braucht man eine feine Linux-Distribution, wenn man nicht sowieso einen Linux-PC herumstehen hat. Irgendwie hat mir mein im VirtualPC installalierter Debian nicht mehr gefallen ... war immer so zäh, so dass ich mich nach einer Alternative umgesehen habe. Hier ist sie: andLinux. Das Teil läuft einfach als Service unter Windows mit :D besser gehts nicht.

Installation ist absolut easy mit den Voreinstellungen und vorübergehend stillgelegter Firewall. Lässt seine Fenster unter Windows laufen und integriert sich in den File-Explorer. Man kann seine Laufwerke sharen ... ach was sag ich - bin ganz hin und weg. Toolchain entpackt (gemäß Anleitung) und meine erstes C-Programm für die DS geschrieben, fehlerfrei kompiliert und auf die DS kopiert. Es läuft ... :p
 

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Das ist ja mal genial. Dann werde ich mich demnächst auch mal daran versuchen. Und vielen Dank für den Tip mit andLinux. Hört sich wirklich prima an...

EDIT: Schade - zur Zeit wird wohl nur 32-Bit unterstützt :(

Trolli
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
joa, aber ich kenne nen Händler, der dir einen 32-bit-Prozessor ganz günstig verkaufen kann, wenn du mit deinem 16 oder 64-bittigem unzufrieden sein solltest :D
 

wizjos

Benutzer
Mitglied seit
03. Sep 2008
Beiträge
30
Punkte für Reaktionen
0
Punkte
0
Itari,

Zuerst entschüldigung für mein Deutsch, denn ich nicht gewöhn bin Deutsch zu schreiben...:eek:

Ich habe eine frage. Du schreibst : Installation ist absolut easy mit den Voreinstellungen und vorübergehend stillgelegter Firewall. Lässt seine Fenster unter Windows laufen und integriert sich in den File-Explorer. Man kann seine Laufwerke sharen ... ach was sag ich - bin ganz hin und weg. Toolchain entpackt (gemäß Anleitung) und meine erstes C-Programm für die DS geschrieben, fehlerfrei kompiliert und auf die DS kopiert. Es läuft ...

Und als fan Ihrer beitrage habe ich das mal versucht... Sehr gut! Ich habe das beispiel C-Programm aus dem PDF von Synology kompiliert und das läuft!

Aber, wenn ich dieses progamm in php anruf bekomme ich immer 'User is not authenticated.'

Mein php code ist:

PHP:
<?php
$output =exec('/usr/syno/synoman/phpsrc/test/authenticate');
echo "Output= ".$output;
?>

Und wenn ich mittels dem 3rdParty eintrage 'shell' (danke dafür) eingebe: '/usr/syno/synoman/phpsrc/test/authenticate' oder '/usr/syno/synoman/modules/authenticate.cgi' bekomme ich 'admin' als resultat....

Eben so als ich auth.cgi aus 'Zugriff absichern' anruf bekomme ich ach nicht das richtige:

PHP:
<?php
exec('auth.cgi',$r);
while (list ($key, $val) = each ($r)) {
echo "$key -> $val <br>";
}
?>

resultiert in:

0 -> Content-type: text/html
1 ->
2 ->

Also meine frage ist: Wo ist dem fehler? Oder wie kann mann in php die zugriff absichern?

Gruss
Wizjos (aus Holland)
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Wahrscheinlich besteht das Problem

Rich (BBCode):
<?php
$output =exec('/usr/syno/synoman/phpsrc/test/authenticate');
echo "Output= ".$output;
?>

darin, dass dieses Skript nicht als 3rd-party-Apps durch den sys-Apache aufgerufen wurde. Nur der sys-Apache (das ist der Webserver des Disk Station Managers), ist ja durch das Anmelden (und dem internen Ablegen eines Cookies im Browser) erst in der Lage, eine Abfrage nach der Benutzer-Identität durchzuführen. Deswegen geht es wohl gut mit dem 'Shell'-Skript, weil das ja durch den Sys-Apache aufgerufen wird. Versuch mal folgendes:

(1) Das Skript oben im Verzeichnis /usr/syno/synoman/phpsrc/test.php abzuspeichern.
(2) Dann im Browser: https://IP-der-DS:5001/phpsrc/test.php aufrufen.


Alternativ besteht immer auch die Möglichkeit, den Zugriff per .htaccess abzusichern. Dazu gibt es auf Synology-Web-Site unter FAQ eine Erläuterung.

itari
 
Zuletzt bearbeitet:

Trolli

Benutzer
Mitglied seit
12. Jul 2007
Beiträge
9.848
Punkte für Reaktionen
1
Punkte
0
Dann im Browser: https://IP-der-DS/phpsrc/test.php:5001 aufrufen.
Ääh - ist das die richtige Schreibweise? Meiner Meinung nach muss das https://IP:5001/phpsrc/test.php heissen...
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Na klar --- war wieder mal im Tran :D

itari
 

Phraser

Benutzer
Mitglied seit
13. Jan 2009
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
...

Da man den nicht auf der DS installieren kann, braucht man eine feine Linux-Distribution, wenn man nicht sowieso einen Linux-PC herumstehen hat. Irgendwie hat mir mein im VirtualPC installalierter Debian nicht mehr gefallen ... war immer so zäh, so dass ich mich nach einer Alternative umgesehen habe. Hier ist sie: andLinux. Das Teil läuft einfach als Service unter Windows mit :D besser gehts nicht.

...

Welche andLinux Version hast du benutzt?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
Man kann nicht einfach die authenticate.cgi aufrufen. Woher soll die wissen welcher User das versucht? Der Browser verschickt ja ein Cookie an den Server. In diesem stehen dann die fehlenden Daten
PHP:
<?php
putenv('HTTP_COOKIE='.$_SERVER['HTTP_COOKIE']);
putenv('REMOTE_ADDR='.$_SERVER['REMOTE_ADDR']);
$user=exec('/usr/syno/synoman/webman/modules/authenticate.cgi');
if($user !== 'admin'){
  header("HTTP/1.0 403 Forbidden");
  exit;
}
?>
Siehe auch mal unser Wiki **guck**
 

Phraser

Benutzer
Mitglied seit
13. Jan 2009
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Welche Version des andLinux soll man nehmen?
Welche Einstellungen sind die besten? Es werden viele Abfragen gemacht...
 

Phraser

Benutzer
Mitglied seit
13. Jan 2009
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Wenn mich bei der Installation von andLinux gefragt wird:

Please create a shared folder and enter the requested information.
Name of the Windows file share:" "

Was muss ich da angeben?
 

slide-a-llama

Benutzer
Mitglied seit
02. Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hi. Ist zwar lange her, dass in diesem Thema das letzte Mal was passiert ist, aber vielleicht wisst ihr ja trotzdem noch Rat :)

Ich arbeite nicht mit andLinux sondern habe mir in einer VirtualBox ein Debian System installiert und gemäß Anleitung von Synology die Toolchain (aktuelle Version 4.2 - gcc4374_eglibc2874_qoriq-GPL) für die DS413 (PowerPC QorIQ Linux 2.6.32) installiert. Kompilieren klappt aber leider nicht. Stattdessen Fehlermeldungen, die sich auf Sourcen beziehen, die wohl zur Toolchain gehören.

Mit dem nachfolgenden Aufruf erhalte ich die unten stehenden Fehlermeldungen...
g++ -c -I/usr/local/powerpc-none-linux-gnuspe/include -mhard-float -O2 -g0 -pipe -Wall -o icd-main.o icd-main.cpp

Rich (BBCode):
/usr/local/powerpc-none-linux-gnuspe/include/linux/syno.h:55:18: error: operator "defined" requires an identifier
/usr/local/powerpc-none-linux-gnuspe/include/linux/syno.h:55:19: error: missing '(' in expression
/usr/local/powerpc-none-linux-gnuspe/include/linux/syno.h:59:18: error: operator "defined" requires an identifier
/usr/local/powerpc-none-linux-gnuspe/include/linux/syno.h:59:19: error: missing '(' in expression

Habt ihr wohl einen Tipp für mich, woran es hakt?

Gruß
Felix
 

Elador

Benutzer
Mitglied seit
17. Dez 2011
Beiträge
164
Punkte für Reaktionen
0
Punkte
0
Poste doch mal die entsprechende Zeile, syno.h:55
 

slide-a-llama

Benutzer
Mitglied seit
02. Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
um diese Zeilen geht's:

syno.h
Rich (BBCode):
55:   #if 0 || defined(1)
56:   #define SYNO_USB_BACKPORT_BY_ETRON
57:   #endif
 
Zuletzt bearbeitet:

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
Mit dem nachfolgenden Aufruf erhalte ich die unten stehenden Fehlermeldungen...
g++ -c -I/usr/local/powerpc-none-linux-gnuspe/include -mhard-float -O2 -g0 -pipe -Wall -o icd-main.o icd-main.cpp
Hallo Felix,

cd /in/das/verzeichniss/quelle
/dort/wo/der/compiler -mhard-float -O2 -g0 -pipe -Wall -o icd-main.o icd-main.cpp
Du rufst den g++ vom Linux auf oder ?

Gruß Jo
 

slide-a-llama

Benutzer
Mitglied seit
02. Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Ja. Und wenn ich stattdessen den Compiler vom Toolchain aufrufe passiert das hier:
Code:
[B]/usr/local/powerpc-none-linux-gnuspe/powerpc-none-linux-gnuspe/bin/g++[/B] -c -I/usr/local/powerpc-none-linux-gnuspe/include -mhard-float -O2 -g0 -pipe -Wall -o icd-main.o icd-main.cpp
g++: error trying to exec 'cc1plus': execvp: No such file or directory

Da scheinen mehrere Compiler im Toolchain enthalten zu sein. Dieser hier wird wohl in der Anleitung beschrieben. Selber Fehler wie mit dem Standard-Compiler:
Code:
[B]/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-g++[/B] -c -I/usr/local/powerpc-none-linux-gnuspe/include -mhard-float -O2 -g0 -pipe -Wall -o icd-main.o icd-main.cpp
In file included from /usr/local/powerpc-none-linux-gnuspe/bin/../lib/gcc/powerpc-none-linux-gnuspe/4.3.2/../../../../powerpc-none-linux-gnuspe/include/asm/unistd.h:5,
                 from /usr/local/powerpc-none-linux-gnuspe/bin/../lib/gcc/powerpc-none-linux-gnuspe/4.3.2/../../../../powerpc-none-linux-gnuspe/include/sys/syscall.h:25,
                 from inotify-cxx.h:35,
                 from icd-main.cpp:32:
/usr/local/powerpc-none-linux-gnuspe/bin/../lib/gcc/powerpc-none-linux-gnuspe/4.3.2/../../../../powerpc-none-linux-gnuspe/include/linux/syno.h:55:18: error: operator "defined" requires an identifier
/usr/local/powerpc-none-linux-gnuspe/bin/../lib/gcc/powerpc-none-linux-gnuspe/4.3.2/../../../../powerpc-none-linux-gnuspe/include/linux/syno.h:55:19: error: missing '(' in expression
/usr/local/powerpc-none-linux-gnuspe/bin/../lib/gcc/powerpc-none-linux-gnuspe/4.3.2/../../../../powerpc-none-linux-gnuspe/include/linux/syno.h:59:18: error: operator "defined" requires an identifier
/usr/local/powerpc-none-linux-gnuspe/bin/../lib/gcc/powerpc-none-linux-gnuspe/4.3.2/../../../../powerpc-none-linux-gnuspe/include/linux/syno.h:59:19: error: missing '(' in expression
make: *** [icd-main.o] Fehler 1
 

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
Ja. Und wenn ich stattdessen den Compiler vom Toolchain aufrufe passiert das
Ok, was hast Du vor ?
Module erstellen ?

zB.:
eigene Quelle compilieren ?

quelle und toolschain, immer das passende benutzen !
für Module
das benötigt menuconfig
apt-get install libncurses5 libncurses5-dev

tar jxvf quelle.tbz
tar zxpf toolchain.tar.gz -C /usr/local

mit vi im Makefile den ARCH und Cross Compiler passend eintragen, hier für ARM
vi source/linux-2.6.15/Makefile
ARCH = arm
CROSS_COMPILE = /usr/local/arm-marvell-linux-gnu/bin/arm-marvell-linux-gnu-

eine vorhanden config nach anderen Kernel .config kopieren
cd source/linux-2.6.15
cp 88f5281-config source/linux-2.6.32/.config
cd source/linux-2.6.32

make ARCH=arm menuconfig

und jetz alles via ANSI Menue einstellen.

EXIT und speichern

make ARCH=arm

das dauert einen Weile und braucht viel Platz :)

Gruß Jo
 

slide-a-llama

Benutzer
Mitglied seit
02. Mrz 2013
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Ganz konkret versuche ich diese Sourcen zu kompilieren (Incron). Für mein Verständnis fällt mein Vorhaben also in die Kategorie "eigene Quellen compilieren" aus deinem Beitrag. Um mein Problem nachzuvollziehen, habe ich mal das folgende Szenario zusammengestellt, weil das Problem nicht in den Sourcen liegt, die ich kompilieren will, sondern an Code, der von Synology kommt und Teil der Toolchain ist (syno.h, siehe oben)

Dies ist das Szenario (mit kurzem Beispielcode, bei dem das gleiche Problem auftritt):
  • VirtualBox mit Debian installiert
  • Toolchain, die zur DS 413 gehört (gcc4374_eglibc2874_qoriq-GPL) heruntergeladen und entpackt (tar zxpf toolchain.tar.gz -C /usr/local)
  • HelloWorld.cpp erstellt
    Rich (BBCode):
    #include <iostream>
    using namespace std;
    
    #if 0 || defined(1)
    	#define TEST "IF gewählt"
    #else
    	#define TEST "ELSE gewählt"
    #endif
    
    int main() {
    	cout << "Hello World!";
    	cout << TEST;
    	return 0;
    }
  • Compiliert mit diesem Kommando:
    /usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-g++ ../helloworld.cpp -mhard-float -O2 -g0 -pipe -Wall -mcpu=8548 -v -L/usr/local/powerpc-none-linux-gnuspe/lib

Fehlerausgabe:
../main.cpp:5:18: error: operator "defined" requires an identifier
../main.cpp:5:19: error: missing '(' in expression

Der Compiler steigt wohl an dem #if 0 || defined(1) aus, weil 0 und 1 keine gültigen Bezeichner sind...

EDIT:
Ich habe auch noch einmal versucht, den o.g. HelloWorld Code mit dem g++ Compiler zu kompilieren, der in der Debian Installation schon enthalten war. Ergebnis: dieselben Fehlermeldungen. Hat Synology da irgendwas gezaubert, dass das bei denen läuft?
 

Elador

Benutzer
Mitglied seit
17. Dez 2011
Beiträge
164
Punkte für Reaktionen
0
Punkte
0
Nein der steigt dir mmn. nicht beim 0 oder 1 aus sondern beim "defined"! Was soll das denn auch sein? Kein valides c++ keyword soviel ich weis. Muss also fast von Synology stammen. Find doch mal raus woher das kommt, zb im src
find . | xargs grep 'defined'
 

joku

Benutzer
Mitglied seit
06. Mrz 2011
Beiträge
6.664
Punkte für Reaktionen
2
Punkte
164
Ich habe auch noch einmal versucht, den o.g. HelloWorld Code mit dem g++ Compiler zu kompilieren, der in der Debian Installation schon enthalten war. Ergebnis: dieselben Fehlermeldungen. Hat Synology da irgendwas gezaubert, dass das bei denen läuft?
Hallo, wenn es mit Debian die selben Fehler meldet, da liegt es an dem Script.

Code:
#include <stdio.h>
 
int main()
{
    printf ("Hello World!\n");
 
    return 0;
}
gcc -o hellworld helloworld.c
oder mit dem Cross Compiler
/usr/local/powerpc-none-linux-gnuspe/bin/powerpc-none-linux-gnuspe-gcc -o hellworld helloworld.c

./helloworld
Hello World!

Gruß Jo
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat