当前位置:  技术问答>linux和unix

关于操作系统中引导部分的实现

    来源: 互联网  发布时间:2016-07-11

    本文导语:  现在是从软盘引导,没有什么头绪,请教各位达人。。。 | 额,我写过一个完整的引导程序,也是从软盘启动的,其实这样的,软盘不需要什么文件系统,因为你可以把各个文件的准确路劲算...

现在是从软盘引导,没有什么头绪,请教各位达人。。。

|
额,我写过一个完整的引导程序,也是从软盘启动的,其实这样的,软盘不需要什么文件系统,因为你可以把各个文件的准确路劲算出来,那个时候再用int 13h获取各个模块。
然后设定好gdt就可以进入保护模式了。再就是分页,然后设置idt什么的,代码可以和我要。

|
网上有很多有关Linux制作引导盘的文章,
有从软盘,U盘等引导方式。

|
上面的兄弟给的资料应该够用的了。但就怕初学者看不懂。

简单说来。每一种存储介质,如光盘,软盘,硬盘,他们都有一个区域叫做引导区,基本上就是开始的位置。
默认的情况下,电脑bios在自检完了之后,会按设置启动顺序去读每一个介质的引导区,然后执行。只是后如果你的介质的引导区被写入了可加载系统的代码的话,就会启动成功。

|
有很多图书可以参考,比如:一个操作系统的实现,Linux内核分析,etc。

; boot.asm

[ORG 0]
jmp 0x07c0: start

start:
mov ax, cs
mov ds, ax
mov es, ax

reset:
mov ax, 0
mov dl, 0 ;Drive=0(=A)
int 13h
jc reset ; ERROR ==> reset again

read:
mov ax, 0x1000
mov es, ax ; ES:BX = 1000:0000
mov bx, 0

mov ah, 2 ; read data to es:bx
mov al, 5 ; read 5 sectors
mov ch, 0 ; Cylinder = 0
mov cl, 2 ; Sector = 2
mov dh, 0 ; Head = 0
mov dl, 0 ; Drive = 0
int 13h ; Read!



jc read ;ERROR ==> Try again

jmp 1000h:0000 ; jmp to es:bx, execute:

times 510-($-$$) db 0
dw 0xAA55

|
最主要的你需要了解CPU的相关概念,掌握汇编语言,推荐学习图书IA32编程手册,系统篇,这里面就教你怎么去实现一个操作系统。

|
首先要知道软盘的文件格式 一般都是FAT16文件系统
通过读取存储在该文件系统中各个文件名字 查找到存放在软盘上的操作系统的加载程序
找到之后跳转到操作系统的加载程序中执行。

    
 
 

您可能感兴趣的文章:

  • 我想格式掉linux操作系统,但这样会把引导区也格式掉,在format linux操作系统之前,该怎么设置引导区??
  • 关于多操作系统共存的引导问题?
  • 已安装了Windows操作系统,还想安装Linux。却还想在开机选择操作系统时由Windows引导,请问如何操作。在线等待
  • 请问:原来装XP后又装了REDHAT9双操作系统,后来又重装XP,启动时无法引导到LINUX,还需要重装LINUX吗? iis7站长之家
  • 哪个程序来引导各个操作系统比较好?
  • 我装的是XP和linux双引导,麻烦各位高手告诉我怎样改变 grub中的启动默认操作系统时间啊!!
  • 我安装时把GRUB装在了MBR,一个错误操作执行了LILO,结果现在……完蛋了!我怎么回到以前的GRUB引导?
  • 请问:原来装XP后又装了REDHAT9双操作系统,后来又重装XP,启动时无法引导到LINUX,还需要重装LINUX吗?
  • 有谁用VMware做linux和其他操作系统的引导程序的?
  • 现在我的红旗linux操作系统启动不了!我手头上有一张redhat- linux的启动盘,大家告诉我有什么办法可以恢复多系统引导?
  • Linux 企业版 AS 3下按下面的操作,在引导前,将系统的runlevel定为 1(单用户模式)后,启动后,使用su - 命令直接可以到root用户,而不
  • 求助啊——————grub引导进入操作系统
  • 在线等!我安装时把GRUB装在了MBR,一个错误操作执行了LILO,结果现在……完蛋了!我怎么回到以前的GRUB引导?
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • 请问:如何让对多个现有的文件的写操作成为一个原子操作,并可以实现安全的回滚功能?
  • 在window 的操作系统里,应该有个软件可以实现,安装一个虚拟的linux操作系统
  • qt如何实现:操作键盘实现数据的滚动?
  • PHP实现的连贯操作、链式操作实例
  • Linux 下的C语言实现数据库连接池操作。
  • applet如何实现对数据库(access)的操作,征求设计方案。
  • 小弟有如下问题:JAVA中怎样实现对操作平台的句柄!谢谢了:)
  • 怎么实现对一个udp数据报分多次读的操作
  • 用RMI进行远程对象调用的时候,可不可以实现多个调用远程对象的并发操作
  • 操作系统 实现
  • 在Windows操作系统下能否实现X-Client?
  • 怎样用JAVA语言实现对串口的操作?
  • 怎样能简单的实现LINUX和WINDOWS操作系统并存。
  • 求《操作系统,设计与实现》(Cn,En都可)电子书下载地址,解决即结账
  • 那里有"操作系统:设计与实现(第2版) "
  • 谁有《操作系统设计与实现》上册的答案,还有minix的源码?
  • 在linux操作系统中,如何实现可加载的模块是否被卸载的检测
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Stacks(堆栈) 成员 操作:比较和分配堆栈
  • 谁有操作系统PV操作的例子???谁有操作系统PV操作的例子???谢谢!!
  • C++ Strings(字符串) 成员 Operators:操作符,用于字符串比较和赋值
  • 请问LINUX操作系统是怎样对外围设备进行操作的
  • C++ I/O 成员 flags():操作flags
  • 什么样的操作最耗费服务器的IO操作?
  • C++ I/O 成员 width():操作域宽度
  • 无操作系统下对U盘的操作
  • c#对象中两种copy操作:深拷贝(Deep Copy)与浅拷贝(Shallow Copy)
  • 请问命令行操作下怎么改Linux操作系统的日期和时间?
  • Xcode介绍及创建工程和工程依赖操作步骤
  • 正在学操作系统原理,做操作系统方面的实验用那种工具较好?
  • MyEclipse如何查看和设置文件编码格式相关操作
  • 请问16位操作系统和32位操作系统的区别?
  • Html checkbox标签如何设置默认选中以及用js操作checkbox代码示例
  • 基于linux操作系统之上操作LCD问题,急???
  • c/c++ 操作符优先级参考
  • 哪位大侠知道Linux里的有名管道传送数据快不快?有名管道操作的过程是否有读写硬盘的操作?
  • javascript操作html复选框checkbox:如何判断复选框是否被选中
  • 如何在一个用户对application操作时防止别的用户对它操作?(好难啊)
  • Plesk 中操作和设置 Docker 容器
  • java执行操作系统命令的问题:如何判断多个操作系统?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3