nasm实现的用vmware运行自做的linux启动盘的引导代码_其它相关

当计算机电源被打开后,它会先进行加电自检(POST),然后寻找启动盘,如果是选择从软盘启动,计算机就会查找软盘的0面0磁道1扇区,如果发现它以0xAA55结束,则BIOS认为它是一个引导扇区,然后BIOS就会把引导扇区的前512字节的引导代码拷贝到内存的0000:7c00处并将控制器彻底交给这段引导代码。

简单的引导代码如下所示:

复制代码 代码如下:

org 07c00h ;告诉编译器加载到07c00h处

mov ax, cs
mov ds, ax
mov es, ax

call DispStr ;调用显示字符串函数

jmp $; 无限循环

DispStr:
mov ax, BootMessge
mov bp, ax
mov cx, 16
mov ax, 01301h
mov bx, 000ch
mov dl, 0
int 10h
ret
BootMessge: db "hello, OS world!"
times 510 - ($ - $$) db 0
dw 0aa55h

这段代码时用nasm写的,它类似于masm的语言。org 07c00h命令就是将命令后面的代码中的偏移地址都加上07c00h,这样程序就相当于在0000:7c00出执行了。按书中所讲的,用命令nasm bootsector.asm -o boot.bin生成引导代码boot.bin,然后将boot.bin写入软盘的0面0磁道1扇区就可以了。问题就来了,我没有软盘怎么搞,不过在wmware虚拟机中貌似可以用软盘的映像文件来启动,所以就想到自己制作一个映像文件来代替软盘来作为启动盘,不过怎么创建这个映像文件呢?

以前记得用linux下的dd命令做过linux的启动盘,dd应该是可以制作的,于是在网上找了下dd制作映像文件,果然是可以的,制作方法如下:

1 先制作一个空的软盘映像文件diska.img(1.44Mb的软盘映像文件):

dd if=/dev/zero of=diska.img bs=512 count=2880

2 制作一个包含boot.bin的映像文件boot.img:

dd if=boot.bin of=boot.img bs=512 count=1

3 将diska.img中1个扇区后面的数据拷贝到boot.img的后面

dd if=diska.img of=boot.img skip=1 seek=1 bs=512 count=2879

这样就做成了一个大小为1.44Mb的包含引导代码的映像文件。

后面的事就好办了,直接在wmware创建一个空的虚拟机,在设置中将Floppy的路径设置为上面制作的引导扇区的路径就ok了,如下图那样:

设置Floppy连接,断开CD/DVD连接,启动虚拟机就可以看到下面的画面了:

 

总结:这个小的代码的编写和运行还是能让自己对系统启动有一个更深的认识,不过有个不懂的就是怎么用ISO镜像文件启动,怎么将引导代码写入ISO镜像文件,依然没有找到很好的方法解决。

时间: 2024-09-29 08:49:51

nasm实现的用vmware运行自做的linux启动盘的引导代码_其它相关的相关文章

怎样把U盘做系统修复启动盘

  有很多用户喜欢把U盘量产成CD-ROM来做系统修复启动盘,那么量产前到底需要作哪些准备呢?下面将为你解答. 一.量产第一要事就是先用最新版芯片精灵(ChipGenius)检测自已U盘的主控型,做到心中有数,再根据上面的链接下载量产工具.再根据主控型号在站内搜索一下,多看几篇量产教程.做到心中有数再动手.另外量产前要先备份U盘的数据,因为一旦量产就会破坏U盘上的所有文件 二.工具版本:每个主控方案的量产工具都有很多个版本,量产前最好多看看会员的量产经验,看大家使用的是什么版本及注意事项.下载量

U盘做的启动盘如何启动电脑?

  电脑装系统有很多中方法,硬盘安装法.U盘安装法.光盘安装法等等.现在比较主流的安装系统那就是U盘安装系统了,通过U盘来做启动盘,那么就要对BIOS相关设置,不同版本的电脑,设置方法也不一样,下面小编就为大家带来bios设置u盘启动图解教程,希望能帮到大家有时候需要用U盘做的启动盘启动电脑,该如何设置呢?下面以ACER 台式机为例跟大家详细说说.希望能对大家有所帮助! 工具/原料 Acer台式机 方法/步骤 1.按下电源键启动电脑后,立即不停按键盘上的"Del"键,进入BIOS. 2

