您的位置:首页 > 其它

RTEMS连载 (3) 启动镜像文件制作 (上)

2005-01-28 09:58 561 查看
作者 Ray
RTEMS版权所有,转载请注明:来源http://www.rtems.net,作者ray@rtems.net
摘要
本节介绍了如何制作软盘镜像文件,并且在镜像文件上面安装Grub,以测试编译好的RTEMS内核
为了测试编译好的镜像,我们可以在普通的 PC 机上面测试:
首先介绍如何编译 sample ,一般来说,生成系统库文件的时候就已经编译了 sample ,但是如果需要改动 smaple 或者自己写程序,需要设置下面的环境变量。(注意:下面很多命令需要root权限)
首先需要设置环境变量:
export RTEMS_MAKEFILE_PATH=<INSTALLATION_POINT>/<CPU>-rtems/<BOARD_SUPPORT_PACKAGE>
export RTEMS_MAKEFILE_PATH=/home/ray/embedded/rtems_build/i386-rtems/c/i386ex/make
然后编译需要测试的 sample
编译好的可执行文件将静态包含 rtems 的基本库,可以直接作为启动内核。
为了加载内核,还需要安装 grub
下面介绍如何使用 loop 设备制作启动的镜像。

Linux 平台:

首先产生空白的镜像文件:
#dd if=/dev/zero of=boot.img bs=1k count=1448
这个命令建立了一个软盘的镜像文件,大小为1.44M,然后将boot.img镜像文件和loop设备关联
#losetup /dev/loop0 boot.img
用ext2文件系统格式化镜像文件
mke2fs /dev/loop0
然后建立 ./fd0目录
#mount boot.img ./fd0 -o loop
将镜像文件 mount到/fd0目录下面 然后可以安装 grub了 首先下载 grub 0.95版本(可以使用已经编译好的i386二进制代码,也可用源代码包自己编译)。 产生的二进制文件中,要用到的是: stage1和stage2两个文件 安装的步骤将在下面介绍,最后安装完毕后使用下面的命令卸载 loop设备
#losetup -d /dev/loop0

BSD 平台:

注意,在 BSD中使用mdconfig或者vnconfig制作镜像文件,例如:
#dd if=/dev/zero of=boot.flp bs=1k count=1448
#mdconfig -a -t vnode -f boot.flp -u 0
#bsdlabel -w md0 auto
#newfs md0c
#mount /dev/md0c /mnt
使用上面的命令对 /mnt目录的操作就相当于对镜像文件的操作

grub 的安装


方法一:手动安装 grub

手动安装需要两个格式化好的软盘镜像文件, boot.img和rtems.img,第一个是grub的安装盘另外一个用存放rtems的文件系统。(实际上,用一个镜像文件也可以) 在第一个镜像文件中安装GRUB
# dd if= stage1 of= boot.img bs=512 count=1
# dd if= stage2 of= boot.img bs=512 seek=1
然后,将 stage1和stage2 这里 stage1 和 stage2是刚才生成的(或者下载的)i386 grub 制作 rtems.img的镜像文件:
# dd if=/dev/zero of=rtems.img bs=1k count=1448
# losetup /dev/loop0 rtems.img
# mke2fs /dev/loop0
把 stage1和stage2拷贝到rtems.img中, 然后使用制作好的第一张盘启动(VMWare的设置如下所示):

启动grub后进入命令行模式, 系统启动后有下面的界面显示:

然后使用 vmware断开软盘:如下图

然后,接下来更换软盘镜像为 rtems.img,重新选择镜像文件后,(菜单 VM -> Setting)再用vmware连接软盘(VM->Removable Devices->Floppy1 Connect) 然后使用然后使用下面的命令安装。
grub>install=(fd0)/stage1 (fd0) (fd0)/stage2 0x8000 (fd0)/grubmenu
这样就把 grub安装在镜像文件上了。 如果安装出现问题,一般会出现在软盘镜像文件的加载和设置上(镜像是否正确?是否断开? …… ) 然后将镜像文件加载到本地的 /fd0目录上面(注意,是自己建立的目录,不是/dev/fd0)
# mount rtems.img ./fd0 -o loop
所有工作做完后,最后卸载设备
# umount ./fd0
# losetup -d /dev/loop0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: