内 核 版 本:linux-3.0
u-boot版本:u-boot-2010.09
开发板型号:FL2440
1、对根文件系统进行修改
无修改
2、添加内核对 nfs 的支持
2.1、 在内核中为 256M 的nandflash 进行分区,修改文件arch/arm/plat-s3c24xx/common-smdk.c 中第 109 行开始处的代码如下:
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "mtdblock0 u-boot 1MB",
.size = SZ_1M*1,
.offset = 0,
},
[1] = {
.name = "mtdblock1 kernel 4MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*4,
},
[2] = {
.name = "mtdblock2 ramdisk 10MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*10,
},
[3] = {
.name = "mtdblock3 cramfs 15MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*15,
},
[4] = {
.name = "mtdblock3 jffs2 40MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*40,
},
[5] = {
.name = "mtdblock4 yaffs2 40MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*40,
},
[6] = {
.name = "mtdblock5 ubifs 40MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*40,
},
[7] = {
.name = "mtdblock6 info 1MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*1,
},
[8] = {
.name = "mtdblock7 apps 40MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*40,
},
[9] = {
.name = "mtdblock8 data 40MB",
.offset = MTDPART_OFS_NXTBLK,
.size = SZ_1M*40,
},
[10] = {
.name = "mtdblock9 backup 25MB",
.offset = MTDPART_OFS_NXTBLK,
.size = MTDPART_SIZ_FULL,
}
};
2、2 配置内核
[lingyun@localhost linux-3.0]$ vt100
[lingyun@localhost linux-3.0]$ make menuconfig
General setup --->
Device Drivers --->
Block devices --->
修改Makefile
[lingyun@localhost linux-3.0]$ vim Makefile
修改195、196行
[lingyun@localhost linux-3.0]$ make
编译过程省略
[lingyun@localhost linux-3.0]$ ls
显示目录结果同移植(一)。
3、制作映像文件
注:keyue为(一)中制作的rootfs_tree所在目录。
[lingyun@localhost keyue]$ ls
busybox-1.20.2 keyue ky-ramdisk.gz ky-rootfs.jffs2 mnt mtd-utiles rootfs_tree
kernel ky-nfs ky-rootfs.cramfs mkimage mtd rootfs.jffs2 ramdisk
注:因为 ramdisk 只是一个块设备,只有将其格式化为特定的文件系统后才能使用,我们将其格式化ext2 格式:
[lingyun@localhost keyue]$ mke2fs -F -v -m0 ramdisk
挂载 ramdisk,并拷贝制作好的根文件系统到mnt 目录下:
[lingyun@localhost keyue]$ mkdir mnt
[lingyun@localhost keyue]$ mount -o loop ramdisk mnt/
[lingyun@localhost keyue]$ mount | grep ramdisk
/home/lingyun/keyue/ramdisk on /home/lingyun/keyue//mnt type ext2 (rw,loop=/dev/loop0)
[lingyun@localhost keyue]$ ls mnt/
lost+found
[lingyun@localhost keyue]$ rm -rf mnt/*
[lingyun@localhost keyue]$ cp -af rootfs_tree/* mnt/
[lingyun@localhost keyue]$ ls mnt/
apps backup bin dev etc info init init.d issue lib linuxrc media mnt proc sbin sys tmp usr var
卸载并压缩 ramdisk 根文件系统Image:
[lingyun@localhost keyue]$ umount ramdisk
查看一下ramdisk的大小
[lingyun@localhost keyue]$ du -h ramdisk
16M ramdisk
[lingyun@localhost keyue]$ gzip ramdisk
我自己将生成的ramdisk.gz改为ky-ramdisk.gz,大家无需修改。
将其拷贝到 tftp 目录下:
[lingyun@localhost keyue]$ cp ky-ramdisk.gz /tftp/
至此映像文件制作完成。
4、将文件系统烧入开发板
4.1、设置启动参数
[u-boot@keyue]# set bkr 'tftp 30008000 ky-ramdisk.bin;nand erase 100000 800000;nand write 30008000 100000 800000'
[u-boot@keyue]# set brdfs 'tftp 30008000 ky-ramdisk.gz;nand erase 500000 a00000;nand write 30008000 500000 500000'
[u-boot@keyue]# set bootcmd_ramdisk 'nand read 30008000 100000 400000;nand read 30800000 500000 500000;bootm 30008000'
[u-boot@keyue]# set bootcmd 'run bootcmd_ramdisk'
[u-boot@keyue]# set bootargs 'console=ttyS0,115200 mem=64M initrd=0x30800000,16M root=/dev/ram0 rw loglevel=7'
[u-boot@keyue]# save
启动参数保存成功。
4.2、将文件系统与内核烧入开发板
[u-boot@keyue]# run bkr
[u-boot@keyue]# run brdfs
[u-boot@keyue]# boot
烧录的过程省略,结果如下:
至此,文件系统已经烧入开发板,可以看到自己制作的文件系统。