问题标签 [blkid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
186 浏览

regex - Bash 无法将来自 blkid 的信息存储到变量中

我正在尝试将解析字符串的输出存储到一个变量中。当我像这样运行命令时,我会在终端输出上得到正确的输出:

但是,当我尝试将其存储在这样的变量中时:

它只显示空白。有谁知道我在这里做错了什么?

这是完整的 blkid 输出:

0 投票
1 回答
466 浏览

debian - 重启后无法挂载/mnt/x

重新启动服务器后,我通过 nagios 看到我的 /mnt/gimli 只能在只读模式下访问。但我需要它是可写的,因为有些备份在那里。

要进入 rw 模式,我尝试卸载并重新安装 /mnt/gimli,但出现错误:“mount: can't find UUID=f1953589-1c80-466b-91ad-6cfed92a4c38”

当我执行 df -hT 时,我可以看到它不再安装,但我无法重新安装它。

我真的不知道该尝试什么,因为它是服务器的重要组成部分,我不想把它搞砸。

这是 blkid 的输出

和 cat /etc/fstab 的输出:

所以,我希望能够按原样重新安装 /mnt/gimli,并且还想知道为什么它是唯一一个在我的 fstab 上显示为 UUID 而不是 /dev/xxx

有人知道我该怎么做吗?

0 投票
0 回答
240 浏览

c++ - 如何解码 USB 设备标签

我正在尝试从 udev 库中获取 USB 设备标签。但是当标签不是 UTF8 编码时,我遇到了问题。

USB 设备之前已在 Windows 上格式化并具有 FAT32 文件系统。USB 名称是“РФПАЦУ”(我使用 Cyrillic 进行测试(CP866 代码页))。要获取 USB 设备属性,我运行以下命令:

sudo /sbin/blkid -o udev -p /dev/sdd1

答案如下:

根据https://bbs.archlinux.org/viewtopic.php?id=197582

ID_FS_LABEL contains plain ascii, with hex-escaped and any valid utf8 characters but all whitespaces are replaced with '_' , while in ID_FS_LABEL_ENC all potentially unsafe characters are replaced by the corresponding hex value prefixed by '\x'.

我不能只取消十六进制 ID_FS_LABEL_ENC,因为要读取的字节数是未知的。

有没有办法找出 ID_FS_LABEL_ENC 的编码?或者一种获取 USB 设备正确标签的方法?

0 投票
1 回答
134 浏览

c - libblkid 仅适用于 root 并且在以 root 身份运行后

这是我见过的最奇怪的事情(实际上,它有一个很好的解释)。

我创建了一个 C 代码来列出分区及其自己的类型:

当我以普通用户身份运行时,它不显示任何设备/分区和类型。所以,我尝试以 root 身份运行,我终于看到了设备、分区和类型。当我返回用户时,如果我再次运行,我可以看到与 root 相同的输出。看顺序:

有谁知道发生了什么?

0 投票
0 回答
208 浏览

c++ - 码头集装箱上的 blkid

我正在开发一个遗留 C++ 项目,该项目使用 blkid/blkid.h 中的函数来访问本地硬盘上的文件。

由于该项目相当大且难以编译/运行,我认为在容器中运行它是一个好主意。创建 dockerfile 来创建图像很顺利,问题是在容器中实际运行遗留项目时开始的。

尝试使用“ blkid_devno_to_devname ”访问磁盘上的文件以获取要写入的设备 ID 时出现错误。

这是一个重现我的问题的示例程序

在我机器上的常规文件上,device_path 不为 null,但在 docker 上运行它总是返回 null。

我不清楚的是 docker 容器如何看到它写入的磁盘。

为了深入研究,我查看了 stat ( https://en.wikibooks.org/wiki/C_Programming/POSIX_Reference/sys/stat.h ) 附带的不同宏,我将它们打印在具有不同类型文件的容器上的文件上(符号链接、文件、目录)。

我修改了上面的小程序来添加这个:

我认为根据 docker 写入的图层类型会有所不同,但我没有看到任何内容。

无论是在卷上、挂载上,还是在容器层上(我的意思是既不是卷上也不是挂载上的文件)。

在安装时,我预计设备 ID 是正确的,因为据我了解,安装是让容器访问物理驱动器(至少在我的情况下 - 通常可能不是真的)。

那么为什么 blkid_devno_to_devname 没有在 docker 容器上返回任何内容呢?我没有正确理解什么?

PS 作为记录, blkid 或 /etc/fstab 也不会在容器上返回任何内容。

关于我的系统的读者注意事项:

  • 在安装了 ubuntu 18 的 Windows(Oracle VM)上的 VM 上工作。
  • 码头工人版本:19.03.6
  • 驱动程序:overlay2
0 投票
1 回答
71 浏览

linux - Yocto - 如何将 blkid.h 文件添加到 rootfs

我想将我自己的包含 blkid.h 文件的应用程序添加到一些 Yocto Linux 发行版中。在 .manifest 文件中,我找到了libblkid1库和util-linux-blkid包,但在 rootfs 中我没有这样的文件。我应该将哪个包或库添加到图像中以获取 blkid.h 文件?

预先感谢您的任何帮助。

0 投票
1 回答
105 浏览

linux - 如何通过传入磁盘大小仅获取 UUID?

我正在尝试使用以下命令自动使用 ansible 挂载磁盘:

fdisk -l | grep "64G" | grep -Eo "/dev/sd."

这输出/dev/sda1,我将其添加到/etc/fstab/. 但我想添加 UUID。

有没有一种通过传递磁盘大小来获取 UUID 的方法?(我只有 1 个 64G 大小的磁盘,所以它只返回一个输出,想知道如何获取 UUID 而不是/dev/sda