主次设备号实例
发布网友
发布时间:2024-10-23 17:23
我来回答
共1个回答
热心网友
时间:2024-11-06 01:37
在scull发行包中,有一个名为scull_load的脚本,用户可以通过系统的rc.local文件调用它,或者在需要模块时手动执行。rc.local文件通常位于/etc/rc.d/目录下。对于依赖模块驱动的用户,这个脚本提供了基础操作。(中文版本中也提到可以通过kerneld进行使用。)
脚本的主体如下:
#!/bin/sh
module="scull"
device="scull"
mode="664"
# 使用传递的参数调用insmod
/sbin/insmod -f ./$module.o $*
# 清理过时的设备节点
rm -f /dev/$(device)[0-3]
# 从/proc/devices中获取设备号
major=$(awk -F: "/$module/ {print $1}" /proc/devices)
# 为每个设备创建节点
mknod /dev/${device}0 c $major 0
mknod /dev/${device}1 c $major 1
mknod /dev/${device}2 c $major 2
mknod /dev/${device}3 c $major 3
# 根据系统组设置设备的组和权限
group="staff"
if ! grep -q '^staff:' /etc/group > /dev/null; then
group="wheel"
fi
chgrp $group /dev/${device}[0-3]
chmod $mode /dev/${device}[0-3]
脚本的最后几行解释了设备组和权限设置的必要性。由于脚本需要由超级用户运行,新建的设备文件将属于root。默认权限设置允许root写入,但其他用户只有读取权限。为了实现更精细的访问控制,例如仅对特定组用户开放权限,需要调整这些设备的组和权限设置。