![如何创建可启动的 USB 盘来刷新 BIOS](https://linux22.com/image/810044/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E5%8F%AF%E5%90%AF%E5%8A%A8%E7%9A%84%20USB%20%E7%9B%98%E6%9D%A5%E5%88%B7%E6%96%B0%20BIOS.png)
我想使用iflash2.exe
英特尔提供的名为 的程序升级英特尔主板上的 BIOS,该程序只能在 MS-DOS 上运行。
我没有 Windows 操作系统,我正在尝试创建一个包含 MS-DOS、iflash2.exe
和相关文件的可启动 USB 记忆棒。
我尝试了一个名为 UNetbootin 的程序,它使用 FreeDOS 创建了一个可启动的 USB,但我不知道如何以及在哪里添加iflash2.exe
相关文件。
你能告诉我怎样做吗?
答案1
我使用以下技术刷新了 HP N54L ProLiant MicroServer 上的 BIOS。我认为它也适用于其他系统,只需在从 USB 启动后运行 MS-DOS 命令即可。
如果出现问题,我不承担任何责任。如果您不理解这些说明的作用,那么您可能不应该尝试。
以下假设您有一组文件或一个存档文件,其中包含新 ROM 以及应用它的脚本或可执行文件。BIOS 可能附带一个可执行文件,用于从头开始创建 USB;如果您已经走到这一步,您可能已经尝试运行它但失败了。您需要找到的是 ROM 文件和脚本或可执行文件。在我的情况下,调用了 ROM 文件,O41072911.ROM
调用了脚本FLASH.BAT
。
创建可启动的 USB 记忆棒
首先,你需要一个以最基本的方式格式化的 USB 盘。这将删除 USB 盘上的所有数据,因此请先备份所有重要数据!
插入你的 USB 记忆棒。
选择格式...启动器菜单中的选项:
选择兼容所有系统 (FAT)作为类型,为其指定一个合理的名称,然后单击格式:
然后您需要使用 UNetbootin 让 USB 启动到 DOS 提示符:
- 使用软件中心或从命令行安装 UNetbootin
sudo apt-get install unetbootin
。 运行 UNetbootin。选择自由DOS作为分布并确保类型为USB驱动器并选择正确的驱动器。然后单击好的:
当 UNetbootin 完成后,点击出口。
现在您有一个可以启动 DOS 的 USB 记忆棒。
添加您的 BIOS 文件
现在您需要将 BIOS 文件放入 USB 记忆棒中。一般来说,您只需将文件复制并粘贴到卷上即可。
如果它们是自解压.exe
文件,则需要运行它才能提取文件。为此,您需要:
使用软件中心或从命令行安装 Wine
sudo apt-get install wine
。找到
.exe
包含 BIOS 文件的文件,右键单击它并使用 Wine 运行:接下来发生的具体细节取决于您的 BIOS 文件,但请将文件提取到您可以记住的目录中。
提取文件后,将其复制到 USB 记忆棒上。它们可以放在卷的根目录中。
查看文件;可能有一个文件包含新 ROM 本身,以及用于应用它的文件。如果有文件.bat
,请查看它并记下它运行了什么命令来更新 ROM。.exe
AUTOEXEC.BAT
闪光
现在您已准备好刷新 BIOS。
从创建 USB 存储设备的计算机上弹出 USB 存储设备。
将其插入您想要刷新的计算机并重新启动。
从 USB 启动。您可能需要在 BIOS 中调整启动顺序才能实现此目的。
你应该看到蓝色的 FreeDOS 引导加载程序出现默认突出显示。请等待 10 秒钟或按Enter。
在 FreeDOS 菜单上,选择第二个选项FreeDOS 安全模式(不加载任何驱动程序):
您将看到
A:/>
提示符。输入C:
然后Enter切换到 C 盘。输入
dir
后Enter你就会看到你复制到 USB 记忆棒上的所有文件。运行您之前确定的脚本或可执行文件以应用 BIOS 更新。就我而言,我只需键入
FLASH
即可Enter运行该FLASH.BAT
文件。您应该会看到刷新脚本正在应用您的 BIOS 更新。不要关闭电源或中断此过程;请等待,直到它完成。它应该会返回到提示符
C:\>
。然后,您可以移除 USB 记忆棒并关闭计算机电源。
祈祷能使用新 BIOS 启动。或者,如果您的计算机坏了,那就哭吧。
答案2
我花了一上午的时间,想办法刷新 Zotac 主板上的 BIOS。Unetbootin 创建了可以启动的 MS-DOS 映像,但它们无法在我的 USB 拇指驱动器上找到刷新文件(在我的情况下是 awdflash 和 N0422_ZA.bin)。
最终奏效的是创建一个终极启动 CD 并从该 CD 启动 FREEDOS(不是 MS-DOS)。然后是装有我闪存文件的 USB 拇指驱动器曾是可见,并且 BIOS 更新工作正常。
答案3
您应该做的第一件事是检查您的闪存驱动器上是否有分区表。(即/dev/sdX1
,不在/dev/sdX
您的输出中mount
)
这实际上是一件大事,因为有些平台需要这个,而有些平台则不需要……以至于我曾经遇到过一个脚本来创建一个“通用 UDF 格式的 USB 棒”,它必须做一些技巧才能使该棒同时保持原始状态和分区状态,因为 Windows UDF 驱动程序想要一种方式,而 macOS UDF 驱动程序想要另一种方式。
我有一台旧的瘦客户端,我将一个更大的模块磁盘插入其中,并将其重新用作复古电脑,有时需要恢复驱动器映像,当我弄乱了东西时,它确实显示了 BIOS 对此的特殊性。
它并不关心是从基于 PXELINUX 的“用于基于 BIOS 的 PC 的 Apple Internet Restore”网络启动菜单中启动 UNetbootin 提供的 FreeDOS 还是其中一个磁盘映像(例如“PowerQuest Drive Image 2.0 启动盘”)。BIOS 的 USB 存储设备支持并不关心所暴露的 USB 设备是否是启动映像的来源。如果它能正常工作,那就没什么区别了。
DOS 引导环境做注意 USB 驱动器是否使用其可以理解的文件系统进行格式化(例如,除非启动盘理解 FAT32 的-F16
选项mkfs.vfat
),并且它确实要求 USB 驱动器上有一个 MS-DOS(而不是 GPT)分区表。(我可以确认 UNetbootin 安装的 FreeDOS 也会遇到这个问题,我认为这是一个通用的“如果它不是软盘,则需要分区表”规则。)
如果这两者都不满足,那么 USB 设备的内容将不会出现在D:
。
我不知道 GNOME 的 libparted 前端是什么样子的,但是在 Kubuntu 上,最简单的解决方案是启动“KDE 分区管理器”,选择闪存驱动器,选择“设备 > 新建分区表”,选择 MS-DOS 并单击确定,然后右键单击该unallocated
空间,选择“新建”,将“文件系统”设置为fat16
,单击确定,然后单击“应用所有待处理操作”复选标记。
这应该可以消除按照其他答案创建可启动 USB 棒的最大变量,其中启动映像可以看到该棒的内容。
(我可以确认,当 UNetbootin 安装 FreeDOS 时,它会默默接受缺少分区表的情况,相信你知道自己在做什么。)
如果您的 BIOS 由于某种原因需要另一种方式,那么擦除分区表并直接格式化设备的最简单解决方案可能是这样的,/dev/sdX
您在输出中看到的设备节点在哪里mount
:
sudo sh -c 'umount /dev/sdX && mkfs.vfat -F16 -I /dev/sdX && eject /dev/sdX'