如何为嵌套分区创建设备驱动程序?

如何为嵌套分区创建设备驱动程序?

我正在运行虚拟化的 MSWindows,使用 /dev/sda2 作为其主驱动器。因此,该分区上有一个分区表,如下所示:

# fdisk -l /dev/sda2

Disk /dev/sda2: 137.4 GB, 137436203520 bytes
255 heads, 63 sectors/track, 16709 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

     Device Boot      Start         End      Blocks   Id  System
/dev/sda2p1   *           1       16708   134206978+   7  HPFS/NTFS

我的问题很简单:创建 /dev/sda2p1 的主要/次要编号是多少? sda2p2 和 sda3p1 怎么样?

答案1

假设这是一个直接的磁盘映像(例如,你的虚拟化解决方案没有向其中添加一些额外的元数据),这个文件(还这里) 为访问 /dev/sda2 上的分区提供了一些建议(摘要:使用该-o offset选项losetup创建一个引用适当偏移量到 sda2 的新块设备)。

您还可以使用网络块设备 (NBD) 从 /dev/sda2 创建分区块设备,请参阅这篇 LWN 文章详细描述了这个过程。嘿,我刚刚学到了一些新东西。

答案2

您在这里可能想要的是 kpartx。

https://nfolamp.wordpress.com/2010/08/16/mounting-raw-image-files-and-kpartx/

Kpartx 获取原始磁盘映像并在根文件系统中为磁盘映像中找到的每个分区(即在其分区表中)生成设备。

答案3

您还可以使用losetup -P--partscan)来访问分区,而/dev/loopXpY无需手动传递-o偏移量(不确定这是否可行2009 年):

# losetup -Pf --show /dev/sda2
/dev/loop0
$ ls /dev/loop0p*
/dev/loop0p1

相关内容