[OE-core] [PATCH 1/1] systemd: make /etc/sysctl.conf have real effect

Martin Jansa martin.jansa at gmail.com
Fri Nov 7 14:29:07 UTC 2014


On Fri, Nov 07, 2014 at 11:34:47AM +0800, ChenQi wrote:
> On 11/07/2014 06:38 AM, Randy Witt wrote:
> > On 11/06/2014 05:29 AM, Koen Kooi wrote:
> >>
> >> Op 6 nov. 2014, om 12:59 heeft ChenQi <Qi.Chen at windriver.com> het 
> >> volgende geschreven:
> >>
> >>>
> >>>
> >>> On 11/06/2014 06:33 PM, Koen Kooi wrote:
> >>>>> Op 6 nov. 2014, om 08:59 heeft ChenQi <Qi.Chen at windriver.com> het 
> >>>>> volgende geschreven:
> >>>>>
> >>>>> On 11/06/2014 03:48 PM, Koen Kooi wrote:
> >>>>>> Op 6 nov. 2014, om 08:32 heeft Chen Qi <Qi.Chen at windriver.com> 
> >>>>>> het volgende geschreven:
> >>>>>>
> >>>>>>> In systemd, /etc/sysctl.conf is actually ignored by systemd-sysctl,
> >>>>>>> because this command only examine *.conf files under a bunch of 
> >>>>>>> directories
> >>>>>>> like /etc/sysctl.d or /usr/lib/sysctl.d.
> >>>>>>>
> >>>>>>> The problem is we are used to configuring kernel parameters in 
> >>>>>>> /etc/sysctl.conf,
> >>>>>>> so it would be really strange if the configuration in that file 
> >>>>>>> doesn't have any
> >>>>>>> effect.
> >>>>>>>
> >>>>>>> This patch reference Fedora's solution to this problem, creating 
> >>>>>>> a symlink to
> >>>>>>> /etc/sysctl.conf under /etc/sysctl.d/.
> >>>>>> Shouldn't this be done in procps instead?
> >>>>>>
> >>>>> Actually, the problem is not about `sysctl' command.
> >>>>> procps provides `sysctl', but busybox also provides this command.
> >>>>> It's very possible that on our generated image, procps is not 
> >>>>> installed but `sysctl' command is available.
> >>>>> Both busybox's and procps's `sysctl' command takes 
> >>>>> /etc/sysctl.conf into consideration.
> >>>> Right, but only procps installs that file.
> >>>
> >>> As busybox provides `sysctl' utility, is it reasonable that it also 
> >>> provides a corresponding configuration file (/etc/sysctl.conf)? 
> >>> Should we make a patch for busybox?
> >>>
> >>>
> >>>>> Now, systemd provides a similar utility called `systemd-sysctl' 
> >>>>> which is executed at boot time via systemd-sysctl.service.
> >>>>>
> >>>>> So our actually problem is that systemd-sysctl ignores 
> >>>>> /etc/sysctl.conf, which makes it somewhat strange, especially to 
> >>>>> users who are used to configuring parameters in sysctl.conf.
> >>>>> And this patch solves this problem by adding a symlink under 
> >>>>> /etc/sysctl.d/.
> >>>>>
> >>>>> That's why I think we should put this in systemd.
> >>>> You're adding a symlink to a file which only exists if you install 
> >>>> procps, which isn't in RDEPENDS.
> >>>>
> >>>
> >>> As I said before, procps is *not* necessary for the sysctl mechanism 
> >>> to have effect.
> >>> (Think about systemd-based core-image-minimal image.)
> >>>
> >>> Busybox provides `sysctl', systemd provides `systemd-sysctl'.
> >>> (It's an easy program, there might exist other packages that provide 
> >>> it too.)
> >>>
> >>> /etc/sysctl.conf is a configuration file which is very likely to be 
> >>> modified or created by administrators to configure kernel parameters.
> >>> (You can't expect administrators to all start learning systemd, 
> >>> trying to understand the gap and differences. In addition, they may 
> >>> have scripts that edit /etc/sysctl.conf to automate their work.)
> >>>
> >>> The point of the symlink is to ensure that when users edit 
> >>> /etc/sysctl.conf (or create one), configurations in that file will 
> >>> have effect at boot time.
> >>>
> >>> Just think about this problem from a standpoint of user experience.
> >>
> >> You still haven't convinced me that shipping a broken symlink is a 
> >> good idea. I'm pretty sure it's not even allowed in out commit 
> >> guidelines.
> >>
> > I agree, even in Fedora's case, both /etc/sysctl.conf and 
> > /etc/sysctl.d/99-sysctl.conf come from the same package, 
> > initscripts-9.51-2.
> >
> >
> 
> Koen & Witt,
> 
> When I started out to solve this problem, I basically came up with three 
> solutions. Please see details below. I chose to use solution 3 because I 
> think it's better than the other two. Please tell me which one you like, 
> or please tell me your solution.
> 
> Solution 1:
> Make 'sysctl.conf' managed by ALTERNATIVES mechanism in OE. Busybox, 
> procps and systemd all provide this file. And the symlink is still in 
> systemd.
> (My opinion for this one: over engineering)
> 
> Solution 2:
> Make base-files provide sysctl.conf and /etc/sysctl.d/99-sysctl.conf (in 
> case of systemd). procps no longer provides sysctl.conf.
> (My opinion for this one: sysctl.conf doesn't logically belong to 
> base-files.)
> 
> Solution 3:
> Let systemd provide a broken symlink '/etc/sysctl.d/99-sysctl.conf' and 
> don't change anything else.
> 
> Which of the above three solutions do you like? Do you have any other 
> suggestion?

Solution 4 (suggested by Koen and supported by me):
Provide the systemd symlink by the same package which provides sysctl.conf in
your image.

If you want to get better user experience for admins with scripts to
update their /etc/sysctl.conf then submit patch to systemd upstream to
process that file, so that their experience will be the same on all
systemd based systems they manage.

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20141107/f257442a/attachment-0002.sig>


More information about the Openembedded-core mailing list