首页
社区
课程
招聘
[原创]《一个64位操作系统的设计与实现》中的一个小坑
发表于: 2019-3-16 18:31 10104

[原创]《一个64位操作系统的设计与实现》中的一个小坑

2019-3-16 18:31
10104

最近在看《一个64位操作系统的设计与实现》,书上从第七章开始需要先将U盘格式化为USB-FDD,然后在真机上软盘启动U盘里的系统,作者玩得不亦乐乎,然而作为学习的读者,这很不方便,而且,书中的系统竟然是格式化U盘为FDD并以软盘启动,但VMWARE并不支持软盘启动,现在找到了一个办法,格式化U盘为HDD并可以在VMWARE上硬盘启动U盘里的系统,只需要稍加操作即可。

附件为boot.asm和loader.asm中的代码。


按照以下步骤进行:

1、 首先用DiskGenius清空数据并格式化为HDD




2.格式化后U盘内会有很多来自DiskGenius的引导数据,这些数据可以删也可以不删,最好是删掉。


3.书本的7-1代码示例中的boot.asm修改两个部分

第一个部分是引导扇区的标志信息以及3个变量的数值,需要结合DiskGenius在“分区参数”中提供的信息来修改这些数值:


第二个部分是在函数Func_ReadOneSector中,int 13h的dl寄存器是驱动器号,由于书中是格式化为软盘,所以驱动器号为0也无所谓,但格式化为硬盘后,驱动器号是由DiskGenius决定的。

将mov dl,0改为mov dl,[BS_DrvNum]



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 2
支持
分享
最新回复 (7)
雪    币: 199
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
楼主你好,应该是:
选择”硬盘”->”下一步”->”SCSI”->”下一步”->”使用物理磁盘”。
2019-5-25 13:32
0
雪    币: 4094
活跃值: (4205)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
wantstudio 楼主你好,应该是: 选择”硬盘”->”下一步”->”SCSI”->”下一步”->”使用物理磁盘”。
老哥...666...本来我发的这个都打算删了
2019-6-5 17:20
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
您好,我正在学这本书,有个问题想问一下您,我在物理平台上无法从loader.bin跳转到kernel.bin上,就是loader.bin最后一句jmp刷新流水线后就重启了,想问一下您有没有遇到这种情况,在物理平台上没法调试,我也不知道怎么改......
2020-5-14 23:07
0
雪    币: 4094
活跃值: (4205)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
5
wx_卢喵猫 您好,我正在学这本书,有个问题想问一下您,我在物理平台上无法从loader.bin跳转到kernel.bin上,就是loader.bin最后一句jmp刷新流水线后就重启了,想问一下您有没有遇到这种情况 ...
加QQ群144571173问作者吧,我有段时间没玩了
2020-5-15 10:16
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
昵称好麻烦 加QQ群144571173问作者吧,我有段时间没玩了
好的
2020-5-15 11:48
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
wx_卢喵猫 好的
你好,有几个问题想请教下!,有联系方式吗!
2022-1-3 16:12
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
wx_卢喵猫 您好,我正在学这本书,有个问题想问一下您,我在物理平台上无法从loader.bin跳转到kernel.bin上,就是loader.bin最后一句jmp刷新流水线后就重启了,想问一下您有没有遇到这种情况 ...
您好,我也遇到了一样的问题,请问您是怎么解决这个问题的?
2022-6-15 15:46
0
游客
登录 | 注册 方可回帖
返回
//