没有 lsblk 的统计磁盘驱动器?

The*_*tor 18 partition busybox disk

我最近尝试使用一个极简的busybox 系统,但我发现了一个小问题:它没有lsblk命令。是否有另一个命令可以列出磁盘、分区和大小,例如lsblk

一些也不起作用:

  • lsblk
  • lsusb
  • fdisk -l
  • cfdisk

Ram*_*esh 17

通过busybox的wiki页面,我看到它支持df查找磁盘使用情况的命令。

你可以试试下面的命令。

df -h - 显示已挂载文件系统上的可用空间。

在busybox的手册页中,他们提供了如何使用该df命令的示例。

但是,正如@nwildner 指出的那样,df 将显示已安装文件系统上的存储,而不是与分区相关的方案。要找到它,您可以检查以下文件。

cat /proc/partitions
Run Code Online (Sandbox Code Playgroud)

正如您所提到fdisk -l的,上述文件可能不工作,其中可能包含分区信息。

测试

fdisk -l 在我的系统中产生以下输出。

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        9726    78019672+  8e  Linux LVM
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用 cat ,我可以获得分区信息/proc/partitions。输出是,

major minor  #blocks  name

   8     0   78125000 sda
   8     1     104391 sda1
   8     2   78019672 sda2
 253     0   78019156 dm-0
 253     1   72581120 dm-1
 253     2    5406720 dm-2
Run Code Online (Sandbox Code Playgroud)

主编号是 8,表示它是一个磁盘设备。次要的是您在同一设备上的分区。0 是整个磁盘,1 是主磁盘,2 是扩展磁盘,5 是逻辑分区。其余的当然是块大小和磁盘/分区的名称。

不确定是否是明智的建议,但您是否尝试sudo fdisk -l查看它是否有效?

编辑#1

您也可以运行$ df -T. 这是另一个不需要超级用户权限即可执行的命令。但是,这将为每个挂载点报告。

另一个可以派上用场的命令是# file -sL /dev/sdXY. 这有一个缺点,它不适用于完整的块设备。需要传递确切的设备。虽然输出非常整洁:

参考

如何确定未挂载设备的文件系统?

  • 但是 `df` 将显示已挂载文件系统上的存储使用情况,而不是与分区相关的方案。 (2认同)
  • 不,`df -T` 似乎也不起作用。它只说我可以使用选项 -p, -k, -m, -h (2认同)

Nav*_*vin 7

看起来其他回答者实际上并没有在 BusyBox 上进行测试。以下是在我的 initramfs 中对 BusyBox 起作用的唯一命令:

  • cat /proc/partitions 以块 (KiB) 为单位显示磁盘和分区大小

  • blkid 显示分区标签、UUID 和类型(EXT4、NTFS 等)