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.

Reply via email to