自己动手写一个操作系统——MBR(1)
文章目录
- 前言
- MBR
- 1) 512 字节镜像
- 2) 0x55 和 0xAA
- qemu 运行
- 参考
前言
上篇《自己动手写一个操作系统——我们能做什么,我们需要做什么》我们介绍到 BIOS 会遍历每个磁盘的第一个扇区查找 MBR,找到后便将 MBR 加载到内存并跳转过去。如果没找到,就会报错,无法启动。
MBR
接下来,我们就编写(制作)一个 MBR。
BIOS 识别 MBR 的唯一条件就是,第一个扇区的最后两个字节为 0x55 和 0xAA,而不管前 510 个字节是什么数据。就算前 510 个字节是错误的数据(指令),CPU 也照样取出指令去执行,大不了就是跑飞呗。
所以,我们制作一个简单的 MBR
- 1) 大小为 512 字节
- 2) 最后两个字节为 0x55 和 0xAA
- 3) 前 510 字节全为 0
1) 512 字节镜像
dd if=/dev/zero of=${OUTPUT}/mbr.img bs=512 count=1
2) 0x55 和 0xAA
最后两个字节修改为 0x55 和 0xAA
vim -b mbr.img
:%!xxd -g 1
# 最后两个字节修改为 55 AA
:%!xxd -r
:wq
qemu 运行
qemu-system-i386 -daemonize -m 128M -drive file=output/mbr.img,index=0,media=disk,format=raw
说明 BIOS 已经检测到了 MBR。
自己动手写一个操作系统——MBR(1)相关推荐
- 自己动手写一个操作系统——MBR(2)
前言 上篇文章<自己动手写一个操作系统--MBR(1)>,我们使用 dd 生成了一个 512 字节的镜像,并用 vim 将其最后两个字节修改成了 55 AA,以此来完成了 MBR 的构建. ...
- 自己动手写一个操作系统——MBR(4)_调试_elf_bin
文章目录 前言 elf 文件 指定代码入口地址 添加调试信息 代码 检验 调试 小结 前言 通过 GDB 我们可以跟踪程序的执行, 并且能够看到寄存器的状态, 但是,上面这种调试方式,没有和代码对应起 ...
- 自己动手写一个操作系统——loader(1)
前言 上篇文章中,我们写了一个简单的 loader 作为被加载的演示对象.我们知道 loader 是用来加载 kernel 的,今天我们就编写 loader 代码完成这件事情. 实模式下的内存地址 我 ...
- 自己动手写一个操作系统——我们能做什么,我们需要做什么
文章目录 计算机启动流程 第一条指令 BIOS MBR loader kernel 总结 计算机启动流程 第一条指令 在开机的一瞬间,也就是上电的一瞬间,CPU 的 CS:IP 寄存器被硬件强制初始化 ...
- 写一个操作系统有多难?自制 os 极简教程
不知道正在阅读本文的你,是否是因为想自己动手写一个操作系统.我觉得可能每个程序员都有个操作系统梦,或许是想亲自动手写出来一个,或许是想彻底吃透操作系统的知识.不论是为了满足程序员们自带的成就感,还是为 ...
- (1)从1开始写一个操作系统
第一章 前言 偶然间使用到了RTX51-tiny做一些东西,它是keil自带的51操作系统,以小巧占用资源少著称,这里不细谈它是如何实现的,反正是一个真正的基于时间片的多任务系统. 往往我们在使用单片 ...
- [从 0 开始写一个操作系统] 一、准备知识
从 0 开始写一个操作系统 作者:解琛 时间:2020 年 8 月 29 日 从 0 开始写一个操作系统 一.准备知识 1.1 实现方案 1.2 gcc 1.2.1 AT&T 汇编基本语法 1 ...
- java 手编线程池_死磕 java线程系列之自己动手写一个线程池
欢迎关注我的公众号"彤哥读源码",查看更多源码系列文章, 与彤哥一起畅游源码的海洋. (手机横屏看源码更方便) 问题 (1)自己动手写一个线程池需要考虑哪些因素? (2)自己动手写 ...
- 自己动手写一个印钞机 第四章
2019独角兽企业重金招聘Python工程师标准>>> 作者:阿布? 未经本人允许禁止转载 ipython notebook git版本 目录章节地址: 自己动手写一个印钞机 第一章 ...
最新文章
- android 投影仪,不要购买投影仪, 安卓手机投屏很简单, 每个手机都可以
- Java程序员从笨鸟到菜鸟之(四)java开发常用类(包装,数字处理集合等)(上)
- iOS开发(10)UISegmentedControl
- maven项目中找不到Maven Dependencies解决办法
- 边缘提取和场景分割 学派?
- python opencv 图像添加噪声_opencv+python同时加椒盐噪声和随机杂点噪声
- Spring Boot配置文件application.properties
- 最新升学e网通JS逆向分析
- hdu4504java
- 海贼王里面路飞的一些台词翻译
- Facebook十大失误回顾
- 代码审计| HDWiki 漏洞(一)
- 一篇13年前的采访|庚顿首席科学家孙宝元:从数据融合起步,瞄准创造价值,打造助力智能化生产的利器
- vue 根据身份证号获取性别,年龄,出生年月
- mysql数据库实验+cmd界面运行基本操作总结(sql:数据增删改查,表格,视图,备份恢复)
- pip或pip3安装报错Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming。。。
- Labview Socket通讯_通讯板卡
- k8s之HPA(Pod水平自动伸缩)
- 剑指offer练习日志02:基于矩阵乘法求斐波那契数列通项
- 阿里Buy+技术尚不完善,VR购物距离我们还很遥远
热门文章
- 电脑或U盘文件夹变为后缀为.exe文件,解决办法。
- Linux命令df和du
- 作为一个食品专业的本科生 我对我们专业是彻底失望了[转帖]
- Windows11 Android Srudio无法连接手机,报错Error initializing ADB: Unable to create Debug Bridge
- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx分解线xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- apk protect下载地址
- Activiti集成Activiti Modeler
- 数字平原CG场景搭建制作流程解析
- Python函数里的爱情故事
- python 类初学之 小猫