IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> BootLoader引导启动程序 -> 正文阅读

[系统运维]BootLoader引导启动程序


BootLoader引导启动程序原本由Boot引导程序和Loader引导加载程序两部分构成。Boot引导程序主要负责开机启动和加载Loader程序;Loader引导加载程序则用于完成配置和硬件工作环境、引导加载内核等任务。

Boot引导程序

计算机上电后,首先经过BIOS上电自检,这个过程会检测硬件设备是否有问题。如果检测没有问题的话,将根据BIOS的启动项配置选择引导设备,目前支持从硬盘,软盘,U盘,网络启动,通常情况下会选择硬盘作为默认启动项。

BIOS引导原理

选择了启动设备后,会检测相应启动设备的第0磁头第0磁道第一个扇区是否以数值0x55和0xaa两个字节作为结尾。如果是,BIOS就认为这个扇区是一个引导扇区,会把此扇区的数据复制到物理内存0x7c00处,然后将处理器的执行权移交给这段程序。
在这里插入图片描述
由于磁盘的一个扇区只有512B所以是无法容纳一个操作系统的,所以Boot引导程序将功能更强大的引导加载程序Loader装载内存中,一旦Loader引导加载程序开始执行,一切都会交给我们编写的软件来控制,可以看作是硬件设备向软件移交控制权。

写一个Boot引导程序

寄存器初始化部分。

org	0x7c00;org指令将程序的起始地址设置为0x7c00,因为BIOS会加载引导程序至此处
BaseOfStack	equ	0x7c00
Label_Start:

	mov	ax,	cs
	mov	ds,	ax
	mov	es,	ax
	mov	ss,	ax
	mov	sp,	BaseOfStack;初始化代码段,数据段,扩展段,堆栈段以及栈指针

通过BIOS中断服务程序INT 10h实现屏幕信息显示相关操作。

;=======	clear screen

	mov	ax,	0600h;int 10h,ah=06h,al=0实现清屏功能
	mov	bx,	0700h;al=0,bx的值不生效
	mov	cx,	0;al=0,cx的值不生效
	mov	dx,	0184fh;al=0,dx的值不生效
	int	10h

;=======	set focus

	mov	ax,	0200h;int 10h,ah=02h,设置屏幕光标位置
	mov	bx,	0000h;页码
	mov	dx,	0000h;将光标设置到屏幕左上角(0,0)处
	int	10h

;=======	display on screen : Start Booting......

	mov	ax,	1301h;int 10h,ah=13h,al=01h,显示字符串,光标移动至字符串尾端位置
	mov	bx,	000fh;设置字符显示属性,白字,黑底,高亮,不闪烁
	mov	dx,	0000h;从(0,0)处开始显示
	mov	cx,	10;要显示的字符串的长度
	push	ax;保存ax寄存器
	mov	ax,	ds
	mov	es,	ax;设置要显示的字符串的段基址
	pop	ax
	mov	bp,	StartBootMessage;设置要显示的字符串的偏移地址
	int	10h

定义一个字符串和引导程序的结束标识数据。

StartBootMessage:	db	"Start Boot"
;=======	fill zero until whole sector

	times	510 - ($ - $$)	db	0
	dw	0xaa55;引导扇区标识

创建虚拟机软盘镜像

安装好Bochs虚拟机源码后,会生成磁盘镜像创建工具bximage。可以使用bximage命令创建虚拟软盘镜像文件。使用bximage根据提示创建一个名为boot.img,大小为1.44MB的软盘。

在Bochs上运行Boot程序

使用nasm命令将boot.asm源文件编译成二进制文件。

nasm boot.asm -o boot.bin

将编译好的二进制文件写入虚拟软盘镜像文件内。使用dd命令将引导程序强制写入虚拟软盘的固定扇区,这种方式可以绕过文件系统的管理和控制,直接操作磁盘扇区。

# 书上原本没有第1条命令,如果没有第一条命令后面会因为磁盘空间不足而复制loder程序失败
dd if=/dev/zero of=./bochs-2.6.8/boot.img count=204
dd if=boot.bin of=./bochs-2.6.8/boot.img count=1 bs=512 conv=notrunc

使用bochs -f ./bochsrc启动Bochs虚拟机,执行选项6。
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 14:03:25  更:2022-02-07 14:04:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:59:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码