FS#27984 - [initscripts] System hangs at boot on "Removing Leftover Files"
Attached to Project:
Arch Linux
Opened by Laurent Rahuel (asrenzo) - Wednesday, 18 January 2012, 11:19 GMT
Last edited by Tom Gundersen (tomegun) - Tuesday, 08 May 2012, 12:49 GMT
Opened by Laurent Rahuel (asrenzo) - Wednesday, 18 January 2012, 11:19 GMT
Last edited by Tom Gundersen (tomegun) - Tuesday, 08 May 2012, 12:49 GMT
|
Details
Description:
Since my friday upgrade, systems hangs for a while (several minutes) at this point. My box is configured to auth against an external ldap server. When this system is finally up, everything is OK. Digging around system boot process, I found that the problem must be located in /usr/lib/initscripts/arch-tmpfiles. When I comment this line in function remove_leftover from file /etc/rc.d/functions, eveything is OK. In file /usr/lib/tmpfiles.d/consolekit.conf, we have no username nor groupname provided. Then arch-tmpfiles adds default values for uid and gid. These values are 0 and 0. But when using uid numbers instead of usernames, the getent command requires the ldap connexion to be up. This can not be effective because network is not up. Thus replacing content of /usr/lib/tmpfiles.d/consolekit.conf with d /run/ConsoleKit 0755 root root - instead of d /run/ConsoleKit 0755 - - - does the trick. Regards, Laurent |
This task depends upon
The workaround works; thanks!
The netgroup file specifies ``netgroups'', which are sets of (host, user, domain) tuples that are to be given similar network access.
Each line in the file consists of a netgroup name followed by a list of the members of the netgroup. Each member can be either the name of another netgroup or a specification of a tuple as follows: (host, user, domain)
Moreover, as of every howto dealing with ldap authentication on linux, the official archlinux one (https://wiki.archlinux.org/index.php/LDAP_Authentication) requiers to modify /etc/nsswitch.conf to lookup group in ldap after files.
The point is that you must configure your machine to not require network connection to resolve system users/groups, this is not supported.
I just want to say that it doesn't seems to be related to configuration. Even if users and groups are supposed to be checked in files before ldap in nsswitch.conf, the fact that when uid or gid are not found in parsed files, they are replaced by numbers (0,0) in /usr/lib/initscripts/arch-tmpfiles. Then getent passwd 0 (or getent group 0) will check in both files and ldap.
Then if network is not up and ldap server is not on the same machine, the system hangs.
One simple action is to change these lines from /usr/lib/initscripts/arch-tmpfiles
[[ ${line[3]} = '-' ]] && line[3]=0
[[ ${line[4]} = '-' ]] && line[4]=0
with
[[ ${line[3]} = '-' ]] && line[3]='root'
[[ ${line[4]} = '-' ]] && line[4]='root'
Regards
Using the solution proposed by Laurent Rahuel (asrenzo) works.
Then I upgraded the system and system hangs on boot with the same message.
I have more than 25 boxes which are all broken after an upgrade embeding initscripts if I forget to manually fix consolekit.conf.
Could you please fix and TEST before closing.
Regards,
Laurent Rahuel
Very strange.
pacman -Ss initscripts will return even if i upgraded my system with pacman -Suy last week
core/initscripts 2012.05.1-1 (base) [installé: 2012.03.2-1]
System initialization/bootup scripts
I had to force install with "pacman -S initscrpts" to get the latest version with your changes.
Any clue ?
Regards,
Laurent Rahuel
Can you confirm that 2012.05.1 fixes the issue?