文件系统的移植(三):ramdisk文件系统的移植

内 核 版 本: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

         显示目录结果同移植(一)。

         ky-ramdisk.bin为编译好的内核。   

3、制作映像文件

       [lingyun@localhost keyue]$ dd if=/dev/zero of=ramdisk bs=1M count=16

       注: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

       烧录的过程省略,结果如下:

       至此,文件系统已经烧入开发板,可以看到自己制作的文件系统。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值