全部博文(252)
分类: 嵌入式
2010-04-20 17:31:47
|
|
此时进入 linux-2.6.32.2/fs 目录,可以看到已经多了一个 yaffs2 目录。
上面命令完成下面三件事情:
(1) 修改内核fs/Kconfig
增加一行:source "fs/yaffs2/Kconfig"
(2) 修改内核fs/Kconfig
增加一行:ojb-$(CONFIG_YAFFS_FS) +=yaffs2/
(3) 在内核fs/目录下创建yaffs2目录
将yaffs2源码目录下面的Makefile.kernel文件复制为内核fs/yaffs2/Makefie;
将yaffs2 源码目录的Kconfig文件复制到内核fs/yaffs2目录下;
将yaffs2源码目录下的*.c *.h文件复制到内核fs/yaffs2目录下.
6、配置内核以支持Yaffs2文件系统
在 Linux内核源代码根目录运行:make xconfig,找到 File Systems如图,再找到“Miscellaneous filesystems”菜单项,找到“YAFFS2 file system support” ,并选中它,这样我们就在内核中添加了yaffs2 文件系统的支持,保存退出。然后在命令行中,执行make zImage,这时不要在执行mage mini2440_defconfig 了,如果再执行的话,前面的配置就失效了,在这我也犯了一个低级的错误。
二、 构建根文件系统
1、根文件系统的目录结构
bin 存放所有用户都可以使用的、基本的命令。
sbin 存放的是基本的系统命令,它们用于启动系统、修复系统等。
usr 里面存放的是共享、只读的程序和数据。
proc 这是个空目录,常作为proc文件系统的挂载点。
dev 该目录存放设备文件和其它特殊文件。
etc 存放系统配置文件,包括启动文件。
lib 存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序。
boot 引导加载程序使用的静态文件
home 用户主目录,包括供服务账号锁使用的主目录,如FTP
mnt 用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。
opt 给主机额外安装软件所摆放的目录。
root root用户的主目录
tmp 存放临时文件,通常是空目录。
var 存放可变的数据。
2、建立根文件系统的目录,
进入opt/kernel,创建一个shell的脚本用于构建根文件系统的各个目录。create_rootfs_bash,平且改变执行的权限。
|
|
|
配置busybox,在busybox-1.13.3目录下,这里我们只关心改动的地方。执行make xconfig,其各个选项的配置界面如下。
下图配置Linux Modeul Utilities
3、在busybox中配置对dev下设备类型的支持
dev的创建有三种方法:
(1)手动创建:在制作根文件系统的时候,就在 dev目录下创建好要使用的设备文件,系统
挂接根文件系统后,就可以使用 dev目录下的设备文件了。
(2)使用 devfs 文件系统:这种方法已经过时,具有不确定的设备映射、没有足够的主/次设备号、devfs 消耗大量的内存。
(3)udev:它是个用户程序,(u是指user space ,dev 是指device)能根据系统中硬件设备的状态动态的更新设备文件,包括设备文件的创建、删除等。使用udev机制也不需要/dev目录下创建设备节点,它需要一些用户程序的支持,并且内核要支持sysfs文件系统。它的操作相对复杂,但灵活性很高
mdev 是 busybox 自带的一个简化版的 udev,适合于嵌入式的应用埸合。其具有使用简
单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所
需的节点文件。在以busybox 为基础构建嵌入式linux 的根文件系统时,使用它是最优的选择。
下面的选项将增加对 mdev的支持。 4、编译busybox
编译 busybox 到指定目录:
cd /opt/kernel/busybox-1.13.3
make CONFIG_PREFIX=/opt/kernel/rootfs install
在 rootfs 目录下会生成目录 bin、sbin、usr 和文件 linuxrc 的内容。
5、 建立etc目录
init进程根据/etc/inittab文件来创建其他的子进程,比如调用脚本文件配置IP地址,挂载其他的文件系统,最后启动shell等。
(1)、拷贝主机 etc 目录下的passwd、group、shadow文件到 rootfs/etc目录下。
(2) etc/sysconfig目录下新建文件HOSTNAME,内容为”frank” 。
(3) etc/inittab文件:
仿照Busybox的examples/inittab文件,在etc/目录下创建一个inittab文件.开发板上通过mdev生成胡/dev目录中,S3C2440的串口名是s3c2410_serial0、
s3c2410_serial1、
s3c2410_serial2,而不是ttySAC0 ttySAC1 ttySAC2.
|
|
|
|
|
|
现在终于可以看到激动人心的下面这句话了,表明你有Linux系统已经可以正常的启动了。
|
chinaunix网友2011-01-04 16:31:29
你好,我现在可以挂载根文件系统,我想把Ubuntu中的文件使用ftp传输到mini2440中的某个文件目录中,可是我在mini2440的命令行中输入ftp,提示找不到该命令,是不是我的根文件系统没有加入ftp这个命令的相关文件啊?,如何修改,请高手帮忙?
chinaunix网友2010-12-29 12:24:19
我内核移植参考的你的博文,yaffs2根文件系统也是参考你这篇博文,但是出现问题是:Warning: unable to open an initial console. Failed to execute /linuxrc. Attempting defaults 我的板子是mini2440 128M的,我用的Ubuntu10.04 ,交叉编译工具为arm-linux-gcc-4.3.2 yaffs制作工具是mkyaffsimage-128M的,我的uboot分区为: 0-0x60000 为u-boot 0x60000-0x80000为参数 0x80000-0x580000 为内核0x580000以后为rootfs,我的内核nand分区跟这个一致, 请高手帮忙分析一下吧,我困扰了好长时间了
chinaunix网友2010-04-25 20:37:46
(3) 在内核fs/目录下创建yaffs2目录 将yaffs2源码目录下面的Makefile.kernel文件复制为内核fs/yaffs2/Makefie; 将yaffs2 源码目录的Kconfig文件复制到内核fs/yaffs2目录下; 将yaffs2源码目录下的*.c *.h文件复制到内核fs/yaffs2目录下. 請問你這裡的~ 在fs 目录,看到已经了一个yaffs2 目录了~ 為什麼要再fs/目录下创建yaffs2目录~ 你的(3)不懂~