我有一项任务是借助设备映射器内核模块在真实设备下制作虚拟设备。虚拟设备必须将任何请求转移到真实设备,因此两个设备必须相同。
在未来我应该能够控制请求,因此我使用此article编写了代表设备映射器目标的内核模块。
制作模块并插入后(insmod命令)我设置了我的设备(dmsetup create)。然后执行mount,可以通过刚创建的虚拟设备使用真实设备。
但问题是如何在启动时重复上述说明?我想将我的虚拟设备用作普通设备(通过更改fstab,我猜)。
提前致谢!
答案 0 :(得分:0)
如果要将设备用作根文件系统,则需要创建一个设置它的initramfs。基本上是一个shell脚本,它发出dmsetup
个命令,然后是mount
,最后是pivot_root
到新文件系统。
There was a discussion on the dm-devel mailing list last year关于如何在没有initramfs的Linux内核中执行此操作,方法是在内核命令行上指定映射器行。这是他们Chrome OS的方式,因为他们不能/不会使用initramfs。见here for documentation of this feature。该功能从未合并过。
The patch series was updated and resubmitted in May 2017。希望我们最终会看到它以某种形式合并。
如果您不打算将设备用作根文件系统,您仍可以使用相同的方法,但可能有更简单的方法。