文章目录

  • 前言
  • 计算机开机过程
  • 直接修改磁盘
  • 更换启动源

前言

这个题目比较抽象,我一时想不出更好的了。

老师留了一个作业,让计算机开机启动自己写的汇编程序,打印一个hello world。

推荐看这些视频:

Coding Master
第6,7,8三个视频+6视频的番外文章

计算机开机过程

操作系统本身就是软件,那启动操作系统也是需要其他程序拉起的,也就是指令,那些指令放在哪里?

答案就是bios程序。

问题又来了,执行程序是需要从内存中读取指令的,而内存一开始是空的,而从磁盘拉取指令到内存又需要指令(程序),这不就套娃了吗?从磁盘往内存拉程序需要内存中本身有程序,乐。

所以就需要一个永久固化在内存中的一端程序指令,这就是bios,实现bios程序的基础是ROM(Read Only Memory)。

ROM和内存逻辑上是拼接的,程序每次启动都会先执行ROM上的bios。

bios会先检查一下计算机各个组件有没有坏的,缺的,确认能跑就会默认到磁盘中的某个地址开始拉取操作系统执行指令。

知道了这些以后,就可以修改电脑的开机程序了。有两种方法:

  1. 一种是直接把开机程序第一个拉起的启动程序区域替换成我们自己的程序,但是这种就相当于以后开机就不会启动操作系统了,除非你能改回去,不然就废了。所以一般这种都是在虚拟机里玩。
  2. 另一种是切换拉起的启动程序区域,以前是磁盘,现在换用u盘里我们自己写的启动程序(或者启动盘里的微操作系统),这也就是启动盘的执行原理,你原来是从磁盘调操作系统,现在是从u盘调操作系统,本质上没啥区别,只是读取的地方换了罢了。

直接修改磁盘

创建一个很小的Virtual Box虚拟机,然后用fixvhdw直接把汇编出来的二进制指令写进0地址处。

一般来说,操作系统也是0地址处开始的。

mov ax, 0b800h
mov ds,axmov byte [0x00],'1'
mov byte [0x02],'1'
mov byte [0x04],'2'
mov byte [0x06],'0'
mov byte [0x08],'2'
mov byte [0x0a],'0'
mov byte [0x0c],'0'
mov byte [0x0e],'9'
mov byte [0x10],'4'
mov byte [0x12],'4'
mov byte [0x14],','
mov byte [0x16],'c'
mov byte [0x18],'y'
mov byte [0x1a],'y'
mov byte [0x1c],','
mov byte [0x1e],'H'
mov byte [0x20],'a'
mov byte [0x22],'p'
mov byte [0x24],'p'
mov byte [0x26],'y'
mov byte [0x28],' '
mov byte [0x2a],'A'
mov byte [0x2c],'u'
mov byte [0x2e],'t'
mov byte [0x30],'u'
mov byte [0x32],'m'
mov byte [0x34],'n'
mov byte [0x36],' '
mov byte [0x38],'T'
mov byte [0x3a],'e'
mov byte [0x3c],'r'
mov byte [0x3e],'m'
mov byte [0x40],'!'jmp $times 510-($-$$) db 0
db 0x55,0xaa

更换启动源

这个一般是在自己电脑上试,你肯定不能把你电脑上磁盘的0地址抹掉,不然基本就废了,拉不起操作系统了。

所以都是换源,即U盘。

实际上,抹掉u盘的0地址,也是把u盘在软件层面搞废了(还能格式化),原来的资源大概率没了,但是你重新覆盖了你的程序以后,还是能继续存资源的。

所以在格式化U盘之前,先把资源挪到其他地方。

U盘的0地址开始的512Byte(一个扇区)空间,这个叫MBR(Master Boot Record)。

如果没有MBR区,U盘就只是一块储存器,没有任何的分区信息,MBR就是记录了U盘分区之类信息的区域。如果把分区相关数据写坏了,那U盘就不会被电脑读取,或者读取了以后不显示空间有多大,很多人碰到过这种问题。

但是呢,现在的电脑保护的越来越好了,开机狂按F12进入启动引导洁面后,很多时候都检测不到U盘,即使是检测到U盘,也不能执行U盘引导。

这是因为有启动保护,是Security Boot,这个要是关了,会触发BitLocker,你需要到官网查找自己机器对应的密码,才能彻底掌控电脑,流程比较麻烦,赶时间的同学基本可以放弃了。

一种折中方法是把自己的操作系统做成镜像,然后弄个虚拟机凑合用。
否则就只能硬刚了。

