我想要做的就是开始,例如来自运行Linux系统的硬盘的第二个分区的Windows,没有重启。 基本上,我们的想法是将Windows分区的引导扇区加载到内存中,然后启动它。
显而易见的问题是我为什么要这样做。我的想法是有一个小的linux分区,我的PC在每次重置时启动进入,在这个Linux分区中,我将运行一个简单的服务器,我可以从网络控制。然后,此服务器可以对来自网络的命令执行操作,例如“将Windows映像还原到分区”,“备份分区”或“启动/切换到分区”。
可以做到的一种方法是实现这样的服务器,例如在Grub本身,但这听起来有点过分,例如我的备份例程可能需要一个非常复杂的逻辑等...
所以这个程序的基本轮廓看起来像这样。
// read first three sectors of the Volume Boot Record
p = malloc(512*3);
fd = fopen("/dev/sda1", "rb");
fread(p, 512*3, 1, fd);
// And then jump to the first instruction to execute it
jmp(p);
如果有人做过类似的事情,我会很感激如何做到这一点!