Skip to contentSkip to conversation

systemd: make /etc/sysctl.conf have real effect

PATCH In review Chen Qi 4 participants 11 messages Nov 6, 2014 – Nov 9, 2014

lore
Share & tools
lore

Chen Qi

author
#0 lore raw

cover systemd: make /etc/sysctl.conf have real effect

The following changes since commit d7a277b35bcc67050046c76fb70412101679a545:

docbook-xsl-stylesheets: add perl to RDEPENDS (2014-11-04 10:20:34 +0000)

are available in the git repository at:

git://git.openembedded.org/openembedded-core-contrib ChenQi/systemd-sysctl
http://cgit.openembedded.org/cgit.cgi/openembedded-core-contrib/log/?h=ChenQi/systemd-sysctl

Chen Qi (1):
systemd: make /etc/sysctl.conf have real effect

 meta/recipes-core/systemd/systemd_216.bb | 3 +++
 1 file changed, 3 insertions(+)
Signature · 1 line
1.9.1
author
#1 lore raw

PATCH 1/1 systemd: make /etc/sysctl.conf have real effect

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/.

---
 meta/recipes-core/systemd/systemd_216.bb | 3 +++
 1 file changed, 3 insertions(+)
meta/recipes-core/systemd/systemd_216.bb +3 -0
index 27a5d92..b730b13 100644
@@ -148,6 +148,9 @@ do_install() {
 
 	# Enable journal to forward message to syslog daemon
 	sed -i -e 's/.*ForwardToSyslog.*/ForwardToSyslog=yes/' ${D}${sysconfdir}/systemd/journald.conf
+
+	# Make /etc/sysctl.conf have real effect on systemd based systems
+	ln -sf ../sysctl.conf ${D}${sysconfdir}/sysctl.d/99-sysctl.conf
 }
 
 do_install_ptest () {
Signature · 1 line
1.9.1
#2 lore raw

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 10 lines

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?

author
#3 lore raw
Quoted 6 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 4 lines

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.

Quoted 8 lines
Quoted 6 lines

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.

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.

Best Regards,
Chen Qi

#4 lore raw
Quoted 16 lines

Op 6 nov. 2014, om 08:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 12 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 10 lines

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/.

Quoted 7 lines
Quoted 2 lines

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.

Quoted 6 lines

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.

author
#5 lore raw
Quoted 15 lines · Koen Kooi
Quoted 15 lines

Op 6 nov. 2014, om 08:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 12 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 10 lines

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/.

Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

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?

Quoted 8 lines
Quoted 6 lines

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.

Best Regards,
Chen Qi

#6 lore raw

Op 6 nov. 2014, om 12:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 44 lines · Koen Kooi
Quoted 15 lines
Quoted 15 lines

Op 6 nov. 2014, om 08:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 12 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 10 lines

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/.

Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

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?

Quoted 8 lines
Quoted 6 lines

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.)

Quoted 6 lines

/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.

#7 lore raw
Quoted 47 lines · Koen Kooi

Op 6 nov. 2014, om 12:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 44 lines · Koen Kooi
Quoted 15 lines
Quoted 15 lines

Op 6 nov. 2014, om 08:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 12 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 10 lines

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/.

Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

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?

Quoted 8 lines
Quoted 6 lines

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.)

Quoted 9 lines
Quoted 6 lines

/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.

author
#8 lore raw
Quoted 51 lines · Randy Witt
Quoted 50 lines · Koen Kooi

Op 6 nov. 2014, om 12:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 47 lines · Koen Kooi
Quoted 15 lines
Quoted 15 lines

Op 6 nov. 2014, om 08:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 12 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 10 lines

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/.

Quoted 7 lines
Quoted 6 lines
Quoted 2 lines

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?

Quoted 8 lines
Quoted 6 lines

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.)

Quoted 9 lines
Quoted 6 lines
Quoted 3 lines

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?

//Chen Qi

#9 lore raw
Quoted 108 lines · ChenQi
Quoted 78 lines · Randy Witt
Quoted 77 lines · Koen Kooi

Op 6 nov. 2014, om 12:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 72 lines · Koen Kooi
Quoted 23 lines
Quoted 23 lines

Op 6 nov. 2014, om 08:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 19 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 11 lines

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.

Quoted 3 lines

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?

Quoted 7 lines
Quoted 6 lines

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?

Quoted 9 lines
Quoted 9 lines

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/.

Quoted 4 lines
Quoted 1 line

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.

Quoted 9 lines
Quoted 4 lines

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.)

Quoted 6 lines

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.

Signature · 1 line
Martin 'JaMa' Jansa     jabber: [email protected]
author
#10 lore raw

Martin & Koen,

I've sent out a new patch.
The title is '[OE-core] [PATCH 0/1] procps: install symlink under /etc/sysctl.d in case of systemd'.

Thanks for your reviewing.

Best Regards,
Chen Qi

Quoted 118 lines · Martin Jansa
Quoted 102 lines · ChenQi
Quoted 72 lines · Randy Witt
Quoted 71 lines · Koen Kooi

Op 6 nov. 2014, om 12:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 68 lines · Koen Kooi
Quoted 23 lines
Quoted 23 lines

Op 6 nov. 2014, om 08:59 heeft ChenQi <[email protected]> het volgende geschreven:

Quoted 19 lines · Koen Kooi

Op 6 nov. 2014, om 08:32 heeft Chen Qi <[email protected]> het volgende geschreven:

Quoted 11 lines

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.

Quoted 3 lines

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?

Quoted 7 lines
Quoted 6 lines

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?

Quoted 9 lines
Quoted 9 lines

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/.

Quoted 4 lines
Quoted 1 line

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.

Quoted 10 lines
Quoted 5 lines
Quoted 1 line

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.)

Quoted 6 lines

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.