计算机开机过程与自定义开机启动程序相关推荐

  1. 计算机中丢失gdui.dll,“无法启动程序”(调试版本)

    微软的Visual Studio"无法启动程序"(调试版本) 无法启动程序 'theprogram.exe'. 此应用程序未能启动 ,因为应用程序配置 不正确.查看清单文件 以了解 ...

  2. 自定义vbs脚本开机启动程序

    概述 系统开机时,顺带自动启动了不少驱动程序,使得电脑开机后鼠标要呆滞许久.为了加快windows的开机速度,在参考网上不少大牛的资料后,整理出使用vbs脚本利实现开机后延时启动程序的方法 vbs内容 ...

  3. 计算机开机首先执行的是什么程序,计算机是如何启动的?

    相信很多人和我一样,从接触计算机开始,就一直在思考这个问题,当按下电脑的开机键之后,到底发生了什么,为什么这样就能启动电脑了?这篇文章我试着分析一下计算器的启动原理和过程. CPU CPU全称是中央处 ...

  4. 关闭计算机启动程序,电脑开机时自启动程序烦人,教你用系统自带程序关闭它!...

    电脑每次开启的时候会有一些应用程序也跟着自动启动,占用着电脑系统资源.有时候我们并不需要这些程序开启,那么我们如何关闭这些的开机自动启动项呢?这时,有装一些第三方安全管理软件的可以利用它们来管理,但这 ...

  5. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明一下ch ...

  6. linux进程故障如何修复,33.Linux开机过程及启动故障修复

    一.Linux系统启动 Linux系统启动过程如下: initramfs镜像用来启动系统,解压后是一个临时的根目录. 用file查看initramfs-2.6.32-696.el6.i686.img的 ...

  7. 计算机架构及开机过程

    一.计算机架构 下图是一台台式机机箱内部样子: 总的来说,计算机由5大基本组件组成:算术运算器,逻辑控制器,内存,输入设备,输出设备.其中算术运算器和逻辑控制器封装在CPU之中:内存是CPU计算数据的 ...

  8. 计算机上没有启动程序怎么办,Win7开机不加载启动项怎么办

    现在的电脑为了受到更好的保护,往往在开机的时候就加载了一些启动项,如:杀毒软件,安全卫士等等.可有时候会发现,在Win7操作系统中,安装后发现不能开机加载启动项.在注册表中,在msconfig中,在& ...

  9. linux开机到登陆的流程图,1-描述linux开机到登陆界面的启动过程.docx

    1-描述linux开机到登陆界面的启动过程详解课件 简要描述linux系统从开机到登陆界面的启动过程(面试用)简述:1.开机BIOS自检2.MBR引导3.grub引导菜单4.加载内核kernel5.启 ...

最新文章

  1. flowable设计器节点属性扩展_Flowable-流程定义扩展属性
  2. Win API函数SetWindowOrgEx与SetViewportOrgEx
  3. 恒压板框过滤实验数据处理_高考化学实验中:那些不常见的【特殊仪器】与装置,难得的资料...
  4. 改造MUC实现Openfire群
  5. LeetCode 653. Two Sum IV - Input is a BST
  6. 在blog中显示天气预报、日历、时钟、MSN、QQ在线状态、中国农历
  7. Java并发编程实践笔记(一)
  8. 20191116每日一句
  9. 数学建模(5.5)相关系数_斯皮尔曼相关系数
  10. ZKTeco 中控考勤机M300 plus java开发步骤 使用jacob 调用中控考勤机dll(详细配置)
  11. C语言基础学习——编译过程
  12. 每日新闻早报简报十条和1条微语分享
  13. 三点水加一个必须的必
  14. Android 打开手机淘宝,并自动识别淘口令,弹出商品信息
  15. 原生JS写仿淘宝搜索框(代码+效果),可实现3级搜索哦!
  16. 高并发之数十万甚至百万级qps吞吐量方案
  17. CAD Converter转PDF的使用
  18. 网上超市系统参考网站
  19. 浏览器的默认样式及去除
  20. 补充番外4:创建Koroutine协程仓库并提交代码,vscode关联远方仓库

热门文章

  1. Oracle-DataGuard参数enabled_PDBs_on_standby禁用PDB同步
  2. 笔记本计算机硬件知识,电脑硬件知识(小白必看)
  3. WIN7如何设置默认登陆帐户,不输密码,实现自动登陆-转
  4. 弘辽科技:网店卖女装好还是日用百货好?网店有何技巧?
  5. CSDN——CTO讲堂
  6. ssh登录の周辺 Mosh
  7. [附源码]Python计算机毕业设计电影票网上订票系统Django(程序+LW)
  8. MySQL使用kill杀不死
  9. 全省排名10000计算机专业,高考理科600分,全省一万名左右,可以选择这4所211高校...
  10. 数据库事务、隔离级别及其应用