Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
net-ftp/tftp-hpa-5.2-r1 und systemd: Konfiguration anpassen
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Mon Mar 19, 2018 2:33 pm    Post subject: net-ftp/tftp-hpa-5.2-r1 und systemd: Konfiguration anpassen Reply with quote

Hallo zusammen,

ich habe hier immer noch ein Verständnisproblem mit dem Start von daemonen unter systemd und im speziellen Fall hier mit dem oben genannten tftp daemon.

Bei den Unit files finde ich das hier:
Code:
systemctl list-unit-files

...
tftp.service                                                              static
...
tftp.socket                                                               disabled
...


Dann jeweils die Konfig:
Code:
systemctl cat tftp.service
# /lib/systemd/system/tftp.service
[Unit]
Description=Tftp Server

[Service]
ExecStart=/usr/sbin/in.tftpd -R 4096:32767 -s /tftproot
StandardInput=socket


und
Code:
systemctl cat tftp.socket
# /lib/systemd/system/tftp.socket
[Unit]
Description=Tftp Server Activation Socket

[Socket]
ListenDatagram=69

[Install]
WantedBy=sockets.target


Wenn ich das jetzt richtig interpretiere aktiviert man den socket, welcher dann den daemon startet sobald der socket angesprochen wird.
So, die Konfig ist ja in dem Fall global und wenn ich die für meine Zwecke anpassen will, kann ich das mit einem override file tun welches ich per
Code:
systemctl edit tftp.service
[Service]
ExecStart=/usr/sbin/in.tftpd -c -u ftp -R 4096:32767 -s /srv/tftp_root/
in der Art anlege.

Dann aktivieren:
Code:
systemctl daemon-reload
systemctl enable tftp.socket


Und wenn ich versuche was per tftp zu übertragen bekomme ich einen timeout, und sehe im journal
Code:
tftp.service: Service has more than one ExecStart= setting, which is only allowed for Type=oneshot services. Refusing.


So, ich könnte es im globalen Unitfile ändern, aber dann würde es ja beim nächsten Update überschrieben. Deshalb gibt es ja die override files.
Also was mache ich falsch?
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
schmidicom
Veteran
Veteran


Joined: 09 Mar 2006
Posts: 1924
Location: Schweiz

PostPosted: Mon Mar 19, 2018 3:06 pm    Post subject: Reply with quote

Die Funktion "edit" von systemctl habe ich ehrlich gesagt nie benutzt aber anhand der Fehlermeldung die du da bekommen hast hat das Unit nach deinem Edit wohl zwei "ExecStart"-Zeilen was nicht funktionieren kann.

Versuche erst einmal sicherzustellen das die Originaldatei von "tftp.service" unter "/lib/systemd/system/" noch in ihrem original zustand ist. Wenn ja dann kopiere diese mit cp nach "/etc/systemd/system/" und ändere mit irgend einem Editor deiner Wahl diese Kopie ab. Danach wäre noch ein "systemctl daemon-reload && systemctl disable tftp.service tftp.socket && systemctl enable tftp.socket" gut um sicherzustellen das beim hochfahren auch wirklich das richtige gestartet wird.

EDIT:
Nach dem durchlesen der Manpage zu "systemctl edit" würde ich dir auch empfehlen mal nachzusehen ob du in deinem "/etc/systemd/system/" von deinem ersten edit Versuch irgendwelche "tftp.service.d/override.conf" Fragmente übrig hast.
_________________
Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW
Back to top
View user's profile Send private message
tazinblack
Veteran
Veteran


Joined: 23 Jan 2005
Posts: 1146
Location: Baden / Germany

PostPosted: Wed Mar 21, 2018 2:43 pm    Post subject: Reply with quote

schmidicom wrote:
Die Funktion "edit" von systemctl habe ich ehrlich gesagt nie benutzt aber anhand der Fehlermeldung die du da bekommen hast hat das Unit nach deinem Edit wohl zwei "ExecStart"-Zeilen was nicht funktionieren kann.

Versuche erst einmal sicherzustellen das die Originaldatei von "tftp.service" unter "/lib/systemd/system/" noch in ihrem original zustand ist. Wenn ja dann kopiere diese mit cp nach "/etc/systemd/system/" und ändere mit irgend einem Editor deiner Wahl diese Kopie ab. Danach wäre noch ein "systemctl daemon-reload && systemctl disable tftp.service tftp.socket && systemctl enable tftp.socket" gut um sicherzustellen das beim hochfahren auch wirklich das richtige gestartet wird.

EDIT:
Nach dem durchlesen der Manpage zu "systemctl edit" würde ich dir auch empfehlen mal nachzusehen ob du in deinem "/etc/systemd/system/" von deinem ersten edit Versuch irgendwelche "tftp.service.d/override.conf" Fragmente übrig hast.


Die Funktion edit legt in "/etc/systemd/system/" ein Verzeichnis mit dem Namen das service an. In diesem Fall "tftp.service.d" und da dann die Datei override.conf an.
Inzwischen hab ich herausgefunden, dass man in override Dateien einen schon gesetzten Parameter erst wieder auf leer setzen muss bevor man ihn wieder neu setzt und das immer mit der zugehörigen section.
Also z.B. in meinem Fall so:

Code:
[Service]
ExecStart=
ExecStart=/usr/sbin/in.tftpd -u ftp -c -R 4096:32767 -s /srv/tftp_root/


Jetzt scheint das Ding auch zu starten.
_________________
Gruß / Regards
tazinblack
_______________________________________________________
what's the point in being grown up if you can't be childish sometimes
Back to top
View user's profile Send private message
musv
Advocate
Advocate


Joined: 01 Dec 2002
Posts: 3337
Location: de

PostPosted: Fri Mar 23, 2018 8:58 am    Post subject: Reply with quote

edit kannte ich auch noch nicht.

Mal ein paar Worte zu xyz.service.d:
Die Datei(en) darin müssen nicht override.conf heißen. Du kannst jeden beliebigen Namen wählen. Es muss halt nur auf .conf enden. Die Dateien darin haben den Sinn, die Unit zu erweiteren und dabei die originale Unit ansonsten beizubehalten. Sinnvolle Verwendung wären das Hinzufügen einer Abhängigkeit (after, requires), das Starten und Beenden eines anderen Services (bindto) oder das Setzen von Environmentvariablen.

Willst du hingegen die originale Unit ändern, halte ich es auch für sinnvoller, die originale Unit aus /usr/lib/systemd/system nach /etc/systemd/system zu kopieren und da zu ändern.

Ich stand übrigens mal vor demselben Problem. Nach irgendeinem Update funktionierte der tftpd (auch tftp-hpa) nicht mehr. Ich fand dann raus, dass das Teil nur noch auf IPv6 hört und IPv4 mal eben so deaktiviert wurde.

/etc/systemd/system/tftp.service:

[Unit]
Description=Tftp Server

[Service]
ExecStart=/usr/sbin/in.tftpd -4 -L -R 4096:32767 -s /tftproot

[Install]
WantedBy=multi-user.target


Den Socket hab ich übrigens deaktiviert. Soviel Leistung braucht der tftp-Daemon jetzt nicht.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum