Могу ли я изменить значения sysctl по умолчанию в grub?

При использовании ядер старше 5.1, если пользователь создает сетевое пространство имен, оно начинается со значений sysctl по умолчанию. Даже если корневые пространства имен изменили эти значения с помощью sysctl, новые сетевые пространства имен по-прежнему будут использовать значения по умолчанию. Например, proc/sys/net/ipv6/conf/all/forwardingвсегда равно 0, поскольку это значение по умолчанию.

Если я правильно понимаю, это значения по умолчанию, установленные ядром, и мне было интересно, можно ли изменить их через GRUB_CMDLINE_LINUX или любым другим способом. Обратите внимание, что я не хочу получать доступ к сетевому пространству имен и изменять параметр через sysctl (или echo /proc/sys/net.... ), я хотел бы изменить значение по умолчанию

2
задан 8 November 2021 в 20:07
1 ответ

Функция, которую вы ищете, доступна только начиная с ядра 5.8, как описано в этом UL SE Q/A:Как установить sysctl с помощью параметра командной строки ядра?:

sysctl.*= [KNL]

      Set a sysctl parameter, right before loading the init
      process, as if the value was written to the respective
      /proc/sys/... file. Both '.' and '/' are recognized as
      separators. Unrecognized parameters and invalid values
      are reported in the kernel log. Sysctls registered
      later by a loaded module cannot be set this way.
      Example: sysctl.vm.swappiness=40

Таким образом, в сочетании с devconf_inherit_init_net, найденным OP в предыдущем Q/A , начиная с ядра 5.8 , но не ранее и, следовательно, не ранее 5.1, добавляя через GRUB эти два параметра ядра:

sysctl.net.core.devconf_inherit_init_net=1 sysctl.net.ipv6.conf.all.forwarding=1

позволят достичь намеченной цели.

2
ответ дан 14 November 2021 в 12:59

Теги

Похожие вопросы