首页 > 代码库 > 操作系统的自我修养-04 从U盘启动MerxOs操作系统

操作系统的自我修养-04 从U盘启动MerxOs操作系统

转载注意出处:K_Linux_Man


我们一直都是使用bochs模拟器来启动我们的MerxOs操作系统,模拟真的不好玩,我们今天就让我们的”MerxOs:Hello,World“ 运行在真机上。现代化的今天,

U盘早已经替代软盘,所以我们以U盘为例,讲述如何让我们的MerxOS操作系统从U盘加载。


U盘的第一扇区


U盘的第一个扇区由三部分组成:

第 1 部分(0x0000~0x01BD)446 个字节为MBR,MBR(Master Boot Record)主引导扇区,我们的MerxOs:hello,world程序就要放在0-446个字节内。
第 2 部分(0x01BE~0x01FD)64 个字节为U盘的分区表(Disk Partition Table, DPT),每 16 个字节描述一个主分区,所以一个硬盘最多可以有 4 个主分区
分区表的每一分区的第 1 个字节是活动标志,其值为80H时,表示该分区是当前活动分区,可引导,其值为00H时,表示该分区不可引导。
第 3 部分(0x01FE~0x01FF)2 个字节“55 AA”是分区有效结束标志


强大的二进制编辑器:WinHex


我使用的是winhex15.8 ,从网上找了好久,才找到一个可以破解使用的。我会上传了这个WinHex程序。




选择我的联想U盘




从图中可是看出,0x00-0x1BD 为第一部分,0x80开始的部分为第二部分,64字节的分区表,如果我们破坏这一部分的话,我们的U盘将在XP系统下无法识别。

最后以55AA结尾标示。


利用WinHex打开我们前一节Hello,World的boot.img文件,并copy 0x00~0x1BD前446个字节的内容,替换掉U盘的前446字节的内容,并修改最后两个字节为0x55,0xAA





打开boot.img之后,我们先要选择0x00-0x1bd的内容,再进行copy。



右键 EDIT


















同样的方法先选择U盘的0x00-0x1BD内容,选择完毕之后,我们接下来要将刚才从boot.img拷贝的内容写到U盘上,注意在进行写操作的时候,先选中第一个字节,再Edit,再wirte,这时候会提示从偏移为0开始。我们也正是要从0x00开始到0x1BD进行写操作。



写完之后记得修改55,AA



保存u盘文件即可。这个软件在关闭u盘的时候提示出错,没关系,我们已经将u盘的内容进行了修改。直接连续点确认即可(破解的软件就是这样,知足吧)。



另外一种更简单的方法


在linux系统下,u盘设备被看成一个文件,所以我们可以对这个文件进行操作。我使用的是Ubuntu,使用命令就可以实现同样的方法。

sudo dd if=boot.img of=/dev/sdb bs=446 count=1

为什么是446这个我就不需要解释了吧, 本文中已经提到。如果写成512,那就悲催了。你的u盘将在xp系统下不能识别。因为破坏了分区表格式。

因为我们的环境是在xp下,所以我这里就不多解释Ubuntu的命令操作了。

激动一刻-真机测试

选择从U盘启动,之后就是MerxOS了.


选择从usb  lenovo上启动