Legacy BIOS 访问范围限制

  • 背景介绍

某些主板上的BIOS,在Legacy模式下有访问范围的限制。比如,有些在Legacy BIOS模式下只能访问磁盘前面137GB的数据,超出这个范围就无法访问。
你可以网上搜索 "Legacy BIOS 137GB" 能搜到不少相关的文章。当然不同的主板这个限制值可能也不同。这是BIOS的固有缺陷,除非升级BIOS解决。
因此如果你把Ventoy安装在一个容量较大(比如 256GB)的U盘上时,启动时可能会有问题。

  • 典型现象

1. 只在Legacy BIOS模式出问题,UEFI OK
2. 同样的操作,使用小容量的U盘(比如32GB)就OK,大容量U盘(比如256GB)就有问题
3. 出问题时不显示Ventoy启动菜单,直接进入grub命令行

  • 为什么使用其他工具没问题(比如 Rufus)

当你使用其他工具(比如 Rufus)创建可启动U盘时,U盘会被重新格式化,ISO文件内的数据一般会按照从前到后的顺序写入U盘。 因此,正常写入的数据都不会超出BIOS的访问范围(比如 137GB),因此普通使用时一般不会出问题。
但是Ventoy启动相关的文件保存在第二个分区,而第二个分区位于U盘最后面,所以,Ventoy启动时一上来就要访问U盘最后面的位置,所以一上来就会出问题。

  • 规避方案1
  1. 重新手动格式化第1个分区 (NTFS/exFAT ...)
  2. 这是为了确保下面第2步中的文件保存在BIOS可访问范围之内

  3. 拷贝 ventoy.disk.img.xz 文件到第1个分区的 ventoy目录下
  4. ventoy.disk.img.xz文件位于Ventoy的安装包内(ventoy目录下)。把这个文件拷贝到第1个分区的ventoy目录下(需要手动创建此目录)。

  • 说明

规避方案1 的原理也很简单,就是如果第2个分区读不到就从第1个分区的上面这个文件中读取。
需要说明的是,这只是一个规避方案。一般情况下,U盘里的文件不多,文件都不会超出BIOS的访问范围,就不会出问题。
而一旦你在U盘中放了非常多的ISO文件,就有可能有些文件会超出BIOS的可访问范围。这些ISO文件在启动时一定会出问题,因为BIOS无法读取他们。

额外的好处
只针对Legacy模式来说,方案1 虽然是用来规避BIOS的缺陷的,不过也可以用来规避第二个分区的数据被破坏的情况。因为流程上都是访问Ventoy的相关文件失败时就转而从 上面提到的那个文件中获取。而访问失败有可能是BIOS的限制,也有可能是文件被破坏了。

  • 规避方案2

新版本Ventoy支持安装时在磁盘的后面保留一部分空间。可以利用这个功能,在安装时,保留一大部分空间,使得Ventoy的分区1和分区2不超过BIOS的访问限制范围即可。 比如,对于 256GB 的U盘,如果BIOS的最大访问范围为 137GB,在安装时保留 150GB空间,则Ventoy前2个分区就只会位于前面 106GB的范围,就不会触发BIOS的这个限制了。 关于保留空间的配置,请参考 说明