通过附加启动参数在启动时禁用网络摄像头

通过附加启动参数在启动时禁用网络摄像头

我的戴尔笔记本电脑上有一个内置网络摄像头。我没有看到它列出来lspci,但它有效。

我使用的是自编译内核,以下是我启用的选项:

# zcat /proc/config.gz | grep -v '^#' | egrep '(MEDIA|VIDEO)'
CONFIG_ACPI_VIDEO=y
CONFIG_MEDIA_SUPPORT=y
CONFIG_MEDIA_SUPPORT_FILTER=y
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_VIDEO_DEV=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_VIDEO_V4L2=y
CONFIG_VIDEO_V4L2_I2C=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_VIDEOBUF2_CORE=y
CONFIG_VIDEOBUF2_V4L2=y
CONFIG_VIDEOBUF2_MEMOPS=y
CONFIG_VIDEOBUF2_VMALLOC=y
CONFIG_SND_USB_AUDIO_USE_MEDIA_CONTROLLER=y

我的内核中的所有选项都是静态编译的,并且我没有使用可加载模块。

如何通过向内核启动选项传递/附加某些内容来在启动时禁用网络摄像头?

我想在启动时决定是否要在支持网络摄像头的情况下启动内核,或者不支持网络摄像头。

答案1

如果CONFIG_KALLSYMS启用,可以通过以下方式禁用内置驱动程序禁用它们的init功能。对于uvcvideo(可能是您的网络摄像头使用的驱动程序),添加

initcall_blacklist=uvc_video_init

到你的内核的命令行。

如果不是,您将无法禁用仅有的您的网络摄像头使用内核命令行参数,但您可以在运行时控制您的网络摄像头;在 中找到它的条目/sys/bus/usb/devices,并将 0 写入相应的authorized文件中,例如

echo 0 | sudo tee /sys/bus/usb/devices/1-8/authorized

写入 1 再次启用相机。

您可以使用USB卫士提供对所有 USB 设备(包括网络摄像头)的控制。

答案2

并不意味着作为问题的答案。仅解释原因”你就是不能!“是标题中所述问题的唯一可能答案:


确实可以传递此类启动参数:

module_name.parameter_name=parameter_value

如果驱动程序接受parameter_name并且parameter_value在接受值的范围内,则某些内核内置的module_name驱动程序将遵守这一点。

例如,USB 存储驱动程序能够使用以下类型的引导命令行参数忽略一个特定的 USB 存储设备:

usb-storage.quirks=03f0:b002:iu

因为 USB 存储经过编程是为了遵守怪异参数并将其值解码为表示 Vendor-Id:Product-Id,而 i 表示 IGNORE_DEVICE。

如果 uvcvideo 驱动程序确实支持怪癖不幸的是,该参数没有为该参数提供特定值,旨在忽略任何设备。

相关内容