OK-2440-III文件系统移植--busybox+mdev
Busybox版本:busybox1.1.3
编译工具:arm-linux-3.3.2
目标板:FLOK-2440-III
编译平台:redhat9
一、配置安装busybox
1.配置busybox:
# make menuconfig
Busybox Settings
General Configuration
Support for devfs
Build Options
Build with Large File Support(for accessing files 2GB)
Do you want to build Busybox with a Cross Compiler?
(/usr/local/arm/3.3.2/bin/arm-linux-)Cross Compiler prefix
//上面的选项用来指定编译工具,我刚开始没有选择这个选项,结果编译出文件系统下到开发板上运行,串口打印信息为:
大家可以试试。
Init Utilities init Support reading an inittab file Be _extra_ quiet on boot Support running init from within an initrd (not initramfs) poweroff, halt, and reboot mesg
Shells
Choose your default shell (ash)
(X) ash
()hush
()lash
()nsh
()none
--- ash
--- Ash Shell Options
--- Bourne Shell Options
[ ]
Hide message on interactive shell startup
[ ]
Standalone shell
command line editing
vi-style line editing commands
(15) history size
history saving
tab completion
username completion
[ ]
Fancy shell prompts
Coreutils
cp
cat
ls
mkdir
echo (basic SuSv3 version taking no options)
env
mv
pwd
rm
touch
Editors
vi
Linux System Utilities mdev //不选这个启动不起来系统,大家可以去掉试试看有什么现象 Support /etc/mdev.conf mount
umount
Support loopback mounts
Support for the old /etc/mtab file
Linux Module Utilities---
insmod
rmmod
lsmod
lsmod pretty output for 2.6.x Linux kernels
modprobe
Multiple options parsing
--- Options common to multiple modutils
Support tainted module checking with new kernels
[ ]
Support version 2.2.x to 2.4.x Linux kernels //此项一定不要选!!!
Support version 2.6.x Linux kernels
Networking Utilities
ifconfig
ping
Archival Utilities---
tar
Enable archive creation (NEW)
Enable -j option to handle .tar.bz2 files
现在配置完成,保存退出之后,执行:make 编译
# make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux-
成功编译完成后执行make install安装
# make install
这样就在busybox1.1.3目录下产生_install文件夹,里面就是编译好的文件系统。
2、创建根文件系统目录
要创建的目录有:bin sbin dev etc lib home root usr var proc mnt tmp sys
可以先创建一个目录比如/usr/src/rootfs,然后进入该目录,创建以上目录。
# cd /usr/src/
# mkdir rootfs
# cd rootfs
# mkdir bin sbin dev etc lib home root usr var proc mnt tmp sys
目录创建好之后把busybox生成的_install目录里那些都复制过来。
接下来我们要在etc目录下创建两个文件和一个文件夹,两个文件分别为fstab和inittab,文件夹为init.d。
(1)
# cd etc
# vi fstab
fstab的内容是:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
文 件/etc/fstab用来定义文件系统的“静态信息”,这些信息被用来控制mount命令的行为。
(2)
# vi inittab
inittab的内容是:
#/etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh 如果不使用mdev则s3c2410_serial0改ttySAC0
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
(3)
# mkdir init.d
# cd init.d
# vi rcS
init.d\rcS文件的内容:
#!/bin/sh
ifconfig eth0 192.168.1.17
mount -t tmpfs mdev /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts
mount -t sysfs sysfs /sys
mount -a
echo /sbin/mdev /proc/sys/kernel/hotplug
mdev –s
echo My first rootfs
将rcS文件的属性改成可执行的,这一步很重要,必须改。
# chmod 775 etc/init.d/rcS
(4)我在配置busybox的时候用的是动态库,,所以要把/usr/local/arm/3.4.1/arm-linux/lib下面的3个库文件和一个加载器拷贝到/filesystem_install/lib下:ld-2.3.2.so ld-linux.so.2 libc.so.6libcrypt.so.1libm.so.6
(5)在/usr、src/rootfs/dev下建立设备节点:
Console null
# sudo mknod console c 5 1
# sudo mknod null c 1 3
到此为止,必要的文件已经建立好了,现在要生成yaffs文件系统。
我们用光盘里带的mkyaffs2image工具来生成。将其解压拷贝到主机的/bin目录下即可。转到建立的那个/rootfs目录的上一级,也就是/usr/src目录,然后执行:mkyaffs2image rootfs rootfs.yaffs 就可以生成文件系统镜像了,将rootfs.yaffs烧进板子,当看到My first rootfs Please press Enter to activate this console.就表明你成功了!!!
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我的也成功了,不过也看一看看这个。
我的停在:
VFS: Mounted root (yaffs filesystem).
Mounted devfs on /dev
Freeing init memory: 160K
不走了
按回车还能换行
回复 9# yaoyulian
你的rcS文件写的对吗?
我的板子是OK2440IV,它提供的文件系统是qte_yaffs.tar.bz2,解压,用mkyaffs2image 工具来制作文件系统:./mkyaffs2image qte_yaffs qte.yaffs 0
我不知道是不是就不需要在使用busybox制作了。如果要将应用程序烧进去,是不是只需要放到bin下烧写即可。望指教!!
。。。。。。。。。。
回复 13# gyzwl
板子理带的那个qte。。。的文件系统是带GUI的文件系统,这个是最简单的文件系统,不是用不用的问题,学会做文件系统是学习的一部分,这是个过程,也是学好这个必经的过程
先攒钱,,,,
回复 16# yongma62
想问一下lz,不带GUI的文件系统启动后是什么样子?黑屏吗?
飞凌提供的qte_yaffs文件系统是否可以运行其他GUI程序,如minigui?
楼主脑残么,发个制作文件系统的帖子有必要要那么多金币么
你自己之所以能弄成功,不也是前辈们辛苦摸索,总结出来的经验么
无聊
购买了就没有金币了。。。穷哦。。。。
楼主,问个问题。我按照你的做法试了一下。不过出现如下问题:
Starting pid 378, console /dev/tts/0: '/etc/init.d/rcS'
Bummer, could not run '/etc/init.d/rcS': No such file or direct
请问是什么问题呢?
飞凌OK-2440-III文件系统移植--busybox+mdev
Busybox版本:busybox1.1.3
编译工具:arm-linux-3.3.2
目标板:飞凌OK-2440-III
编译平台:redhat9
一、配置安装busybox
1.配置busybox:
# make menuconfig
Busybox Settings
General Configuration
Support for devfs
Build Options
Build with Large File Support(for accessing files 2GB)
Do you want to build Busybox with a Cross Compiler?
(/usr/local/arm/3.3.2/bin/arm-linux-)Cross Compiler prefix
//上面的选项用来指定编译工具,我刚开始没有选择这个选项,结果编译出文件系统下到开发板上运行,串口打印信息为:
大家可以试试。
Init Utilities
init
Support reading an inittab file
Be _extra_ quiet on boot
Support running init from within an initrd (not initramfs)
poweroff, halt, and reboot
mesg
Shells
Choose your default shell (ash)
(X) ash
()hush
()lash
()nsh
()none
--- ash
--- Ash Shell Options
--- Bourne Shell Options
[ ]
Hide message on interactive shell startup
[ ]
Standalone shell
command line editing
vi-style line editing commands
(15) history size
history saving
tab completion
username completion
[ ]
Fancy shell prompts
Coreutils
cp
cat
ls
mkdir
echo (basic SuSv3 version taking no options)
env
mv
pwd
rm
touch
Editors
vi
Linux System Utilities
mdev //不选这个启动不起来系统,大家可以去掉试试看有什么现象
Support /etc/mdev.conf
mount
umount
Support loopback mounts
Support for the old /etc/mtab file
Linux Module Utilities---
insmod
rmmod
lsmod
lsmod pretty output for 2.6.x Linux kernels
modprobe
Multiple options parsing
--- Options common to multiple modutils
Support tainted module checking with new kernels
[ ]
Support version 2.2.x to 2.4.x Linux kernels //此项一定不要选!!!
Support version 2.6.x Linux kernels
Networking Utilities
ifconfig
ping
Archival Utilities---
tar
Enable archive creation (NEW)
Enable -j option to handle .tar.bz2 files
现在配置完成,保存退出之后,执行:make 编译
# make ARCH=arm CROSS_COMPILE=/usr/local/arm/3.3.2/bin/arm-linux-
成功编译完成后执行make install安装
# make install
这样就在busybox1.1.3目录下产生_install文件夹,里面就是编译好的文件系统。
2、创建根文件系统目录
要创建的目录有:bin sbin dev etc lib home root usr var proc mnt tmp sys
可以先创建一个目录比如/usr/src/rootfs,然后进入该目录,创建以上目录。
# cd /usr/src/
# mkdir rootfs
# cd rootfs
# mkdir bin sbin dev etc lib home root usr var proc mnt tmp sys
目录创建好之后把busybox生成的_install目录里那些都复制过来。
接下来我们要在etc目录下创建两个文件和一个文件夹,两个文件分别为fstab和inittab,文件夹为init.d。
(1)
# cd etc
# vi fstab
fstab的内容是:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
文 件/etc/fstab用来定义文件系统的“静态信息”,这些信息被用来控制mount命令的行为。
(2)
# vi inittab
inittab的内容是:
#/etc/inittab
::sysinit:/etc/init.d/rcS
s3c2410_serial0::askfirst:-/bin/sh 如果不使用mdev则s3c2410_serial0改ttySAC0
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
(3)
# mkdir init.d
# cd init.d
# vi rcS
init.d\rcS文件的内容:
#!/bin/sh
ifconfig eth0 192.168.1.17
mount -t tmpfs mdev /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts
mount -t sysfs sysfs /sys
mount -a
echo /sbin/mdev /proc/sys/kernel/hotplug
mdev –s
echo My first rootfs
将rcS文件的属性改成可执行的,这一步很重要,必须改。
# chmod 775 etc/init.d/rcS
(4)我在配置busybox的时候用的是动态库,,所以要把/usr/local/arm/3.4.1/arm-linux/lib下面的3个库文件和一个加载器拷贝到/filesystem_install/lib下:ld-2.3.2.so ld-linux.so.2 libc.so.6libcrypt.so.1libm.so.6
(5)在/usr、src/rootfs/dev下建立设备节点:
Console null
# sudo mknod console c 5 1
# sudo mknod null c 1 3
到此为止,必要的文件已经建立好了,现在要生成yaffs文件系统。
我们用光盘里带的mkyaffs2image工具来生成。将其解压拷贝到主机的/bin目录下即可。转到建立的那个/rootfs目录的上一级,也就是/usr/src目录,然后执行:mkyaffs2image rootfs rootfs.yaffs 就可以生成文件系统镜像了,将rootfs.yaffs烧进板子,当看到My first rootfs Please press Enter to activate this console.就表明你成功了!!!
请教楼主:在配置好busybox后,出现如下问题:
[root@localhost busybox-1.1.3]# make
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc: 没有那个文件或目录
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc: 没有那个文件或目录
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc: 没有那个文件或目录
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-ld: 没有那个文件或目录
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc: 没有那个文件或目录
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc: 没有那个文件或目录
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc: 没有那个文件或目录
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-ld: 没有那个文件或目录
GEN include/bbconfigopts.h
GEN .depend
CC applets/applets.o
/bin/sh: line 1: /usr/i386-linux-uclibc/bin/i386-uclibc-gcc: 没有那个文件或目录
make[1]: *** [/tmp/gaoyg/busybox-1.1.3/busybox-1.1.3/applets/applets.o]
Error 127
make: *** [_all]
Error 2
不知道问题出在哪了,该如何解决呢?请多指教,不胜感激。
“(4)我在配置busybox的时候用的是动态库,,所以要把/usr/local/arm/3.4.1/arm-linux/lib下面的3个库文件和一个加载器拷贝到/filesystem_install/lib下:ld-2.3.2.so ld-linux.so.2 libc.so.6libcrypt.so.1libm.so.6
”
请问这一步里面的库文件和加载器应该是/usr/local/arm/3.3.2/arm-linux/lib 吧?
然后是拷到我们自己创建的文件系统目录里面的lib文件夹下吧?也就是/usr/src/rootfs/lib
如果是的话,我的怎么到这一步就卡住了
VFS: Mounted root (yaffs filesystem).
Freeing init memory: 132K
/linuxrc: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Kernel panic - not syncing: Attempted to kill init!
请楼主给解释一下,如果可以,能把你创建的文件系统的目录,就是/usr/src/rootfs这个文件夹打包发给我看看吗?不胜感激啊!!596468834@qq.com
回复 1# yongma62
感谢分享!
请教楼主:我按资料说的方法制作文件系统,结果在运行后出现如下错误:
Failed to execute /linuxrc.Attempting defaults...
Kernel panic - not syncing: No init found.Try passing init= option to kernel.
是怎么回事呢?帮忙解决下。。非常感谢。
楼主,你好。为什么你用ARM-LINUX-3.3.2动态编译BUSYBOX1.1.3,那为什么要把/3.4.1/arm-linux/lib拷到/filesystem_install/lib下呢。而不拷/3.3.2/arm-linux/lib的库呢?
适合飞凌的所有的开发板不?
我OK6410的说
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
我没有钱啊,怎么办 郁闷了……………………………………
先攒钱,,,,
看看,,学些
挺他妈垃圾一个人,搞个文件系统还要钱,你他妈也就是这个水平了。
非常感谢。。。。。。。。。。。。。。。。。。。。。
回复 12# yongma62
rc.S文件的作用是什么?
学习学习,谢谢分享!
看不太懂啊,这样重新制作busybox后就可以ping域名了吗?
没钱了,呜呜。。。。。
呜呜,没钱真可怜
楼主可以免费发放不,邮箱526216967@qq.com,跪求
看看自己有多多多多多多多多多多多多多多少钱
为了大家以后方便下载,特意改成免费,祝大家赶快学习好嵌入式系统 |