作为一名技术宅,redsPL与国内的技术宅们一样,日常都少不了要为朋友们义务修电脑的事儿。最近,他接手了一位朋友要为好几台ThinkPad刷新、重写BIOS的Flash芯片的任务。随着刷写任务的进行,他逐渐地萌生了一个想法:既然现在计算机中用来存储BIOS的Flash越来越大,有没有可能将一个完整的操作系统装进去呢?
说到这里,我们就有必要回顾一下BIOS这个东西了。正如其名“Basic Input/Output System 基本输入输出系统”所代表的意思一样,它负责和硬件打交道,对上,为更上层的操作系统等提供基本调用硬件的接口;对下则负责直接读写硬件并操作它们。另一方面,它还负责在计算机上电时对硬件进行自检(POST 上电自检)并在检查完成后搜索可用的操作系统,将操作权限交给操作系统。这也是为什么一旦BIOS被破坏之后,计算机就不能启动了的原因。对计算机硬件的一些操作和配置也是在BIOS中完成的。而配置信息则保存在主板上的CMOS芯片中。现在,不少新电脑已使用UEFI(统一可扩展固件接口)替换掉了BIOS的位置,但其提供的基本功能变化不大。
一开始,BIOS存储在不可改写的ROM中,如果ROM是被焊死在主板上的话,连更新都变得非常困难。而EPROM和EEPROM为BIOS程序的更新和升级提供了新的方式。之后,Flash芯片的诞生使得BIOS的更新变得更加方便。老网民们大概还记得在纯DOS下小心翼翼地更新BIOS的情景,而现在,更新BIOS的操作就像是更新其他软件一样简单而轻松。Flash的容量也越来越大,UEFI界面更是图形化了,设定参数变得非常简单。而这也为今天的改装带来了方便。
edsPL为计算机刷入的是一款开源的x86计算机BIOS:SeaBIOS。其占用空间为1MB左右,这就使得实验对象的ThinkPad x200的BIOS中还剩下7MB左右的空闲空间。而SeaBIOS提供的另一个功能就是模拟一个虚拟软驱并将Flash中的部分空间映射过去。软盘的最大容量为2.88MB,因此如果能够将操作系统简化至2.88MB以内的话,就有可能在BIOS中启动操作系统。
因此,redsPL选定了Windows 3.1并将其适度剪裁,在其中,既保留了记事本、计算器、画图等原生应用,又加入了LifeGenesis、一些小游戏和VB3.0的完整程序。其中,部分非关键的程序采用ZIP的方式压缩,并在系统启动后解压到内存盘中去。在没有打包的时候,所有数据的大小约为7MB,而压缩后,数据能够存入一张2.88MB的软盘镜像中。系统内置了SVGA显示驱动和音频驱动,能够使系统正常显示和发出声音。
俗话说麻雀虽小五脏俱全,从一个简单的项目扩展至庞大规模的项目并不难,但要想从复杂的项目开始剥丝抽茧,获得一个精炼的,具有完整功能的项目就变得更加复杂了,这个项目是这样的精妙以至于展现出了独特的美感。
联系客服