
汇编学习--构造一个小型的linux操作系统
文章平均质量分 88
TigerAndBear
世上不缺少人才,缺少的是执行力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux的汇编学习(1)---实现打印寄存器的数值,或者打印字符串
这里实现了两个函数:1. 一个是print_hex函数,用于实现把bx寄存器的内容以十六进制的形式显示出来2. 一个是print_string函数,用于实现把bx寄存器所指向的字符串打印出来直接看最终的代码实现:[org 0x7c00];打印字符串mov bx, hello_stringcall print_string;打印数字mov bx, 0原创 2017-11-25 01:35:36 · 4957 阅读 · 1 评论 -
linux汇编学习(2)-----摆脱MBR大小的限制,加载stage2代码
我们知道,系统启动会加载磁盘的MBR扇区到内存0x7c00那里去执行。但是毕竟MBR扇区只有512个字节,如果要实现设置GDT,读取内核,引导内核等功能,这512字节显得力不从心。所以我们这里第一步就是通过MBR去磁盘读取一块更大的空间到内存然后去执行这部分代码(称为 stage2)。这里我们尤其要注意一点就是,系统刚从BIOS启动执行磁盘MBR数据,CPU的工作模式还是实模式,寄存器都是16位的原创 2017-11-30 01:43:02 · 469 阅读 · 0 评论 -
linux的汇编学习(3)---进入保护模式
现在我们完成我们第一个主要的功能:引导Linux内核。 首先我们要准备一个Linux内核文件 bzImag。如何引导Linux内核呢?需要做几件事情: 1. 如何把内核加载到内存去执行; 2. 进入保护模式,保护模式带来的好处有很多,例如访问4G内存范围,以及访问内存权限设置; 3. 开启A20地址线(原因:http://blog.youkuaiyun.com/原创 2017-12-03 23:43:24 · 1792 阅读 · 2 评论 -
linux汇编学习(4)-----引导linux内核
现在,我们已经进入了保护模式,下面就是开始从磁盘加载linux内核。 首先我们看一下我们的内核编译的产物(摘自 https://www.slideshare.net/shimosawa/linux-kernel-booting-process-1-for-nlkb): 1 . 首先内核编译时候,生产文件vmlinux,大小141MB #du -sh vmli原创 2017-12-06 22:49:02 · 855 阅读 · 0 评论 -
linux汇编学习(6)---添加根文件系统
这里应该是和汇编没有关系了。但是前面用汇编引导了内核,我打算做成一个能够使用小型linux系统,所以我们需要给我们的linux系统添加一个根文件系统。 那么首先我们需要规划一下我们的磁盘。我打算使用20G的磁盘,其中1G作为内核存放,剩下的就是文件系统了。#truncate -s 20G disk.raw#losetup /dev/loop0 disk.raw#fdisk原创 2017-12-18 23:08:39 · 393 阅读 · 0 评论