- 浏览: 271695 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (146)
- 算法 DP (2)
- 杂谈 (9)
- Linux 软件 (16)
- 解题报告 (5)
- debian系统学习 (2)
- Linux--Ubuntu篇 (34)
- PHP (1)
- C++ (10)
- photoshop学习 (1)
- Crazy English (3)
- 网站开发 (10)
- 软件安装 (6)
- 编程经验 (4)
- acm (3)
- 脚本 (3)
- Linux编程 (6)
- vim (1)
- 项目经验 (2)
- Tex (2)
- 读书笔记 (6)
- Windows下软件 (4)
- 笔试面试 (2)
- Android (2)
- 设计模式 (1)
- 数据处理 (1)
- 小算法 (1)
- 那点问题 (1)
- shell (2)
- NLP (2)
- java (4)
- 小程序 (0)
最新评论
-
zi413293813:
不错,很有用!3Q
eclipse 软件的背景颜色、字体设置 -
twlkyao:
不错,身体最重要。
eclipse 软件的背景颜色、字体设置 -
cry615:
不错,赞一个!
eclipse 软件的背景颜色、字体设置 -
showzh:
suse忘记root密码修改方法
suse忘记root密码修改方法 -
dc0453:
包子,把你最近的心得都贴出来啊
网络编程API
昨天晚上有空下载到了《自己动手写操作系统》--于渊,这本书。感觉他用的语言和比喻很好,所以一口气读了两章,把hello os读完了,我手也痒痒力,自己也搭一个平台,试试吧。在大三的时候上操作系统课,就像做一做操作系统的实验,但是由于自己的懒惰和一些列的借口,总之没有能做成,现在补回来吧。
在ubuntu10.10正式发布还有5天的时候,我将我的10.04升级到了10.10,也没有什么特殊的感受。下面进入正题吧:
1.安装bochs
bochs是一款开源软件,由于其强大的可移植性,在各种机器和操作系统下都可以安装。这里对于它的历史就不多做介绍了。说命令吧。
sudo apt-get install bochs
然后apt包管理会自动解决依赖,下载该下的,安装该装的包。ok,安装完成。
我们该测试好不好使了。
2.编写hello os 汇编程序
org 07c00h ;告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ;调用显示字符串例程 jmp $ ;无限循环 DispStr: mov ax, BootMessage mov bp, ax mov cx, 16 mov ax, 01301h mov bx, 000ch mov dl, 0 int 10h ;10h 中断 ret BootMessage: db "Hello OS world!" times 510-($-$$) db 0 ;填充剩下的空间,使生成的二进制代码恰好>为512字节 dw 0xaa55 ;结束标志
将其保存为boot.asm(汇编代码啊,第一次正式编译,虽然以前在xp下写过更笨的,有点小兴奋)
编译汇编代码:
nasm boot.asm -o boot.bin //怎么样,感觉跟gcc的用法差不多啊,:-)
没有错误的话就好了,有了的话就仔细调一下,注意汇编注释用semicolon(分号而不是冒号),我在这还错了。
3.让我们的程序泡在bochs上
首先我们要想到,bochs是一个虚拟机,它给我们虚拟出了一个机器硬件环境,下面怎么运行就看我们的指令了。对于我们实际的机器,如果让它运行,要么用软盘,要么用光盘,要么用硬盘,你总得挑一个可以让它启动的,这里我们把上面些的hello os程序做成一个img文件,就是一个软盘格式的文件,让bochs挂载上这个虚拟软盘,我们就可以让bochs运行了。
将上面生成的bin文件转换成img文件的方法:
dd命令:
dd if=boot.bin of=boot.img bs=512 count=1 conv=notrunc
其中要注意的是,注意inputfile的路径可以是相对的也可以是绝对的。这个命令在鸟哥的私房菜中有点印象,现在都忘了,网上搜的。
好了,下面就是挂载这个文件,这个虚拟软盘了。
所以我们接下来要做的就是告诉bochs:嘿,我有一个软盘,你给我从这里启动,运行我写的程序。
我们怎么告诉它呢,当然是配置文件了。
对于bochs,有一个默认的配置文件在:/etc/bochs-init/bochsrc
网上的前辈们都说最好对于每个特定的应用,自己单独创建一个bochsrc配置文件,反正又不费时。好,我们写一下适合我们的bochsrc文件。
megs: 32 romimage:file=$BXSHARE/BIOS-bochs-latest vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest floppya: 1_44=boot.img, status=inserted boot: floppy
bochsrc文件里的格式有严格的要求,所以照着原始的那个照猫画虎就可以搞定了。我相信里面的东西不用多解释了吧。
megs: 32说明了最大允许内存
romimage:bios的二进制文件,软件带的,不用管
vgaromimage:vga显示的二进制文件,软件自带的,不用管
floppya: 就是虚拟出的软驱a,后面说了软驱的型号:1_44即1.44M的那种,后面就是软驱文件的位置和名称了,状态,已经插入。
boot:告诉bochs从哪里启动。还用问吗,我们当然是从软驱启动了。
ok,一切顺利的话,我们就可以运行了:
bochs -f bochsrc
我的是看到了下面的漂亮画面:
有一点需要注意就是关于一个环境变量的问题:BXSHARE,我的好像没有自己加上去的,但是我没有让它生效,它也好使了,我没有用source命令,也没有重启,未知中,不管了,好使就行。
你是不是也看到自己的成果了呢?
好,晚上,继续努力!!!
附件中有我的hello os文件夹,包括hello os的源码和bochsrc的配置文件
发表评论
-
拥有rw权限的文件在vim中编辑时提示W10:只读文件,无法修改
2014-09-24 18:49 945解决: :set modifiable :set w ... -
linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方法【转】
2014-07-23 11:04 2118转自:http://www.jb51.net/LINUXji ... -
vim 技巧
2014-04-10 16:35 622vim 里的非贪婪匹配: 使用 & ... -
linux 编程
2014-04-09 10:19 5531. sleep #include <iostrea ... -
signal
2013-11-17 16:23 5571. linux 下各信号的解释: man 7 signa ... -
linux 显示中文文件乱码
2013-11-11 20:24 658export LANG=zh_CN.UTF-8 添加到 ... -
linux下显示其他时区时间
2013-09-03 13:50 2029时区的系统常见定义: unix系统时区设置: 每个用户可 ... -
screen
2013-03-01 14:57 790screen 是一个主要应用于一个终端连接多个服务器的情形, ... -
java生成的md5和linux下用md5sum生成的md5摘要不一致问题
2012-10-23 17:05 2829参照这个: http://wolfdream.itey ... -
配置本地或者局域网的ubuntu源
2012-10-21 12:36 9226简单记录一下原理:将原来需要在网上更新的包文件下载到本地的一个 ... -
Ubuntu 10.04 Intel酷睿i5 2300显卡解决方法
2012-07-23 17:07 10651. 添加显卡驱动源: sudo add-apt-rep ... -
Cent OS 6.2 LVS+keepalived 搭建
2012-03-18 20:18 1825OS: Cent OS 6.2 (1) 下载、安装 ... -
initrd.img 解压分析
2012-03-17 15:15 3018vmlinuz 是一个为内核映像, vmlinuz里面有gz ... -
centos 6.2 安装内核源码
2012-03-16 18:58 3523centos 6.2 废话不多说,说说过程: ... -
ubuntu下看xp文件名乱码
2011-11-22 12:15 1709利用软件 convmv 可以 $sudo apt-g ... -
Xmanager 连接 ubuntu10.10
2011-11-02 16:05 2664XManager 访问 ubuntu ... -
ubuntu 下 omnet++ + inet + oversim 安装
2011-10-27 22:47 3733安装 omnet++ 从官网上下载omnet++, h ... -
Linux下软件介绍
2011-07-29 19:30 852最近用了几个linux软件记录下来,以后陆续使用到的好用的软件 ... -
linux 分区及引导笔记
2011-07-18 13:50 897开机流程: 1. BIOS 加电,运行bios自检程序,识别 ... -
libpcap 安装和测试
2011-07-17 11:06 6003libpcap 安装和测试 I 首先安装 libpc ...
相关推荐
Ubuntu 10.10 下 TFTP 服务器配置笔记 本文档介绍了在 Ubuntu 10.10 操作系统下如何配置 TFTP 服务器,从虚拟机网络配置到 TFTP 服务器的搭建,旨在帮助读者快速搭建 TFTP 服务器。 一、虚拟机网络配置 在 Ubuntu...
Ubuntu 10.10在2010年10月正式发布,让众多Ubuntu用户都对这款全新的系统充满期望。毕竟,Ubuntu 10.10是Canonical公司推出的最为用户友好的系统,而且为它添加了很多新的功能。 熟悉Ubuntu系统的用户了解,在...
### Ubuntu 10.10 安装指南详解 #### 引言 Ubuntu 10.10,代号"Maverick Meerkat",是一款备受赞誉的开源操作系统,基于Debian并采用Linux内核。它以其用户友好、稳定可靠的特点,赢得了全球无数用户的青睐。本文将...
- 类似于 Windows 下的软件管家,Ubuntu 软件中心支持一键下载和安装软件。 2. **QQ 客户端安装**: - 可以通过 Linux QQ、Web 版本或使用 Wine 安装 Windows 版本的 QQ 来实现在 Ubuntu 上使用 QQ。 - 对于其他...
### 在U盘中安装Ubuntu 10.10的方法 #### 安装前的准备与注意事项 ##### 一、安装条件 要在U盘上安装Ubuntu 10.10,首先需要满足一定的硬件条件: 1. **U盘容量**:至少需要4GB以上的U盘,以确保能够容纳Ubuntu...
### Ubuntu10.10下kgdb环境搭建详解 #### 前言 随着Linux操作系统在嵌入式领域的广泛应用,内核级别的调试成为了许多开发者必须掌握的一项技能。不同于用户空间的应用程序,内核级别的调试更加复杂,因为它发生在...
U盘安装ubuntu10.10图文教程
如果安装过程没有遇到任何网络错误,那么就说明你已经成功地使用Ubuntu 10.10 DVD ISO文件作为本地源来更新和安装软件了。 ### 总结 通过上述步骤,我们不仅学习了如何将Ubuntu 10.10 DVD ISO文件挂载为本地软件源...
参考在Ubuntu 10.10 Linux下安装锐捷客户端方法.txt文件中的详细步骤,这可能包括设置网络接口、配置认证参数等。 在使用过程中,你可能需要手动启动锐捷客户端,并根据网络环境调整相关参数。由于Linux下的锐捷...
注意:如果是使用笔记本电脑并通过USB接口连接开发板,则在Ubuntu下的端口通常为`ttyUSB0`,而在Windows系统下则是`COM4`。 #### 四、配置NFS服务 为了方便在宿主机与目标机之间共享文件,可以配置NFS(Network ...
本文将详细介绍如何在Ubuntu 10.10环境下安装并配置TFTP服务,以确保服务的正常运行。 #### TFTP配置概述 TFTP服务在Ubuntu 10.10中的配置通常通过xinetd进程来实现。xinetd,即extended internet daemon,是新...
### Ubuntu 10.10 在 Windows XP 下的安装指南及关键知识点 #### 安装环境与准备 ...以上步骤和知识点详细介绍了如何在 Windows XP 下安装 Ubuntu 10.10,以及过程中需要注意的关键技术和配置细节。
ubuntu10.10下安装Samba步骤,个人实践记载所得。
安装 Ubuntu10.10 或者 ylmf os3.0 需要注意一些关键步骤和细节,包括安装前的准备工作、安装前的注意事项、安装 Ubuntu10.10 或者 ylmf os3.0、硬盘安装 Ubuntu10.10 或者 ylmf os3.0、分区工具和安装完成。...
【标题】:“Ubuntu 10.10 使用Wine 1.3 安装QQ2010”的详细教程 在Linux系统中,由于QQ是为Windows操作系统设计的应用程序,因此不能直接在Ubuntu 10.10上运行。然而,借助Wine这款开源软件,我们可以让Linux系统...
在Ubuntu 10.10中安装MariaDB Debian软件包涉及到一系列的步骤,包括安装先决条件包、下载特定版本的MariaDB软件包、配置和安装这些软件包,以及后续的安装后配置。以下是对这些知识点的详细解释。 ### MariaDB简介...
ubuntu 10.10网络配置10步曲