首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>linux基础>经验技巧>正文

创建自己的操作系统开发环境

http://www.oklinux.cn  2007-10-18  来源:  kit  会员收藏  游客收藏  【 】 

对于进行操作系统开发的爱好者而言,最困难的事情之一就是不知道从何处下手开发。很多书籍对操作系统的原理进行了深入的阐述,但是似乎没有人一步一步地教爱好者如何由浅入深地了解这些概念。

 

前几期中,已经有文章就这一问题进行了探讨,在此我想尽量不用面向编程的叙述方式,而只是向那些想要开发操作系统的爱好者介绍一些相关的工具和技巧。有兴趣的读者可以轻松获取想知道的资源,并且开始自己的设计和编程。

 

你也许可能没有意识到,操作系统的开发实际上并不是从头开始的。编写一个可靠的引导装载程序(bootloader)本身就是一个非常系统的项目,因此我不建议初学者自己开发一个操作系统的引导装入程序,很多可靠的引导装载程序(例如Grub、LILO、ppcboot等)都是免费的。如果一定要坚持自己开发这一部分的内容,我建议把它推迟到项目的后期进行。在本文中,我将使用GNU Grub。

 

开发环境

 

为了使操作系统开发过程更加轻松,需要构建一个开发环境,这个环境应该满足以下几个要求:

 

◆ 可以很快地对自己修改后的新内核进行编译;

 

◆ 不用重新启动用于开发的机器;

 

◆ 不需要使用软盘作为操作系统的存储介质。

 

本文将介绍很多可以满足上面这三个需求的环境。它由一台从事开发的机器和一台测试的机器组成,两个机器都位于同一网络之上。用于开发的机器应该装配有一套用于开发的编程工具:汇编和C编译器、一个连接器和“make”工具。还有一个我认为特别有用的工具就是模拟器,它可以帮助调试内核,并且允许很快对新加入的代码行进行测试。接下来,还需要一个TFTP服务器。该工具将允许通过具有TFTP能力的引导装载程序通过网络从开发的机器上下载新开发的内核。

 

测试用的机器,这台机器所需要的只是一个网卡和一个支持TFTP的引导装载程序。

 

设置开发环境

 

1.开发用的机器

 

选择的编程工具是:

 

◆ gcc 2.95.4

 

◆ ld 2.13.90.0.10

 

Bochs 1.4.1是一个x86模拟器。注意要使其支持调试模式,就要对其进行一些特定的编译。命令如下:

 

$ ./configure --enable-x86-debugger

$ make

 

为了正确地使用Bochs,需要创建一个磁盘映像,它要有引导装载程序和文件系统。具体方法可参见《Linux上古典仍在流行》之Bochs。

 

TFTP服务器我选择的是atftpd,使用基于Linux的TFTP服务器是一件非常简单的事情。

 

2.测试用的机器

 

我选择的引导装载程序是GNU Grub 0.92,这里需要注意的是要让Grub的TFTP终端具有和网卡通信的能力。我用作测试的机器使用的是一个NE2000 ISA网卡,通过以下命令来实现这一目的:

 

$ ./configure --enable-ne --enable-ne-scan=0x220

$ make

 

请注意,如果使用的是即插即用PCI卡的话,配置起来要容易得多。现在你可以把Grub映像安装至测试用的机器MBR之上,或者是一个用于启动测试机器的软盘之上。我喜欢使用后者,因为用于测试的机器还要用于其它用途,所以不想将其安装于硬盘之上。操作如下:

 

$ cat ./stage1/stage1 ./stage2/stage2 > /dev/fd0

 

然后,把软盘插入到测试用的机器中,并且看一看网卡是否能够被识别,可以通过手工配置或者使用dhcp服务器。

 

grub> dhcp

Probing... [NE*000]

NE2000 base 0x220, addr 00:C0:A8:4E:5A:76

共2页: 上一页 1 [2] 下一页

上一篇:黑客手段 Linux操作系统入侵实例   下一篇:充分利用Linux的安全防护工具


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·关于Linux系统中Compress的注意事项
·让虚拟机Linux与宿主机Windows资源共享
·Linux系统攻略 使用Script录制终端会话
·Linux下Split分割大文件的方法
·Linux下清除GRUB/修复MBR的实用技巧
·Ubuntu7.0 Gvim乱码解决办法
·开启Firefox地址栏的自动完成特性
·备份Linux操作系统的几种方式
·Ubuntu Linux下PDF乱码的终极解决办法
·人大校园网新认证系统Linux上网解决方法
·Linux系统中两种替代“花生壳”的办法
·Linux系统下电信禁路由上网的破解方法
·关于Linux系统下RPM软件包的使用技巧
·更新Ubuntu 7.0和安装中文输入
·Linux下VI编辑器不能保存中文的问题解决
·Linux下更改GRUB的默认启动系统
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux视觉盛宴 KDE 4.1 Rev 783000精美
·在Ubuntu下挂载文件系统与网络共享文件
·Mathematica在Ubuntu-feisy中的表现以
·红旗Linux 6.0 sp1的NTFS中文目录显示
·Linux系统中使用ndiswrapper安装无线网
·Linux Windows双系统安装之Fedora8安装
·在Ubuntu下添加程序链接至菜单项的做法
·Ubuntu下安装aMule并与firefox关联(图)
·Ubuntu登录界面分辨率过高问题的修改
·Ubuntu更新错误:Wine 签名无法进行验
·Ubuntu PPPOE上网方法 如adsl与长城宽
·Ubuntu在mac下的安装方法
  阅读排行
·Linux爱好者入门教程
·Linux操作系统下的串口通信学习笔记
·从硬盘安装RHEL 5(Red Hat Enterprise
·Vim实用技术第一部分:实用技巧
·Vmware Workstation 5.0.0使用说明
·VM中Linux虚拟机下安装VMware Tools
·新手看招:调试工具GDB基本知识全接触
·Gentoo版Linux操作系统的前世今生
·Linux进程间通信:管道及有名管道
·如何在Linux/FreeBSD下玩模拟器游戏
·探索Linux 操作系统内存模型和管理
·Linux系统中用ALSA驱动声卡流程详解
·并不绝对安全:Linux下安全十二法则
·Linux创建文件及挂载系统流程详解
·将Linux代码移植到Windows的简单方法
网摘收藏: