|
我在想CF卡上抑制系统时候出现问题,请求大虾帮助!
问题是这样的!
我要做一个CF卡上的linux系统,要求开机引导后就可以运行应用程序!
我的应用程序是叫hello,在终端打印hello,world!
我现在是这样做的!
第一阶段:制作CF卡上的LINUX系统
环境:redhat linux 9.0 工具:CF卡和CF卡读卡器(对系统来说相当于USB设备,就是/dev/sda)
制作步骤:
1. 将CF卡分一个区,并格式化为ext2文件系统,然后mount在/mnt/usb 上,
2. 然后准备根文件系统!我用busybox工具,首先将busybox-1.00下载并静态编译!得到一个_install目录
目录里面有/sbin /bin /usr 目录 和一个连接文件 linuxrc。我将这些目录和文件拷贝到CF上,
即:cp -a /_install/* /mnt/usb
3. 然后建立其它文件系统录: /dev /etc /etc/rc.d /lib /proc /tmp /var /mnt /boot /boot/grub
然后在/dev 下建立 console tty tty1 ttyS0 ttyS1 null ram0 hda hda1 hdb hdb1 hdc hdc1 sda sda1
在/lib 下 拷入hello程序需要使用的共享库libc-2.3.2.so ld-2.3.2.so libdl-2.3.2.so等
在/etc 下建立一些需要的脚本文件,rc.sysinit, inittab, fstab
其中:inittab内容如下:
id:2:initdefaults:
si::sysinit:/etc/rc.d/rc.sysinit
::askfirst:/bin/bash
rc.sysinit内容如下:
#!/bin/bash
umount -a
mount -a
fstab内容如下:
/dev/sda1 / ext2 defaults 1 1
none /proc proc defaults 0 0
4. 建立initrd.img 我直接将redhat 9.0 /boot下的initrd-2.4.20-8.img 拷过!
5.将redhat /boot下的vmlinuz-2.4.20-8内核拷到 /boot 下
6. 这样文件系统全部完成了!
第二阶段: 引导系统
工具: grub 作为bootloader
步骤: 首先将 /boot/grub 目录下的 stage1 stage2 拷贝到 CF卡上/boot/grub目录下面
然后运行grub程序!
grub > root (hd1,0)
grub > setup (hd1)
grub > quit
成功装如grub ,然后在/boot/grub目录下建立grub.conf脚本文件
default=0
timeout=10
title CFlinux
root (hd0,0)
kernel /boot/vmlinuz-2.4.20-8 ro /dev/sda1
initrd /boot/initrd-2.4.20-8.img
然后开机,设定从USB启动, grub可以正确引导,不过系统报错: init can't find !我的busybox是静态编译的!
请帮我看看,我的操作步骤对不对,根文件系统是不是这样建立的!给点建议给我!万分感谢! |
|