欢迎来到电脑知识学习网,专业的电脑知识大全学习平台!

手机版

修改系统启动引导文件-(系统修改启动项)

操作系统 发布时间:2022-12-08 05:46:43
修改系统启动引导文件 (系统修改启动项)

主引导(MBR)程序

建立 mbr.S 主引导汇编程序:

引导成功后将会输出:My MBR

;主引导程序 SECTION MBR vstart=0x7c00 ;程序开始的地址 mov ax,cs ;使用cs初始化其他的寄存器 mov ds,ax ;因为是通过jmp 0:0x7c00到的MBR开始地址 mov es,ax ;所以此时的cs为0,也就是用0初始化其他寄存器 mov ss,ax ;此类的寄存器不同通过立即数赋值,采用ax中转 mov fs,ax mov sp,0x7c00 ;初始化栈指针 ;清屏利用0x10中断的0x6号功能 mov ax,0x600 mov bx,0x700 mov cx,0 mov dx,0x184f int 0x10 ;获取光标位置 mov ah,3 ;3号子功能获取光标位置 mov bh,1 ;bh寄存器存储带获取光标位置的页号,从0开始,此处填1可以看成将光标移动到最开始 int 0x10 ;打印字符串 mov ax,message mov bp,ax mov cx,6 ;字符串长度,不包括'\0' mov ax,0x1301 mov bx,0x2 int 0x10 jmp $ message db "My MBR" times 510-($-$$) db 0 db 0x55,0xaa将mbr.S 主引导汇编程序放到bochs的主目录下,通过NASM编译汇编代码,前面已经介绍过nasm和bochs的安装。

编译执行: nasm -o mbr.bin mbr.S

进入bochs目录,执行bximge

输入1 回车, 去建立硬盘镜像

电脑

根据提示进行输入,硬盘的镜像文件名为:hd60M.img,如上图

在bochs的主目录下, 修改bochsrc文件

修改为:ata0-master: type=disk, path="hd60M.img", mode=flat

启动项为 disk, 如下图

下一步是把这个512字节的文件写入0盘0道0扇区

执行:

dd if=mbr.bin of=/usr/local/bin/hd60M.img bs=512 count=1 conv=notrunc

模拟硬盘启动

1.执行 bochs -f bochsrc 弹出Bochs x86-64 emulator窗口,但是窗口一片黑

电脑

2.切换回终端界面,可以看到已经选择了[6] 开始模拟,输入c 回车

弹出如下界面:

bachs x86-64模拟器 输出My MBR

说明已成功从我们自己制作的硬盘镜像完成主引导启动。


可能的启动失败错误:Message: No bootable device。 如下图

选择Continue继续出现下图 Boot failed: not a bootable disk

电脑

说明mbr.S主引导程序有问题。可以查看编译后的二进制文件mbr.bin的尺寸大小

如果超过512字节, 说明mbr.S源文件有问题,我的开始是mbr.S源文件中指令参数之间有多余的空格,删除后重新编译 nasm -o mbr.bin mbr.S

编译后查看mbr.bin文件大小,为512字节

重新执行dd命令后,就正常了。

dd if=mbr.bin of=/usr/local/bin/hd60M.img bs=512 count=1 conv=notrunc

责任编辑:电脑知识学习网

操作系统