如何从终端正确清理 `/dev` 下的 `media*` 或 `tty*` 等设备?

如何从终端正确清理 `/dev` 下的 `media*` 或 `tty*` 等设备?

我在跑步DELL XPS13 9343 上的 Ubuntu 18.04.2 LTS并且似乎受到内核错误的影响(参考:https://www.spinics.net/lists/linux-media/msg135812.html),这就导致了我现在遇到的问题media0——media255全部被占用dev,而这又导致了以下问题(media: could not get a free minor):

dmesg | tail -13
[ 5068.870529] uvcvideo: Found UVC 1.00 device Integrated_Webcam_HD (0c45:670c)
[ 5068.911713] uvcvideo 2-5:1.0: Entity type for entity Extension 4 was not initialized!
[ 5068.911716] uvcvideo 2-5:1.0: Entity type for entity Extension 3 was not initialized!
[ 5068.911717] uvcvideo 2-5:1.0: Entity type for entity Processing 2 was not initialized!
[ 5068.911719] uvcvideo 2-5:1.0: Entity type for entity Camera 1 was not initialized!
[ 5068.911722] media: could not get a free minor
[ 5069.249598] usb 2-5: USB disconnect, device number 56
[ 5069.556176] usb 2-5: new high-speed USB device number 57 using xhci_hcd
[ 5069.767923] usb 2-5: New USB device found, idVendor=0c45, idProduct=670c
[ 5069.767929] usb 2-5: New USB device strings: Mfr=2, Product=1, SerialNumber=0
[ 5069.767934] usb 2-5: Product: Integrated_Webcam_HD
[ 5069.767938] usb 2-5: Manufacturer: CN09GTFM7248753ABDZMA00
[ 5069.779009] uvcvideo: Found UVC 1.00 device Integrated_Webcam_HD (0c45:670c)

虽然这个错误已经修复,但它似乎还没有移植到我的 LTS 版本(供参考:https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1836654, 入口media: uvcvideo: Fix driver reference counting)。

但我现在的问题是:
1)如何以适当的方式手动(最好从终端)清理这些媒体控制器设备(设备控制器节点)?
2) 一般来说,我如何找出 /dev 下哪些项目是不活动的/过时的并清除它们?


附加信息:

/sys/devices/pci0000:00/0000:00:14.0/usb2不断尝试添加但随后删除2-5目录。

我现在/sys/dev/char有很多两种类型的断开的链接:

lrwxrwxrwx 1 root root 0 Aug 15 09:52 13:256 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/input/input42/event256
lrwxrwxrwx 1 root root 0 Aug 15 09:52 13:257 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/input/input43/event257
............
lrwxrwxrwx 1 root root 0 Aug 15 09:52 13:495 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/input/input281/event495
lrwxrwxrwx 1 root root 0 Aug 15 09:52 13:496 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/input/input282/event496

lrwxrwxrwx 1 root root 0 Aug 15 09:52 241:0 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/media0
lrwxrwxrwx 1 root root 0 Aug 15 09:52 241:1 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/media1
lrwxrwxrwx 1 root root 0 Aug 15 09:52 241:10 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/media10
............
lrwxrwxrwx 1 root root 0 Aug 15 09:52 241:98 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/media98
lrwxrwxrwx 1 root root 0 Aug 15 09:52 241:99 -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-5/2-5:1.0/media99

然后还有/dev/char/dev/input要考虑(?)

答案1

1)如何以适当的方式手动(最好从终端)清理这些媒体控制器设备(设备控制器节点)?

您可以删除 /dev/ 中的所有内容,但下次重新启动时,所有内容都会重新创建。基本上,这就是 Linux 能够实现尽可能通用的系统的方式:这些 /dev/ 条目是动态创建的,并且是系统需要的,因此您可以取出硬盘并将其放入另一台机器...下次重新启动时,/dev/ 会为该系统创建。除了第三方驱动程序之外,其他系统没有该第三方设备,其他系统都可以完美运行。

2) 一般来说,我如何找出 /dev 下哪些项目是不活动的/过时的并清除它们?

/dev/ 是根据软件包作为设备所需要的而创建的,因此所有 - 都应该 - 都是需要的(尽管我无法告诉您 /dev/ 中的哪些条目对于所有软件包的用途都是必需的)。

理论上,软件包的 /dev/ 条目数量应有限。如果uvcvideo出现错误,导致创建大量 /dev/ 条目,除非您考虑删除某个选项,否则我们对此无能为力。问题不在于 /dev/...那是错误造成的。应该做的是uvcvideo修复。uvcvideo

您可以手动删除 /dev/ 条目,但每次重启只能删除一次。而且要使用脚本执行此操作...我不太建议这样做。它可能会破坏一些东西。除此之外:我预计系统会在启动期间开始抛出错误(因此在您清理之前)。

相关内容