老问题:如何在嵌入式系统中做一个小的linux系统
这个问题在网上讨论了很多次了
应该是个老问题
但每个新手都会碰到
而且又各有不同
希望大家也能帮我个忙
我现在在做嵌入式系统,是x86结构的,用cf卡,我的做法是在嵌入式系统上挂一个40g硬盘(primary master)和cf卡(在secondery master上),先在40g硬盘上面装了一个rh linux7.3,然后把它本身的内核(vmlinxz-2.4.18-3)和一个网上下载的文件系统拷到cf卡上。
简单地做法如下:
1.fdisk /dev/hdc (后面会有一堆提示,不太记得,好像有command,选m会显示更多选项,还有p什么的)
2.mke2fs -L/ /dev/hdc1 (很多高手都建议我一定要这样做)
3.mount -t ext2 /dev/hdc1 /mnt/cf (事先在/mnt建立/cf目录)
4.把网上下载的文件系统拷到cf上,把内核(vmlinxz-2.4.18-3)拷到相应目录,还拷了硬盘上的/boot/boot.b,map和其他一些文件到cf上的相应目录
5.在cf卡的/下做一个lilo.conf,内容如下:
prompt
timeout=50
default=linux
boot=/dev/hda
disk=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
lba32
image=/boot/vmlinuz-2.4.18-3
label=linux
(没有使用initrd,因为没有scsi等设备)
read-only
root=/dev/hda1
image=/boot/vmlinuz-2.4.18-3
label=cf
read-only
root=/dev/hdc1
6. #lilo -C lilo.conf -r /mnt/cf
运行是成功的,显示(大致是):
add linux*
add cf
重启后,选cf进入
系统能开始运行一部分
INIT version 2.64 booting(这之前好像没有错误,由于屏幕不能显示全部,我也没记下很多)
hostname:myname
Enabling swapspace
load modules...
end of sysinit(我在/mnt/cf/etc/rc.d/rc.sysinit最后加了一句echo "end of sysinit",以确定 rc.sysinit是否执行完,不知我的做法是否正确)
然后就不走了
按下三个热键后:
INIT:Entering runlevel 4 (我在inittab里把它设为id:4:initdefault,因为硬盘上的linux系统也是
4)
INIT:switching to runlevel 6
INIT:no more processes left in this runlevel
再次按三个热键,还是显示,以后每次都是
INIT:switching to runlevel 6
INIT:no more processes left in this runlevel
其他一些cf系统上的文件的部分设置(普通的语句没写):
(1) fstab:
/dev/hdc1 ext2 default 1 1
(2) inittab:
屏蔽了
l0:1:wait:/etc/rc.d/rc.0
到
l6:6:wait:/etc/rc.d/rc.6
#Run gettys in stardard runlevels
也屏蔽了前三句和第六句
x:5:respawn:/etc/X11/prefdm -nodaemon (有/etc/X11/prefdm文件存在,我从硬盘上的linux里拷过 去的)
另:
运行# chroot /mnt/cf后是
#bash
能执行一些命令:vi,cp等
由于我是一个月前才开始接触linux,很多东西还没来得及学就要开始做,所以基础不是很好,在此之前有很多热心的网友给予了很大的帮助,但还是没有成功,在此对他们的帮助表示感谢!
各位给点意见和方法,做了一个多星期了,还没弄出来,真丢脸。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论