1. 配置编译并安装busybox文件系统()
假设 pwd 得到 /timkyle-dev/techer/arm11-resources/
a.解压busybox包
#tar xf busybox-1.17.2.tar.bz2
得到busybox-1.17.2文件夹
b.编译busybox
#cd busybox-1.17.2
#make menuconfig
/Busybox Settings
/Build Options
/Build BusyBox as a static binary (no shared libs)
/(arm-none-linux-gnueabi-) Cross Compiler prefix
/Busybox Library Tuning
#make clean
#make
c.安装busybox文件系统
#make install
则文件系统安装在当前的_install文件夹下
d.拷贝整个文件系统到应该作为文件系统的文件夹
创建一个文件夹作为文件系统用
#mkdir -p /timkyle-dev/my/arm/newnfs
拷贝busybox制作出来的文件到自己的文件系统里
#cp ./_install/* /timkyle-dev/my/arm/newnfs/ -rf
2. 配置NFS服务
a.配置NFS服务允许访问的目录路径及权限
#vim /etc/exports
增加一行:
/timkyle-dev/my/arm/newnfs *(rw)
b.设置NFS服务开机即启动
#chkconfig --level 2345 nfs on
c.重启NFS服务
#service nfs restart
d.查看NFS服务是否启动成功
#chkconfig --list
结果如下:
nfs 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#showmount -e 192.168.1.10
结果如下:
Export list for 192.168.1.10:
/timkyle-dev/my/arm/newnfs *
e.修改文件系统文件夹的权限
#chmod 777 /timkyle-dev/my/arm/newnfs/
3. 配置u-boot给内核启动的参数
a.启动开发板进入u-boot状态,运行如下
配置内核启动参数
$setenv bootargs "root=/dev/nfs nfsroot=192.168.1.10:/disk2/newnfs ip=192.168.1.20 console=ttySAC0,115200"
保存配置
$saveenv
重启
$reset
最后停留在如下:
Freeing init memory: 140K
Warning: unable to open an initial console.
4. 完善文件系统
a.进入文件系统对应文件夹
#cd /timkyle-dev/my/arm/newnfs/
b.增加文件夹dev及创建控制台设备
#mkdir dev
控制台:字符设备,主设备号5,次设备号1
#mknod dev/console c 5 1
c.修改启动脚本
#mkdir -p etc/init.d
#mkdir -p sys/class
#vim etc/init.d/rcS
增加以下内容:
mount -t ramfs none /dev
mount -t sysfs none /sys
/sbin/mdev -s
#chmod 777 etc/init.d/rcS
#vim etc/profile
增加以下内容:
export PS1="root@timkyle \W#"
d.拷贝arm-linux-gcc程序用的库文件
#cp -rf /timkyle-dev/techer/arm11-resources/arm-4.3.2/arm-none-linux-gnueabi/libc/lib/ ../newnfs/
e.重启开发板,则能进入nfs文件系统
Please press Enter to activate this console.
看到上句后,直接按回车键即可进入NFS的文件系统
5. 打包文件系统
a.查看内核分区信息表
#vim /timkyle-dev/techer/arm11-resources/linux-2.6.28_smdk6410/arch/arm/plat-s3c/include/plat/partition.h
有如下信息:
struct mtd_partition s3c_partition_info[] = {
{
.name = "Bootloader",
.offset = 0,
.size = (256*SZ_1K),
.mask_flags = MTD_CAP_NANDFLASH,
},
{
.name = "Kernel",
.offset = (256*SZ_1K),
.size = (4*SZ_1M) - (256*SZ_1K),
.mask_flags = MTD_CAP_NANDFLASH,
},
#if defined(CONFIG_SPLIT_ROOT_FILESYSTEM)
{
.name = "Rootfs",
.offset = (4*SZ_1M),
.size = (80*SZ_1M),//(48*SZ_1M),
},
#endif
{
.name = "File System",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
}
};
b.在u-boot命令状态下
擦除nandflash
$nand erase 0x300000 0xfd00000
查看坏块信息
$nand bad
c.打包文件系统内容
#cd /timkyle-dev/my/arm/newnfs/
#tar cf nfs.tar *
得到nfs.tar压缩包
6. 把文件系统烧写进nandflash里(通过内核的mtd层)
a.通过开发板进入系统
Please press Enter to activate this console.
看到上句后,直接按回车键即可进入NFS的文件系统
b.通过mtd层把系统写到nandflash里
$mkdir /mnt
$mount -t yaffs /dev/mtdblock3 /mnt
7. 保存各种内核启动参数
a.保存内核启动参数(nfs系统)
$setenv nfsboot $bootargs
b.内核启动参数配置为nandflash系统
$setenv bootargs "root=/dev/mtdblock3 ip=192.168.1.20 console=ttySAC0,115200"
$setenv nandboot $bootargs
$saveenv
$reset
c.内核启动参数配置为nfs系统
$setenv bootargs $nfsboot
$saveenv
$reset
相关阅读:
嵌入式系统搭建之一U-Boot移植
嵌入式系统搭建之二内核移植