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填充)。
后来看资料中说要利用软盘并输入命令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填充)。
相关文章推荐
- Makefile方法编译Linux下多文件工程
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法(转)
- Linux修改fstab文件后 系统无法启动的解决方法
- Linux 下 Eclipse编译找不到so库文件的解决方法
- arm-linux-gcc编译生成的文件通过SD卡烧写到开发板上的方法
- Linux下GNU多文件编译方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- 通过dmesg分析linux的启动过程,几种放入dmesg文件的方法
- Lua在 linux下源码编译问题之readline/readline.h:没有那个文件或目录解决方法
- 安装交叉编译工具,执行arm-linux-gcc –v命令出现提示找不到该文件或目录?解决方法
- linux多文件编译方法
- 在linux内核文件中添加自己的驱动,添加自己的linux驱动,编译自己的linux驱动程序方法和例子图文
- 在Linux/Solaris上,将c文件编译成dll文件的方法
- linux库文件的搜索方法,以及交叉编译的库搜索方法
- linux 下制作可启动 img/iso 文件的方法
- linux0.01编译,制作启动软盘
- linux平台上image文件挂载的方法
- LINUX 2.6 内核下多C文件模块编译方法
- linux库文件的搜索方法,以及交叉编译的库搜索方法