08-04-2021, 03:35 AM
Ventoy启动时是把ISO文件虚拟一个CDROM启动。 但是这样的话,内核起来之后按照常规的方法是找不到启动介质的。
因为常规的方式一定是去找光驱、硬盘等硬件设备。而通过Ventoy启动的介质并不是一个硬件设备,而是某个硬盘下的一个ISO文件。但是系统里面的启动程序并不知道这个情况。
所以一定会找不到,就会报错,找不到安装源,走不下去了。
为了解决这个问题,Ventoy会在启动的时候往ISO文件里面的 initrd 中注入一些脚本,这些脚本在启动的时候会执行到,会修改原始的启动程序,让它能顺利的找到安装介质,不至于报错。当然这个注入是在内存中实现的,并不会真正修改ISO文件。也就是进入系统之后,ISO文件还是原始的。但是在ISO文件的启动菜单阶段(grub阶段)看来这个ISO文件和原始的是不一样的。
99.99%的系统,在grub阶段是不校验ISO文件的数据的,你这个是例外,它在grub阶段就会校验数据,这个校验是通不过的。所以需要在进入到ISO内的grub菜单时,设置关闭校验。
通过grub2 mode启动,实际上是直接使用Ventoy里面的grub2直接启动ISO内的系统,自然不会校验。
因为常规的方式一定是去找光驱、硬盘等硬件设备。而通过Ventoy启动的介质并不是一个硬件设备,而是某个硬盘下的一个ISO文件。但是系统里面的启动程序并不知道这个情况。
所以一定会找不到,就会报错,找不到安装源,走不下去了。
为了解决这个问题,Ventoy会在启动的时候往ISO文件里面的 initrd 中注入一些脚本,这些脚本在启动的时候会执行到,会修改原始的启动程序,让它能顺利的找到安装介质,不至于报错。当然这个注入是在内存中实现的,并不会真正修改ISO文件。也就是进入系统之后,ISO文件还是原始的。但是在ISO文件的启动菜单阶段(grub阶段)看来这个ISO文件和原始的是不一样的。
99.99%的系统,在grub阶段是不校验ISO文件的数据的,你这个是例外,它在grub阶段就会校验数据,这个校验是通不过的。所以需要在进入到ISO内的grub菜单时,设置关闭校验。
通过grub2 mode启动,实际上是直接使用Ventoy里面的grub2直接启动ISO内的系统,自然不会校验。