标签: devices

/dev 中的设备文件实际上是做什么的?

(不是理解 /dev 及其子目录和文件的副本)

我正在浏览我的文件系统,这是我第一次花一点时间来分析我的/dev目录。我对其中的设备文件数量感到惊讶,并且无法理解所有这些:

max@linux-vwzy:/dev> ls
adsp             disk      fd0u1760  initctl  mem                 root  sg0       tty    tty21  tty35  tty49  tty62    vboxdrv     vcsa2
audio            dri       fd0u1840  input    mixer               rtc   sg1       tty0   tty22  tty36  tty5   tty63    vboxnetctl  vcsa3
autofs           dsp       fd0u1920  kmem     mixer1              rtc0  sg2       tty1   tty23  tty37  tty50  tty7     vboxusb     vcsa4
block            dvd       fd0u360   kmsg     net                 scd0  sg3       tty10  tty24  tty38  tty51  tty8     vcs         vcsa5
bootsplash       dvdrw     fd0u720   log      network_latency     sda   sg4       tty11  tty25  tty39  tty52  tty9     vcs1        vcsa6 …
Run Code Online (Sandbox Code Playgroud)

filesystems devices

32
推荐指数
1
解决办法
1万
查看次数

对 /dev 使用 devtmpfs

我注意到内核中有以下选项:CONFIG_DEVTMPFS

Device Drivers -> Generic Driver Options -> Maintain devtmpfs to mount at /dev
Run Code Online (Sandbox Code Playgroud)

我看到它在 Debian 发行版内核中默认启用 3.2.0-4-amd64

我试图了解这个选项带来了什么不同。如果没有此选项,/dev则挂载为tmpfs,使用此选项,则挂载为devtmpfs。除此之外,我看不出有什么不同。

help没有明确对我来说之一:

这会在启动初期创建一个 tmpfs/ramfs 文件系统实例。在此文件系统中,内核驱动程序核心维护设备节点及其默认名称和所有注册设备的权限,这些设备具有分配的主要/次要编号。

它提供了一个功能齐全的 /dev 目录,通常 udev 在上面运行,管理权限并添加有意义的符号链接。

在非常有限的环境中,它可能会在没有任何进一步帮助的情况下提供足够功能的 /dev。它还允许简单的救援系统,并可靠地处理动态的主要/次要号码。

有人可以解释使用CONFIG_DEVTMPFS与标准之间的区别/dev吗?

kernel devices linux-kernel

31
推荐指数
1
解决办法
5万
查看次数

“原始”和“成熟”设备驱动程序之间有什么区别?

这个概念是否仅适用于终端驱动程序(大多数站点涵盖的内容)或任何一般的驱动程序?

drivers terminal devices

28
推荐指数
2
解决办法
2万
查看次数

Linux 如何区分真实的和不存在的(例如:设备)文件?

这是一个相当低级的问题,我知道这可能不是最好的提问地点。但是,它似乎比任何其他 SE 网站都更合适,所以就这样吧。

我知道在 Linux 文件系统上,确实存在一些文件,例如:/usr/bin/bashis one that exists。然而,(据我所知),有的还没有实际存在本身和更虚拟的文件,如:/dev/sda/proc/cpuinfo等我的问题是(它们是两个,而是要独立的问题也密切相关):

  • 当发出读取命令(或类似命令)时,Linux 内核如何确定这些文件是否真实(并因此从磁盘读取它们)?
  • 如果文件不是真实的:例如,读取自/dev/random将返回随机数据,读取自/dev/null将返回EOF. 它如何确定要从该虚拟文件中读取哪些数据(以及因此当/如果数据也写入虚拟文件时要做什么) - 是否有某种带有指向适合每个文件的单独读/写命令的指针的映射,甚至是虚拟目录本身?因此,一个条目/dev/null可以简单地返回一个EOF.

linux filesystems devices

28
推荐指数
4
解决办法
3066
查看次数

鼠标事件在 linux 中如何工作?

这主要是出于好奇,我试图了解事件处理是如何在低级别上工作的,所以请不要将我引用到可以为我完成的软件。

例如,如果我想用 C/C++ 编写一个对鼠标点击做出反应的程序,我假设我需要使用系统调用将某些函数挂接到内核,或者您可能只需要不断检查鼠标的状态,我不知道。

我认为这是可能的,因为在 C/C++ 中几乎所有事情都是可能的,因为级别如此之低,我最感兴趣的是它的工作原理,尽管我可能永远不必自己实现它。

问题是它在 linux 中是如何工作的,是否有某些系统调用、c 库等?

linux input devices

27
推荐指数
2
解决办法
3万
查看次数

cat如何知道串口的波特率?

