───┬──┐ ├──┐┌┐─┴─╮ ┌┐ ╭─┌──┐
│ ┼ ╯─┬┐││───┐┌┐ │┌┐│ │ │
╰─┼─╯┼ │ ││││───╯│ │ │└┐├──│
│ ┼ │ ││││───┐│ │ │╭┘│ │
│ │ ├─┴╯││ ╭╯│ ┌│ │└─├──│
───┴──└ ╰──┘└╯└─╯ └╯╰┘╰┘└─┴──┴
logo↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓:
一.单独编译BOOTSECT.S,制作系统引导镜像
1.编译链接
跳转到boot文件夹下,利用as86和ld86命令编译和链接bootsect.s生成bootsect
2. 制作Image镜像
引导扇区必须要正好占用一个磁盘扇区(512byte),但是这里bootsect有544个字节
其中多余的32byte的是可执行文件头占用的…所以可以用命令去掉开头的32个字节制作Image镜像
打开bootsect查看多余的32byte可执行文件头
跳过bootsect前端的32字节制作Image
3.在虚拟机中启动boot
复制制作好的Image到linux-0.11目录下,返回oslab目录,执行./run可以看到虚拟机成功进入引导程序
二.修改build.c文件
1.当在linux-0.11目录执行makeBootImage的时候发现出现了Unable to open ‘system’
make: *** [BootImage] Error1的错误,这是因为此命令传送给build.c的第3个参数为none时,
build.c执行了die()函数
2.修改build.c
用vim打开build.c找到当main的第三个参数为none的处理代码,将调用die()的代码注释掉,:wq保存退出
3.再次执行make BootImage命令,成功
传不上图片。请谅解。。有时间补上