这真是令人兴奋的一件事情。
哈哈, 在去年的时候就打算开始研究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
分享到:
相关推荐
在详细介绍如何在NUC972上运行程序之前,我们首先需要在Ubuntu操作系统下编写并运行一个简单的“Hello World”程序。这一过程涉及以下几个步骤: 1. **编辑代码**:在Linux环境下,可以选择多种编辑器进行代码编写...
在"cloudify-hello-world-example-4.5.0.1-build-06.zip"这个压缩包中,我们可以探索Cloudify与OpenStack、Kubernetes以及vSphere(VMware的虚拟化平台)等工具的集成,以及如何利用Cloudify进行应用部署的示例。...
Vmware是市面上广泛使用的虚拟机软件之一,它提供高效能、稳定性和兼容性,使得用户可以在不重启主机的情况下,同时运行Windows和Linux等不同操作系统。 **安装Vmware** 1. 访问指定的下载地址...
本篇文章将探讨如何安装vSphere Client以及在Ubuntu操作系统上进行相关操作。 **vSphere Client安装** vSphere Client是vSphere平台的主要管理工具,它允许用户远程连接到vCenter Server或ESXi主机,进行虚拟机的...
标题中的“手把手教你把nodejs部署到linux上跑出hello world”意味着本文将逐步指导如何在Linux操作系统中安装Node.js并运行一个简单的Hello World程序。Node.js是一种开放源代码、跨平台的JavaScript运行环境,它...
实验报告详细介绍了Linux操作系统的安装和使用,包括在虚拟机VMware中进行的操作步骤,以及后续的基本使用和配置。以下是具体的知识点总结: 1. **虚拟机VMware的安装**: - 双击安装文件,按照向导一步步进行,...
安装操作系统真象还原环境通常需要虚拟化技术的支持,如VirtualBox、VMware或者QEMU。你需要根据自己的硬件配置和需求选择合适的虚拟化平台,并按照官方文档或教程逐步安装。在设置虚拟机参数时,特别注意分配足够的...
而“VMware”则是一种流行的虚拟化软件,允许用户在同一台计算机上运行多个操作系统。文档中的“安装教程”表明接下来会介绍如何一步步地在虚拟化环境中安装并配置QNX。 在文档的“描述”部分提到了这是一个“非常...
1. **编写代码**:根据你对手写操作系统的构想,使用汇编语言编写基本的功能代码,如上例中展示的显示“Hello World!”。 2. **使用nasm编译**:nasm是一款流行的汇编器,用于将汇编语言源代码转换成目标代码。确保...
4. **虚拟机(VM)**: 虚拟机允许用户在一个操作系统上运行另一个独立的操作系统实例,如通过VMware或VirtualBox在Windows上运行Ubuntu。这对于测试和隔离不同环境很有用。 5. **C#程序员转向Linux**: C#程序员通常在...
自己动手写操作系统在详细分析操作系统原理的基础上,用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。本书不同于其他的理论型书籍,而是提供给读者一个动手...
本书在详细分析操作系统原理的基础上,用丰富的实例代码,一步一步地指导读者用C语言和汇编语言编写出一个具备操作系统基本功能的操作系统框架。本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图。...
【实验名称】Linux操作系统实验一:Linux操作、使用与编程 【实验目标】 1. 熟悉Linux系统的安装,如Red Hat发行版。 2. 学习Linux的启动流程,理解其初始化阶段。 3. 了解Linux文件系统的层次结构,理解其组织方式...
- 环节三:了解shell在操作系统中的角色,如命令解释器和脚本编程工具,并能编写简单的shell脚本,如打印"hello world"。 - 环节四:理解Linux系统调用的原理,通过编写实际代码使用系统调用进行文件操作,并学习...
- **软件环境**:Windows 10操作系统,配合Vmware Workstation 14 Pro虚拟机中的Ubuntu 64位系统。 - **硬件环境**:采用x64架构的CPU,主频2.50GHz;配备8GB RAM内存;硬盘容量为1.1TB。 - **开发与调试工具**:...
在IT行业中,虚拟机(Virtual Machine)是一种模拟计算机硬件系统的技术,它允许我们在一台物理机器上运行多个独立的、完整的操作系统实例。"Hello, World"是编程中的一个经典例子,通常用于初学者入门,用来验证...
1. **通过虚拟机安装Linux系统**:使用VMware软件创建虚拟机,并在其上安装Linux操作系统。 2. **熟悉Linux的基本命令**:学习如何使用常见的Linux命令,如`ls`、`cd`、`mkdir`等。 3. **在Linux下编译C语言程序**:...
第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 ...