您的位置:首页 > 运维架构 > Linux

linux0.01编译出的Image核心文件的启动方法

2016-08-21 00:11 615 查看
看了几天的linux0.01的资料,前天终于编译出来了Image文件,这个文件可以用来启动bochs虚拟机。但问题是直接把Image加到bochssrc.txt中没有成功。

后来看资料中说要利用软盘并输入命令make disk来把Image写入到软盘中。这本书是2004年出版的。现在2016哪里还有软盘呢。后来记得linux 的 dd命令可以制作img文件。折腾了好长时间才弄明白。其实我就是差一个参数就不用折腾这么久了。

正因为如此,我把过程记录下来,以后说不定能帮到大家。

编译linux0.01的过程省略。我们得到Image文件后。可以在bochs的目录中找到bximage这个命令。这个命令也可以在linux下单独安装。运行此命令后,一切按默认的设置会生成一个a.img的文件。这是一个1.44的软盘镜像。但里面什么都没有。

关键的地方来了:

dd if=./Image of=./a.img bs=512 conv=notrunc

后面这个参数是不截断a.img文件。这样才是一个完整的软盘镜像文件啊。bochs才能识别出来。把他加入到bochssrc.txt中。加载起来吧。

此外,还要注意bochssrc.txt中相关启动设备的参数,比如说:ata0-master: type=disk, path="c.img", cylinders=20, heads=16, spt=63后面这几个参数要和生成的c.img要对应。

这个c.img是硬盘的镜像,在利用bximage生成c.img时,有相关的参数提示。大家按需要改即可。生成过程中的部分输入信息如下:

Please type flat, sparse or growing. [flat] 

Enter the hard disk size in megabytes, between 1 and 129023

[10] 

I will create a 'flat' hard disk image with

  cyl=20

  heads=16

  sectors per track=63

  total sectors=20160

  total size=9.84 megabytes

What should I name the image?

[c.img] 

上面的参数就是这个镜像文件的硬盘参数了。

附上dd的说明:

dd指令使用 

语法格式

dd   [option] 

dd指令选项详解

if=file:输入文件名,缺省为标准输入

of=file:输出文件名,缺省为标准输出

ibs=bytes:一次读入 bytes 个字节(即一个块大小为 bytes 个字节)

obs=bytes:一次写 bytes 个字节(即一个块大小为 bytes 个字节)

bs=bytes:同时设置读写块的大小为 bytes ,可代替 ibs 和 obs

cbs=bytes:一次转换 bytes 个字节,即转换缓冲区大小

skip=blocks:从输入文件开头跳过 blocks 个块后再开始复制

seek=blocks:从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)

count=blocks:仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数

conv=ASCII:把EBCDIC码转换为ASCIl码。 

conv=ebcdic:把ASCIl码转换为EBCDIC码。 

conv=ibm:把ASCIl码转换为alternate EBCDIC码。 

conv=block:把变动位转换成固定字符。 

conv=ublock:把固定位转换成变动位。 

conv=ucase:把字母由小写转换为大写。 

conv=lcase:把字母由大写转换为小写。 

conv=notrunc:不截短输出文件。 

conv=swab:交换每一对输入字节。 

conv=noerror:出错时不停止处理。 

conv=sync:把每个输入记录的大小都调到ibs的大小(用NUL填充)。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: