如何查找系统中哪个部分仍引用某个设备

如何查找系统中哪个部分仍引用某个设备

请考虑以下最近一次apt-get dist-upgrade运行的摘录:

Processing triggers for linux-image-5.4.0-59-generic (5.4.0-59.65) ...
/etc/kernel/postinst.d/dkms:
 * dkms: running auto installation service for kernel 5.4.0-59-generic
   ...done.
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.4.0-59-generic
/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.4.0-59-generic
Found initrd image: /boot/initrd.img-5.4.0-59-generic
Found linux image: /boot/vmlinuz-5.4.0-58-generic
Found initrd image: /boot/initrd.img-5.4.0-58-generic
Found linux image: /boot/vmlinuz-5.4.0-56-generic
Found initrd image: /boot/initrd.img-5.4.0-56-generic
  /dev/sdg: open failed: No medium found
  /dev/sdg: open failed: No medium found
Found Windows Boot Manager on /dev/nvme1n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings
done

您会注意到有两行内容/dev/sdg: open failed: No medium found

我偶尔会将该驱动器连接到系统,但通常不会。这是一个 SSD,我将其保持完全可启动状态,以用作备用系统。

奇怪的是,这个设备在包升级期间不断弹出,而且我不知道在没有该设备的情况下从哪里检索该信息。

休闲装:

grep -aRi '/dev/sdg' /boot /etc

什么也没得到。同样,查看efibootmgr -v输出,我可以看到上述消息中提到的磁盘的相应 EFI 条目/dev/sdg仅引用了分区的编号和 UUID。所以我很困惑它/dev/sdg从哪里获取的。

问题:那么这些信息存储在哪里?

编辑:忘记了:已应用最新补丁的 Ubuntu 20.04。


迄今为止的发现:

  • 脚本 /dev/sdg生成了对的引用os-prober
    • 调用的步骤lvs是原因...
      确切的调用是lvs --noheadings --separator : -o vg_name,lv_name
  • 其他与 LVM 相关的命令给出相同的输出
    • 使用--verbose和/或--debugLVM 工具不会改变任何东西,它不会提供更多见解
  • 中有几个文件/etc/lvm/archive,但它们引用了已删除的逻辑卷...我删除了它们(但如果需要,可以通过 进行备份etckeeper
  • 输出发生在 stderr

答案1

我找到了答案。我基本上是在追寻一个幽灵问题。TL;DR:读卡器硬件导致了这个问题。

虽然在某个时候我确实有一个可用的设备sdg,因此可以合理地假设在某些配置中存在一些残余,但原因却是别的。

除了问题中详述的观察结果之外,lsblkblkid类似工具根本没有显示sdg任何内容。与 LVM 相关的工具仅给出了上述错误输出。

事实证明,我的机器做过有一个/dev/sdg由内核创建的。就在那时我意识到必须有某物这会导致内核创建该设备节点。可惜的是,inxi -F什么也没显示。不过,lshw还是能揭开一些谜团。以下是相应的输出(摘录):

 *-scsi:6
      physical id: 2d
      logical name: scsi8
      capabilities: emulated scsi-host
      configuration: driver=usb-storage
    *-disk
         description: SCSI Disk
         product: SD/MMC CRW
         vendor: Generic-
         physical id: 0.0.0
         bus info: scsi@8:0.0.0
         logical name: /dev/sdg
         version: 1.00
         serial: 2012062914345300
         capabilities: removable
         configuration: ansiversion=6 logicalsectorsize=512 sectorsize=512
       *-medium
            physical id: 0
            logical name: /dev/sdg

一直是读卡器硬件的问题。显示错误是因为当时os-prober读卡器里没有卡lvs...

我从中得到的主要教训是不要相信诸如lsblkblkid或甚至之类的工具inxi,并且总是寻找实际的设备节点或使用其他工具来查询信息。

相关内容