`
freesoftman
  • 浏览: 318881 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

VMware上跑Hello,World操作系统

阅读更多

这真是令人兴奋的一件事情。

 

哈哈, 在去年的时候就打算开始研究linux内核。苦于公司的事情繁忙。

 

今天终于入门了。

 

在这里偶把偶的经历分享一下吧!

 

1温故而知新

先温习一下汇编语言,当然这个是一个苦活!我是温习了一下《IBM-PC汇编语言程序设计》

 

2了解操作系统基础概念

我推荐一本电子书,《自己动手写操作系统》。这本书写的真的不错。如果谁需要,可以发邮件给我:yongjun32@126.com

我的这个程序就是从这里开始的。

 

他说只需要10分钟就可以完成操作系统。可是,本人确用了大约二周,惭愧呀!

代码只有20行左右,如下:

 

++++++++++++++boot.asm begin ++++++++++++++++++

org 07c00h ;告诉编译器程序加载到7c00处
mov ax,cs
mov ds,ax
mov es,ax
call DispStr ;调用显示字符串例程
jmp $  ;无限循环

DispStr:
 mov ax,BootMessage
 mov bp,ax ;es:bp = 串地址
 mov cx,16 ;cx = 串长度
 mov ax,01301h ;ah = 13, al = 01h
 mov bx,000ch ;页号为0(bh = 0) 黑底红字(b1 = 0Ch,高亮)
 mov dl,0
 int 10h
 ret
BootMessage: db "Hello, OS world!"
times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码
     ;为512字节
dw 0xaa55    ;结束标志

++++++++++++++boot.asm end++++++++++++++++++

  

 

大家首先需要下载一个NASM的汇编编译器, 我下载的是nasm-2.06-installer(1).exe!一般只要使用迅雷

都能获取该编译器。至于上边代码的意思,我就不做多的解释了, 最基本的一些汇编语法。

 

输入命令:

nasm boot.asm -o boot.bin

 

一会儿就生成了一个镜像文件boot.bin. 该文件就是我所谓的操作系统了。哈哈!其实只是一个boot sector而已。但是这个是我们步入操作系统的第一步, 跨过了这一步,以后就海阔天空

理论上偶也只是使用了10分钟左右写完成了。

 

但是,令人恼火的是,书中介绍的是将该image写入floppy。我的本本没有floppy驱动。那么偶就必须要了解bootloader的概念。

 

于是,花了1周的时候了解概念,并且设想是不是能使用u盘进行启动, 将自己的boot loader程序写入到u盘的MBR中。于是询问了公司的元老,哈哈,功夫不费有心人。 让我了解了一款向u盘的MBR写入Image的工具。

 

这里就像大家隆重的推荐一下dd工具, 这款工具本来是Linux自带的用于向任何存储设备写镜像文件的工具。你可以在google中输入 dd for window, 那么你就可以获得window版本的dd。

 

接下来, 我分步讲解如何将boot.bin写入到u盘的MBR中:

1,打开cmd,进入dd.exe所在的目录,偶的路径为C:\NASM。如图:

 

 

 2,由于dd是命令行的一个小工具,先调用命令--list, 查看一下U盘的Partition。如图:

3,从图中看到, 我的U盘partition是K, 名字为\\.\Volume{66b36b20-3a85-11df-b4e4-005056c00008}

4,既然找到了partition地址,那么就可以将我们的boot.bin写入到U盘的MBR。

 

5,命令 dd if=c:\nasm\boot.bin of=\\.\Volume{66b36b20-3a85-11df-b4e4-005056c00008} count=1

就是这条命令,你就可以把你的boot loader写入到u盘中。

参数含义:

if, 你要写入的文件绝对地址+文件名

of, 你想要写入的地址。

bs, 每次写入块大小, 默认为512字节。

count, 要写入指定of设备的指定块。

 

那么上面的命令就是, 将我的boot.bin文件中的512个字节写入到U盘的0扇区。也就是MBR。

 

OK,经过上面简单的处理, 那么你就可以看看效果了。 于是, 偶就重启电脑, 设置BIOS从U盘启动。

 

哈哈, 在界面上显示了Hello, OS world! 内心无比喜悦。

 

 

之后我想, 可不可以在vmware上使用U盘启动来查看效果呢。毕竟以后主要是在vmware上做实验啊!

 

但是问题又来了, vmware居然不支持U盘启动, 郁闷啊!

 

还有, 在网上search了解决方案。步骤如下:

 

1、先关闭VMware;

2、插入可启动的USB设备;

3、启动VMware;

4、添加硬盘,在DISK选项中选择"use a physical disk",在device中选择刚刚添加的USB设备;(比如我实机系统已经有了二块硬盘disk0和disk1,这时候USB设备被识别为disk2)

5、重启VMware,修改VMware中的BIOS由SCSI启动.

 

在次令人兴奋的, 在vmware中也跑起来了。如图:

 

不知不觉就到深夜了,程序员的生涯就是寂寞中度过。

接下来, 偶就要开始深入进行Linux内核的研究了。  希望这篇简陋的文章对还在门口徘徊的新人有点帮助!

 

睡觉!

  • 大小: 6.9 KB
  • 大小: 53.5 KB
  • 大小: 60.5 KB
分享到:
评论

相关推荐

    Linux学习系列二:运行Hello World .pdf

    在详细介绍如何在NUC972上运行程序之前,我们首先需要在Ubuntu操作系统下编写并运行一个简单的“Hello World”程序。这一过程涉及以下几个步骤: 1. **编辑代码**:在Linux环境下,可以选择多种编辑器进行代码编写...

    cloudify-hello-world-example-4.5.0.1-build-06.zip

    在"cloudify-hello-world-example-4.5.0.1-build-06.zip"这个压缩包中,我们可以探索Cloudify与OpenStack、Kubernetes以及vSphere(VMware的虚拟化平台)等工具的集成,以及如何利用Cloudify进行应用部署的示例。...

    1. 在Windows环境下安装Vmware虚拟机。 2. 在运行虚拟机后,安装Linux操作系统(ubuntu18)。 3. 启动Linux操作系统。 4.

    Vmware是市面上广泛使用的虚拟机软件之一,它提供高效能、稳定性和兼容性,使得用户可以在不重启主机的情况下,同时运行Windows和Linux等不同操作系统。 **安装Vmware** 1. 访问指定的下载地址...

    Vmware vSphere(一)安装vSphere client 以及 ubuntu

    本篇文章将探讨如何安装vSphere Client以及在Ubuntu操作系统上进行相关操作。 **vSphere Client安装** vSphere Client是vSphere平台的主要管理工具,它允许用户远程连接到vCenter Server或ESXi主机,进行虚拟机的...

    手把手教你把nodejs部署到linux上跑出hello world

    标题中的“手把手教你把nodejs部署到linux上跑出hello world”意味着本文将逐步指导如何在Linux操作系统中安装Node.js并运行一个简单的Hello World程序。Node.js是一种开放源代码、跨平台的JavaScript运行环境,它...

    Linux操作系统的安装使用实验报告.pdf

    实验报告详细介绍了Linux操作系统的安装和使用,包括在虚拟机VMware中进行的操作步骤,以及后续的基本使用和配置。以下是具体的知识点总结: 1. **虚拟机VMware的安装**: - 双击安装文件,按照向导一步步进行,...

    操作系统真象还原相关安装教程,源码以及勘误

    安装操作系统真象还原环境通常需要虚拟化技术的支持,如VirtualBox、VMware或者QEMU。你需要根据自己的硬件配置和需求选择合适的虚拟化平台,并按照官方文档或教程逐步安装。在设置虚拟机参数时,特别注意分配足够的...

    QNX VMware 安装教程 IBMi 资料

    而“VMware”则是一种流行的虚拟化软件,允许用户在同一台计算机上运行多个操作系统。文档中的“安装教程”表明接下来会介绍如何一步步地在虚拟化环境中安装并配置QNX。 在文档的“描述”部分提到了这是一个“非常...

    如何快速在虚拟机上搭建自己手写操作系统实验环境

    1. **编写代码**:根据你对手写操作系统的构想,使用汇编语言编写基本的功能代码,如上例中展示的显示“Hello World!”。 2. **使用nasm编译**:nasm是一款流行的汇编器,用于将汇编语言源代码转换成目标代码。确保...

    HelloWorld-VM:Hello World使用Ubuntu 20.04 bash

    4. **虚拟机(VM)**: 虚拟机允许用户在一个操作系统上运行另一个独立的操作系统实例,如通过VMware或VirtualBox在Windows上运行Ubuntu。这对于测试和隔离不同环境很有用。 5. **C#程序员转向Linux**: C#程序员通常在...

    自己动手写操作系统 pdf

    自己动手写操作系统在详细分析操作系统原理的基础上,用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。本书不同于其他的理论型书籍,而是提供给读者一个动手...

    自己动手写操作系统

    本书在详细分析操作系统原理的基础上,用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图。...

    南邮操作系统实验一Linux操作、使用、编程

    【实验名称】Linux操作系统实验一:Linux操作、使用与编程 【实验目标】 1. 熟悉Linux系统的安装,如Red Hat发行版。 2. 学习Linux的启动流程,理解其初始化阶段。 3. 了解Linux文件系统的层次结构,理解其组织方式...

    操作系统课程设计报告 (物联网).doc

    - 环节三:了解shell在操作系统中的角色,如命令解释器和脚本编程工具,并能编写简单的shell脚本,如打印"hello world"。 - 环节四:理解Linux系统调用的原理,通过编写实际代码使用系统调用进行文件操作,并学习...

    CS大作业-hello的“一生”

    - **软件环境**:Windows 10操作系统,配合Vmware Workstation 14 Pro虚拟机中的Ubuntu 64位系统。 - **硬件环境**:采用x64架构的CPU,主频2.50GHz;配备8GB RAM内存;硬盘容量为1.1TB。 - **开发与调试工具**:...

    hello-world:虚拟机测试

    在IT行业中,虚拟机(Virtual Machine)是一种模拟计算机硬件系统的技术,它允许我们在一台物理机器上运行多个独立的、完整的操作系统实例。"Hello, World"是编程中的一个经典例子,通常用于初学者入门,用来验证...

    linux操作系统的安装及使用实验报告.docx

    1. **通过虚拟机安装Linux系统**:使用VMware软件创建虚拟机,并在其上安装Linux操作系统。 2. **熟悉Linux的基本命令**:学习如何使用常见的Linux命令,如`ls`、`cd`、`mkdir`等。 3. **在Linux下编译C语言程序**:...

    自己动手写操作系统 电子工业出版社 pdf

    第1章 马上动手写一个最小的“操作系统”1 1.1 准备工作1 1.2 10分钟完成的操作系统1 1.3 Boot Sector3 1.4 代码解释3 1.5 水面下的冰山5 1.6 回顾6 第2章 搭建你的工作环境7 2.1 虚拟计算机(Virtual PC)7 2.1.1 ...

Global site tag (gtag.js) - Google Analytics