设为首页 收藏本站
查看: 1018|回复: 0

[经验分享] VMware上跑Hello,World操作系统

[复制链接]

尚未签到

发表于 2016-1-5 13:48:01 | 显示全部楼层 |阅读模式
  这真是令人兴奋的一件事情。
  
  哈哈, 在去年的时候就打算开始研究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。如图:
DSC0000.jpg
  
  2,由于dd是命令行的一个小工具,先调用命令--list, 查看一下U盘的Partition。如图:
   DSC0001.jpg
  
  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中也跑起来了。如图:
DSC0002.jpg
  
  不知不觉就到深夜了,程序员的生涯就是寂寞中度过。
  接下来, 偶就要开始深入进行Linux内核的研究了。  希望这篇简陋的文章对还在门口徘徊的新人有点帮助!
  
  睡觉!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-160644-1-1.html 上篇帖子: When Ubuntu6.10 cannot install vmware-tools 下篇帖子: vmware P2V 后黑屏解决方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表