《操作系统真象还原》记录全流程——第三章01

提示: 写这篇文章的目的是只是激励自己完成这本书的linux内核项目,本文不够细致。

指路大佬:操作系统真象还原 自制操作系统_Love 6的博客-CSDN博客

指路大佬:

用《操作系统真象还原》写一个操作系统 第三章 完善MBR_哔哩哔哩_bilibili

感谢CSDN上的前辈们的热心分享。


为什么本文标了个01,因为这个代码没有自己写,只是看了一下,运行成功了。受大佬启发,明天自己写代码,按照书上的代码改进,否则就是cv工程师了。我也建议大家自己写一遍,毕竟看这本书的同学应该都是想自己实现操作系统。如果只是ctrl c/v 还有什么意义呢?


一、基础知识

  1. **地址其实就是偏移量。**编译器给程序中各符号(变量名或函数名等)分配的地址,就 是各符号相对于文件开头的偏移量。
  2. section功能:在程序中宣称一个区域。 如数据段、代码段。关键字 section 并没有对程序中的地址产生任何影响,仅仅是在逻辑 上让开发人员梳理程序之用。
  3. vstart是虚拟起始地址。 只是告诉编译器以新的数字作为后面数据的地址的起始值,它本身没改变数据本身在文件中的地址。

二、实践

指路大佬:[《操作系统真象还原》第三章 ---- 完善MBR 尝汇编先苦涩后甘甜而再战MBR!(内有闲聊)_times 0x1b8-(-) db 0-CSDN博客](https://blog.csdn.net/qq_37500516/article/details/117813233?spm=1001.2014.3001.5506 "《操作系统真象还原》第三章 ---- 完善MBR 尝汇编先苦涩后甘甜而再战MBR!(内有闲聊)_times 0x1b8-(-$$) db 0-CSDN博客")

1.MBR操作显存。

直接修改显示器上地址的存储数据,达到显示字符的目的。注意传入的显示字符是它的ASCII码值,比如我们希望显示数字1,那么传入的数据是'1'或它的ASCII码,而不是1。一个字符用两个字节表示:低字节是字符的ASCII码,高字节是属性。

执行时注意:

  1. nasm -o mbr.bin mbr.s 即 将mbr.s编译成机器指令mbr.bin;

  2. 要将编译好的mbr.bin文件写入虚拟机 dd if= 路径/mbr.bin of=路径/hd60M.img bs=512 count=1 conv=notrunc ;

  3. 启动虚拟机

2.MBR完成从磁盘读入Loader加载器:

可以利用vim编辑器来编写文件。

1.下载vim编辑器:sudo apt-get install vim

2.vim boot.inc 编辑新文件,进入命令模式

3.输入i 进入输入模式

4.输入Esc退出到命令模式,输入 :wq! 保存退出。

记录:

相关推荐
迷途之人不知返1 小时前
【文件系统】-4-软硬连接
linux
MicrosoftCloud1 小时前
操作系统 07|页面置换:OPT / FIFO / LRU 手算一遍,再讲清 Belady 和改进型 Clock
操作系统·fifo·lru·页面置换·opt·belady·clock算法
1234567890@world3 小时前
正点原子 ATK-DLRK3568 嵌入式Linux系统开发手册V1.3 详细总结
linux·stm32·单片机
sun_weitao3 小时前
极简版 MCP 工具实现方案
java·linux·服务器
爱和冰阔落5 小时前
【Linux】线程安全进阶:单例模式、可重入函数与死锁排查
linux·运维·安全·单例模式
先知后行。5 小时前
pimpl
linux
q27551300426 小时前
AS8132 DP转HDMI 4K60(420)被动式 国产性价比AS方案
linux·算法·硬件架构·dash
刚入门的大一新生7 小时前
Linux-进程间通信2
linux·运维·服务器
电科_银尘7 小时前
【深度学习项目实战·02】Linux服务器环境搭建:从SSH登录到稳定运行项目
linux·服务器·深度学习
运维小斌8 小时前
麒麟 V10 部署 OceanBase:故障速查与验收清单
linux·数据库·oceanbase·麒麟