Где Linux задает значения по умолчанию для SHMMAX?

Мне просто интересно, где эти значения устанавливаются и что они по умолчанию? Моя шахта в настоящее время 18446744073692774399. Я не установил ее нигде, что я вижу.

$ cat /proc/sys/kernel/shmmax 18446744073692774399 $ sysctl kernel.shmmax kernel.shmmax = 18446744073692774399 

  • В чем разница между выводами dmesg и / var / log / messages?
  • Как отлаживать ввод с устройства ввода (/ dev / input / event *)
  • не может монтироваться в / proc / cmdline
  • После того, как моя система разбилась, и я запускаю сбой, но я получаю следующую ошибку: не поддерживается формат файла
  • Новое ядро ​​из Backports не загружается
  • Зачем изменять ядро ​​Linux вместо создания модуля ядра?
  • Что подразумевает план памяти виртуального ядра в dmesg?
  • Несоответствие модуля ядра 4.9
  • 2 Solutions collect form web for “Где Linux задает значения по умолчанию для SHMMAX?”

    Функция __init ipc_ns_init устанавливает начальное значение shmmax , вызывая shm_init_ns , который устанавливает его в значение макроса SHMMAX .

    Определение SHMMAX находится в <uapi/linux/shm.h> :

     #define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */ 

    На 64-битных машинах это определение равно значению, которое вы нашли, 18446744073692774399 .

    На лету вы можете просто эхо в / proc / sys / kernel / shmmax!

     # echo 20446744073692774399 > /proc/sys/kernel/shmmax 

    Но большинство людей редактируют файл /etc/sysctl.conf с линией, подобной:

     kernel.shmmax=your_new_value_here 

    См. Справочную страницу sysctl (8).

    Linux и Unix - лучшая ОС в мире.