如何在 Linux 内核中设置设备文件的组 ID?
How to set group id of a device file in Linux kernel?
我的声音设备是这样的:
# ls -l /dev/snd
crw-rw---- 1 root root 116, 0 Jan 1 00:00 controlC0
crw-rw---- 1 root root 116, 24 Jan 1 00:00 pcmC0D0c
crw------- 1 root root 116, 33 Jan 1 00:00 timer
但在正常的 Linux 内核上应该是这样的(注意组是 'audio'):
# ls -l /dev/snd
crw-rw---- 1 root audio 116, 0 Jan 1 00:00 controlC0
crw-rw---- 1 root audio 116, 24 Jan 1 00:00 pcmC0D0c
crw------- 1 root audio 116, 33 Jan 1 00:00 timer
我知道有一个 udev 可以在添加设备时应用规则来更改组,但是由于我完全控制了内核代码,所以我想在内核中修改它,可能还有设备驱动程序代码。
我该怎么做? Linux 添加设备时如何分配组?
PS:我使用的是 4.1 版的嵌入式内核。第一个来自它。第二个来自我的 Ubuntu 电脑,我没有看到它使用 udev 规则。我看过一本书说 user/group 属性是在创建文件时由进程 ID/GID 分配的,那么为什么 Ubuntu pc 有不同的组?
在 Linux 中,声音设备通常通过 ALSA 工作,并且从 ALSA wiki:
udev is the standard way of managing /dev directories, designed to clear up some issues with previous /dev implementations, and provide a robust path forward.
和
udev rules are flexible and very powerful. Writing udev rules should solve common Alsa problems, reported by several people:
Assign several audio devices the same hwplug:x,y numbers, whenever you plug-in or plug-out a device.
Identify two identical audio devices using the product ID or the USB bus ID of the device.
Upload firmware to a special device.
根据上述,我在 Ubuntu 电脑上通过 运行 以下命令做了一些实验:
sudo udevadm control --stop-exec-queue
而且我发现这些组变成了根,但不再是音频。
所以到目前为止,一般来说,ALSA 已经使用 udev 来处理音频组修改,并且驱动程序中应该没有组修改代码。我将使用 udev 来解决我的问题,感谢您的帮助:)
我的声音设备是这样的:
# ls -l /dev/snd
crw-rw---- 1 root root 116, 0 Jan 1 00:00 controlC0
crw-rw---- 1 root root 116, 24 Jan 1 00:00 pcmC0D0c
crw------- 1 root root 116, 33 Jan 1 00:00 timer
但在正常的 Linux 内核上应该是这样的(注意组是 'audio'):
# ls -l /dev/snd
crw-rw---- 1 root audio 116, 0 Jan 1 00:00 controlC0
crw-rw---- 1 root audio 116, 24 Jan 1 00:00 pcmC0D0c
crw------- 1 root audio 116, 33 Jan 1 00:00 timer
我知道有一个 udev 可以在添加设备时应用规则来更改组,但是由于我完全控制了内核代码,所以我想在内核中修改它,可能还有设备驱动程序代码。
我该怎么做? Linux 添加设备时如何分配组?
PS:我使用的是 4.1 版的嵌入式内核。第一个来自它。第二个来自我的 Ubuntu 电脑,我没有看到它使用 udev 规则。我看过一本书说 user/group 属性是在创建文件时由进程 ID/GID 分配的,那么为什么 Ubuntu pc 有不同的组?
在 Linux 中,声音设备通常通过 ALSA 工作,并且从 ALSA wiki:
udev is the standard way of managing /dev directories, designed to clear up some issues with previous /dev implementations, and provide a robust path forward.
和
udev rules are flexible and very powerful. Writing udev rules should solve common Alsa problems, reported by several people:
Assign several audio devices the same hwplug:x,y numbers, whenever you plug-in or plug-out a device. Identify two identical audio devices using the product ID or the USB bus ID of the device. Upload firmware to a special device.
根据上述,我在 Ubuntu 电脑上通过 运行 以下命令做了一些实验:
sudo udevadm control --stop-exec-queue
而且我发现这些组变成了根,但不再是音频。
所以到目前为止,一般来说,ALSA 已经使用 udev 来处理音频组修改,并且驱动程序中应该没有组修改代码。我将使用 udev 来解决我的问题,感谢您的帮助:)