autorun.sh wird korrekt angezeigt, startet aber nicht beim Booten

Ich habe ein autorun.sh auf einem TS-451+ eingerichtet und alles scheint korrekt zu sein, aber ich bekomme es nicht zum Laufen.

Wenn ich mir das eigentliche autorun.sh anschaue (indem ich /tmp/config mounte), sehe ich:

-rwxr-xr-x 1 admin administrators 356 2026-03-20 08:09 autorun.sh\*

drwx------ 2 admin administrators 12288 2010-01-10 23:41 lost+found/

-rw-r–r-- 1 admin administrators 11700 2026-03-20 07:47 smb.conf

-rw-r–r-- 1 admin administrators 9 2026-03-20 07:47 smb.conf.cksum

-rw-r–r-- 1 admin administrators 37 2026-03-20 07:38 system.map.key

-rw-r–r-- 1 admin administrators 11401 2026-03-20 08:12 uLinux.conf

Wenn ich im ControlPanel→Hardware nachsehe, sehe ich

Das sieht für mich korrekt aus. Was ich erreichen möchte, ist, das SSH-Login-Menü auszuschalten, einige Umgebungsvariablen zu setzen und meine Standardroute auf einen USB QNAP 5Gbps Ethernet-Adapter zu legen. Derselbe Befehlssatz funktioniert einwandfrei, wenn ich ihn als root aus einer SSH-Session heraus ausführe, wird aber beim Systemstart nicht ausgeführt. Ich habe die Verzögerung hinzugefügt, falls autorun ausgeführt wird, bevor Netzwerk und Dateisysteme alle gemountet sind.

Jeder Ratschlag, wie ich das zum Laufen bekomme, wäre sehr willkommen.

Das SSH-Anmeldemenü kann in der GUI deaktiviert werden

Ist Ihre autorun.sh so eingestellt, dass sie beim Start ausgeführt wird? (Die Einstellung wird im Screenshot durch das Popup verdeckt)

Entschuldigung, dass ich das nicht gezeigt habe, aber es ist eingeschaltet.

Ich werde nach diesem Menüeintrag in der GUI suchen.

Ich brauche immer noch, dass die autoexec nach jedem Boot ausgeführt wird, um mein Netzwerk-Routing einzurichten. Aus irgendeinem Grund routet das QNAP nicht automatisch über das USB-Ethernet, obwohl es die einzige NIC ist, die an das Gerät angeschlossen ist. Dadurch spricht es hier im Haus nur mit meinem Class-C-Netz. Ich kann nicht herausfinden, warum es nicht läuft.

Er ist hier

@tangential, versuche, die Ausgabe deines autorun.sh (sowohl stdout als auch stderr) in eine Logdatei umzuleiten und prüfe das Log später auf Probleme.

Füge dazu diese neue Zeile nach der Shebang-Zeile in deine autorun.sh ein:

exec > /var/log/autorun.log 2>&1

Danke! Ich teste das jetzt!

Habe es getestet. Offenbar ist eth4 zu diesem Zeitpunkt noch nicht aktiv. Ich schätze, ich brauche eine längere Verzögerung im Skript? Momentan habe ich 60 Sekunden drin – vielleicht sollte ich es mal mit 180 versuchen?

Hier ist, was ich herausgefunden habe:

[admin@NAS0ECB0C ~]# cd /var/log

[admin@NAS0ECB0C log]# ls -l au*

-rw-r–r-- 1 admin administrators 26 2026-03-20 16:22 autorun.log

[admin@NAS0ECB0C log]# cat autorun.log

Kann Gerät „eth4“ nicht finden

[admin@NAS0ECB0C log]# ifconfig eth4

eth4 Link encap:Ethernet HWaddr 24:5E:BE:81:62:26

      inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0

      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

      RX packets:9574 errors:0 dropped:23 overruns:0 frame:0

      TX packets:3702 errors:0 dropped:0 overruns:0 carrier:0

      collisions:0 txqueuelen:1000

      RX bytes:1889384 (1.8 MiB)  TX bytes:3006272 (2.8 MiB)

Ja, oder du könntest eine Schleife erstellen, die darauf prüft und erst weitermacht, wenn es gefunden wurde. :nerd_face:

Mir ist aufgefallen, dass dein Skript versucht, über den ip-Befehl auf eth4 zuzugreifen, aber du später mit ifconfig nach eth4 gesucht hast. Das könnte relevant sein, wenn du in deinem Skript nach eth4 suchst.

So überprüfen Sie, ob autorun.sh tatsächlich beim Booten ausgeführt wird | QNAP