Elogin doesn't start properly

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • William
Owner
unassigned
Submitted by
William
Severity
normal
W
W
William wrote on 5 Jul 2017 01:39
(address . bug-guix@gnu.org)
CAPCYgVdLByzKBR0cGQ7f32+U0jCMDH6ZCvJTQB=L1MbNg95j5Q@mail.gmail.com
On my GuixSD VM (Guix release 0.13) elogind doesn't start at startup,
despite (elogind-service) being used in config.scm. I am not using
Xorg or a desktop manager like Slim.

Elogind only starts when loginctl is executed as loginctl activates
elogind via DBus, meaning that it doesn't record any logins before
loginctl is run. I don't believe that this is intended; my Arch Linux
install doesn't miss any logins.

My config.scm:

Toggle snippet (13 lines)
(services (cons* ;; Networking
(service wpa-supplicant-service-type)
(service connman-service-type (connman-configuration))
(service tlp-service-type)
(service thermald-service-type)
(udisks-service)
(polkit-service)
(elogind-service)
(dbus-service)

%base-services))

Output (just started up vm):


Toggle snippet (38 lines)
gollum login: cavej
Password:
This is the GNU operating system, welcome!

gollum% loginctl
dbus[392]: [system] activating service name='org.freedesktop.login1'
(using servicehelper)
[/gnu/store/ninbsrgj12ik3zjwk0vbcbmhwfkfhj7h-logind.conf:5] Unknown
lvalue 'InhibitDelayMaxSecs' in section 'Login'
[/gnu/store/ninbsrgj12ik3zjwk0vbcbmhwfkfhj7h-logind.conf:15] Unknown
lvalue 'HolfoffTimeoutSecs' in section 'Login'
[/gnu/store/ninbsrgj12ik3zjwk0vbcbmhwfkfhj7h-logind.conf:17] Unknown
lvalue 'IdleActionSeconds' in section 'Login'
[/gnu/store/ninbsrgj12ik3zjwk0vbcbmhwfkfhj7h-logind.conf:19] Unknown
lvalue 'RemoveIpc' in section 'Login'
dbus[392]: [system] Successfully activated service 'org.freedesktop.login1'
New seat seat0.
Watching system buttons on /dev/input/event0 (Power Button)
SESSION UID USER SEAT

0 sessions listed.
gollum% exit
Respawning term-tty1
Service term-tty1 has been restarted.


This is the GNU system. Welcome.
gollum login: cavej
Password:
New session c1 of user cavej.
This is the GNU operating system, welcome!

gollum% loginctl
SESSION UID USER SEAT
c1 30011 cavej seat0

1 sessions listed.
L
L
Ludovic Courtès wrote on 11 Jul 2017 00:21
(name . William)(address . w@vieta.uk)(address . 27580@debbugs.gnu.org)
87bmos2ary.fsf@gnu.org
Hello,

William <w@vieta.uk> skribis:

Toggle quote (5 lines)
> Elogind only starts when loginctl is executed as loginctl activates
> elogind via DBus, meaning that it doesn't record any logins before
> loginctl is run. I don't believe that this is intended; my Arch Linux
> install doesn't miss any logins.

I thought pam_elogind would trigger bus-activation but it does not,
because of this:

/* Make this a NOP on non-logind systems */
if (!logind_running())
return PAM_SUCCESS;

where:

static inline bool logind_running(void) {
return access("/run/systemd/seats/", F_OK) >= 0;
}

When the system is started, /run/systemd is empty, so pam_elogind
directly returns success.

I’m looking for a way to work around this; to be continued…

Ludo’.

PS: The problem does not happen with X and SLiM because they somehow
activate elogind before one has logged in.
L
L
Ludovic Courtès wrote on 11 Jul 2017 11:13
(name . William)(address . w@vieta.uk)(address . 27580-done@debbugs.gnu.org)
8760ezz68s.fsf@gnu.org
Hi,

(Please keep 27580-done@debbugs.gnu.org Cc’d.)

William <w@vieta.uk> skribis:

Toggle quote (5 lines)
> Shouldn't our shepherd service simply execute elogind-program-wrapper?
> This may also be right because elogind handles things like the laptop
> lid being closed, which should be handled even if no one has logged in
> yet.

Good point, we should probably just start it from the Shepherd. Done:


Let me know if there are still problems.

For the record, I tested with this config:
Toggle diff (30 lines)
diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl
index f7b8823d4..293182e53 100644
--- a/gnu/system/examples/bare-bones.tmpl
+++ b/gnu/system/examples/bare-bones.tmpl
@@ -2,7 +2,7 @@
;; for a "bare bones" setup, with no X11 display server.
(use-modules (gnu))
-(use-service-modules networking ssh)
+(use-service-modules networking ssh desktop dbus)
(use-package-modules admin)
(operating-system
@@ -38,12 +38,12 @@
%base-user-accounts))
;; Globally-installed packages.
- (packages (cons tcpdump %base-packages))
;; Add services to the baseline: a DHCP client and
;; an SSH server.
(services (cons* (dhcp-client-service)
- (service openssh-service-type
- (openssh-configuration
- (port-number 2222)))
+ (elogind-service)
+ (service polkit-service-type)
+ (dbus-service)
+
%base-services)))
Thank you!

Ludo’.
Closed
W
W
William wrote on 11 Jul 2017 09:33
Fwd: bug#27580: Elogin doesn't start properly
(address . 27580@debbugs.gnu.org)
CAPCYgVdQ2S_cfew7umOM98xtOFaFQNxDZ4OAn_sqt4if+wVDzA@mail.gmail.com
Thanks for looking at this Ludo.

In systemd the systemd-logind.service looks a little like this:
[Service]
ExecStart=/usr/lib/systemd/systemd-logind
BusName=org.freedesktop.login1

It looks as though it simply executes the systemd-logind program.

Shouldn't our shepherd service simply execute elogind-program-wrapper?
This may also be right because elogind handles things like the laptop
lid being closed, which should be handled even if no one has logged in
yet.

Will

On 10 July 2017 at 23:21, Ludovic Courtès <ludo@gnu.org> wrote:
Toggle quote (31 lines)
> Hello,
>
> William <w@vieta.uk> skribis:
>
>> Elogind only starts when loginctl is executed as loginctl activates
>> elogind via DBus, meaning that it doesn't record any logins before
>> loginctl is run. I don't believe that this is intended; my Arch Linux
>> install doesn't miss any logins.
>
> I thought pam_elogind would trigger bus-activation but it does not,
> because of this:
>
> /* Make this a NOP on non-logind systems */
> if (!logind_running())
> return PAM_SUCCESS;
>
> where:
>
> static inline bool logind_running(void) {
> return access("/run/systemd/seats/", F_OK) >= 0;
> }
>
> When the system is started, /run/systemd is empty, so pam_elogind
> directly returns success.
>
> I’m looking for a way to work around this; to be continued…
>
> Ludo’.
>
> PS: The problem does not happen with X and SLiM because they somehow
> activate elogind before one has logged in.
?