我经常使用cat我的 FPGA 开发板通过串行连接在控制台中查看调试信息,但我从来没有告诉 linux 波特率是多少。cat 如何知道串口连接的波特率是多少?

linux devices serial-port

26
推荐指数
2
解决办法
6万
查看次数

为什么不从 /dev/zero 读取计数为 IO_RBYTES?

我正在使用以下命令清空某些 Linux 4.x 操作系统上的硬盘驱动器:

sudo sh -c 'pv -pterb /dev/zero > /dev/sda'
Run Code Online (Sandbox Code Playgroud)

我打开另一个 tty 并开始sudo htop注意到这一点:

  PID USER      PRI  NI CPU%   RES   SHR   IO_RBYTES   IO_WBYTES S   TIME+  Command
 4598 root       20   0 15.5  1820  1596        4096    17223823 D  1:14.11 pv -pterb /dev/zero
Run Code Online (Sandbox Code Playgroud)

的值IO_WBYTES看起来很正常,但IO_RBYTES保持在 4 KiB 并且永远不会改变。

例如,我运行了一些其他程序

dd if=/dev/zero of=/dev/zero
cat /dev/zero > /dev/zero
Run Code Online (Sandbox Code Playgroud)

并且惊讶地发现它们中没有一个生成大量IO_RBYTESor IO_WBYTES

我认为这不是特定于任何程序的,但是为什么不读取/dev/zero和写入以/dev/{zero,null}计为 I/O 字节?

linux io devices null

26
推荐指数
1
解决办法
3005
查看次数

一台物理设备有多个 /dev/video

首先是一些规格:我的电脑是 HP EliteBook 8460p。它配备了集成的群光 HP 高清网络摄像头。

我的问题是很多应用程序(至少 Skype 和 guvcview)为同一个网络摄像头显示多行;事实上,如果我这样做ls -l /dev | grep video,我会得到以下信息:

crw-rw----  1 root video      29,   0 Apr 16 08:13 fb0
crw-rw----  1 root video     243,   0 Apr 16 08:13 media0
crw-rw----+ 1 root video      81,   0 Apr 16 08:13 video0
crw-rw----+ 1 root video      81,   1 Apr 16 08:13 video1
Run Code Online (Sandbox Code Playgroud)

我有 2 个/dev/video[n]只有一个(集成的)网络摄像头;Skype 可以与 正常工作/dev/video0,但不能与/dev/video1. guvcview 也一样。

如果我插入另一个 USB 网络摄像头,例如罗技摄像头,我会得到以下信息dmesg

[21222.638802] usb 2-2: new high-speed …
Run Code Online (Sandbox Code Playgroud)

video devices camera

25
推荐指数
2
解决办法
1万
查看次数

mv 一个文件到 /dev/null 中断 dev/null

如果我这样做:touch file; mv file /dev/null作为根,/dev/null消失。 ls -lad /dev/null结果没有这样的文件或目录。这会破坏依赖于/dev/nullSSH 的应用程序,并且可以通过执行mknod /dev/null c 1 3; chmod 666 /dev/null. 为什么将常规文件移动到这个特殊文件会导致/dev/null?

澄清一下,这是出于测试目的,我了解该mv命令的工作原理。我很好奇的是为什么ls -la /dev/null在用常规文件替换它之前显示预期的输出,但之后它显示/dev/null不存在,即使据称是通过原始mv命令创建的文件并且文件命令显示 ASCII 文本。我认为这必须是ls命令行为与devfs非特殊文件替换字符/特殊文件时的组合。这是在 Mac OS X 上,行为在其他操作系统上可能会有所不同。

osx devices null

24
推荐指数
3
解决办法
7548
查看次数

如何找出哪个进程正在使用我的 V4L2 网络摄像头?

我尝试运行以下命令:

$ vlc -I dummy v4l2:///dev/video0 --video-filter scene --no-audio --scene-path webcam.png --scene-prefix image_prefix --scene-format png vlc://quit --run-time=1                                                     
VLC media player 2.0.7 Twoflower (revision 2.0.6-54-g7dd7e4d)                                                                                                                                                                                                             
[0x1f4a1c8] dummy interface: using the dummy interface module...                                                                                                                                                                                                          
[0x7fc19c001238] v4l2 demux error: VIDIOC_STREAMON failed                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error setting pixformat: Device or resource busy                                                                                                                                                                                                                 
libv4l2: error …
Run Code Online (Sandbox Code Playgroud)

vlc devices v4l camera

23
推荐指数
2
解决办法
5万
查看次数

标签 统计

devices ×10

linux ×4

camera ×2

filesystems ×2

null ×2

drivers ×1

input ×1

io ×1

kernel ×1

linux-kernel ×1

osx ×1

serial-port ×1

terminal ×1

v4l ×1

video ×1

vlc ×1