Почему dmesg будет получать сообщения из пространства пользователя?
Вы можете использовать dmesg -u, чтобы увидеть журнал из пространства пользователя. В моем случае у меня есть лог от systemd и lvm. Почему это происходит, почему пользовательская программа может печатать в буферное кольцо ядра?
2 ответа
Корневой процесс может писать в /dev/kmsg
, Это используется для ведения журнала, которое происходит очень рано, до того, как обычные системы ведения журнала будут готовы выполнить любое ведение журнала.
Некоторые процессы пользовательского пространства могут писать в dmesg, потому что они выполняют действия, которые раньше принадлежали процессам пространства ядра, но которые были перемещены в пользовательское пространство, чтобы упростить управление пользователями.
Классическим примером является udev, который, согласно Википедии:
он выполняет... все действия в пользовательском пространстве при добавлении / удалении устройств, включая загрузку прошивки.
Другой известный пример - FUSE, который:
Файловая система в пользовательском пространстве (FUSE) - это механизм операционной системы для Unix-подобных компьютерных операционных систем, который позволяет непривилегированным пользователям создавать свои собственные файловые системы без редактирования кода ядра.
Вместе с LVM, init и т. Д. Эти инструменты выполняют операции ядра в пространстве пользователя; по этой причине, а также, возможно, и для преемственности с инструментами, которые они заменили (devfs, hotplug, ...), их вывод явно принадлежит кольцевому буферу ядра.