VMware运行Ubuntu 三种网络连接方式:bridge、NAT、Host-Only的区别详解

概述: VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1.bridged(桥接模式) 在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器. 在桥接模式下,你需要手工为虚拟系统配置IP地址.子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信.同时,由于这个虚拟系统是局域网

Riddler助力Docker容器为runC运行环境做准备

本文讲的是Riddler助力Docker容器为runC运行环境做准备[编者的话]本文主要是介绍Riddler工具,讲解Riddler为开发者带来的便利,并对基本使用进行了介绍和解释. 这是一个关于标准化带来的优势的故事,同时介绍如何利用Riddler转换一个Docker容器为runC镜像.Riddler由容器开发者Jess Frazelle研发. Phil Estes 是IBM开放云技术的高级技术经理,他将在本周多伦多的LinuxCon会议上介绍Riddler的性能. 运行,运行,运行! 回顾开

C#编写的用光盘做启动盘全程描述

C#编写的用光盘做启动盘全程描述作者:thinkersky (Email: yanghuangming@rongji.com)一 :编程思想 1.创建启动盘 插入要创建的启动盘,程序自动检测光驱中光盘,利用WMI(Windows管理架构:Windows Management Instrumentation)读取该光盘的序列号(具有唯一性),把该序列号写入注册表.2.验证 程序执行时,自动检测光驱中的光盘,利用WMI获取序列号,然后读取注册表中先前写入的序列号,二者比较,相同则程序启动成功,否则提

vmware-在win10系统下装了xp虚拟机(VMware),虚拟机第二次启动变得特别慢

问题描述 在win10系统下装了xp虚拟机(VMware),虚拟机第二次启动变得特别慢 本人win10系统,电脑8G内存,两核四线程CPU,主频2.0GHz,超频2.6GHz,用了VMware虚拟机,然后装了Ubuntu和windows xp pro两个系统.xp装好以后第一次启动非常正常,大概几十秒就进了主界面,运行起来也很流畅,没什么问题.后来关了主机后过了一天开过一次Ubuntu的系统,这个系统也很正常的运行.再后来第二次开xp系统的时候开机特别慢,包括开始的windows图标那个界面和欢

如何在安卓的文件管理器运行一个文件,来启动某个应用呢?

问题描述 如何在安卓的文件管理器运行一个文件,来启动某个应用呢? 我这个设备是定制的平板,装了应用没有启动图标.只有一个文件管理器. 有没有办法给应用做个文件形式的快捷方式,在文件管理器里点这个文件就能启动应用? 解决方案 没有办法 取得了Root或许可以 但也需要写一个程序才行 很难

大白菜怎么做系统,大白菜超级U盘启动盘制作方法

很多白菜不知道怎么使用工具,你只要做系统的话按照以下步骤: 1,首先插上u 盘,点击归还空间,提示ok 2,点击一键制作,提示成功即可. 3,下载系统iso文件,解压iso文件,提取中间的system.gho文件一般xp在600-700之间,win7在2-3g,直接复制到u盘究可以了 前提是你的u盘能装的下system.gho文件,恢复的时候选择你放在u盘里的文件. 就是U盘,先要做启动的,然后再把镜像复制进u盘. 大白菜超级U盘启动盘制作(u盘装系统图解教程) (1)盘启动盘制作前准备(注意操

如何做一个Dos U盘启动盘

  现在大部分人都是用WINPE来做U盘启动盘,但也有些人倒是喜欢用DOS做启动.现在就为大家介绍如何做一个Dos U盘启动盘. 第一步:先用USBOOT选ZIP模式把U盘格了,里面有三command.com io.sys msdos.sys这个就纯了DOS系统.然后就增强一下,新建一个config.sys 写入 DOS=HIGH,UMB DEVICEHIGH=HIMEM.SYS DEVICEHIGH=EMM386.EXE 第二步:再建一个autoexec.bat的文件 里面写入 @echo o