2014-06-20 9:06 GMT-06:00 Canek Peláez Valdés <can...@gmail.com>: > On Fri, Jun 20, 2014 at 4:06 AM, <cov...@ccs.covici.com> wrote: >> Hi. I want to turn numlock automatically, but I am using systemd and I >> am having troubles doing this. At someones suggestion in a previous >> message (I think Canek's) I created >> /etc/systemd/system/getty@service.d/numlock.conf with the following >> contents >> >> [Service] >> ExecStartPost=/usr/bin/setleds -D -num </dev/%I >> >> >> However, setleds dies with the following error: >> Jun 19 14:24:55 ccs.covici.com setleds[4878]: KDGKBLED: Inappropriate >> ioctl for device >> Jun 19 14:24:55 ccs.covici.com setleds[4878]: Error reading current >> flags setting. Maybe you are not on the console? >> >> I tried to fool with chvt to make the console current, but no joy there. >> >> Any assistance would be appreciated. >
This has called my attention as it would be nice to activate numlock by default on console(altought not that important for me anyway ) > Could you post the exact invocation for setleds? It should be on the > logs. I think the invocation for setleds shuld be: > > /usr/bin/setleds -D +num < /dev/%i > I have tried this but after skimming trough the manpage systemd.service(5), I've found this command will not work, as a parameter for any of ExecStart* since redirection and pipes(these are mentioned << < | > >> ) are not supported. I'd like to mention also that not executing setleds as follows, with '-' before the binary path : ExecStartPost=-/usr/bin/setleds -D -num </dev/%i breaks the start of the whole getty service, making it unable to login in into any console The way to work around this recommended in the manual is instead invoking a shell and make it run the commands: ExecStartPost=-/bin/sh -c 'setleds -D +num < /dev/%i' This worked pretty well and can be tested without reboot, on tty8 for example : - edit files - run sudo systemctl daemon-reload - run systemctl start getty\@tty8.service Ctrl+Alt+F8 and see what happened . > The difference between %I (capital "i") and %i is only that %i escapes > special symbols, but since it's only the string tty[1-N], I don't > think it matters much. > > The exact invocation of setleds matters, so we can see if the template > unit is generating the correct one. > I leave my 'systemctl stauts -l getty@tty1.service' output just for completness of reference of what errors where shown: ● getty@tty1.service - Getty on tty1 Loaded: loaded (/etc/systemd/system/getty.target.wants/../../../../usr/lib/systemd/system/getty@.service; enabled) Drop-In: /etc/systemd/system/getty@.service.d └─numlock.conf Active: active (running) since vie 2014-06-20 10:11:57 CST; 8s ago Docs: man:agetty(8) man:systemd-getty-generator(8) http://0pointer.de/blog/projects/serial-console.html Process: 6384 ExecStartPost=/usr/bin/setleds -D +num < /dev/%i (code=exited, status=1/FAILURE) Main PID: 6383 (agetty) CGroup: /system.slice/system-getty.slice/getty@tty1.service └─6383 /sbin/agetty --noclear tty1 linux jun 20 10:11:57 jdesk systemd[1]: Started Getty on tty1. jun 20 10:11:57 jdesk setleds[6384]: KDGKBLED: Inappropriate ioctl for device jun 20 10:11:57 jdesk setleds[6384]: Error reading current flags setting. Maybe you are not on the console? > Regards. > -- > Canek Peláez Valdés > Profesor de asignatura, Facultad de Ciencias > Universidad Nacional Autónoma de México > I hope this would help, have a nice day.