移植3.4.2linux kernel到jz2440开发板之二---修改分区并制作根文件系统

先给自己打个广告,本人的微信公众号正式上线了,搜索:张笑生的地盘,主要关注嵌入式软件开发,股票基金定投,足球等等,希望大家多多关注,有问题可以直接留言给我,一定尽心尽力回答大家的问题
在这里插入图片描述
本系列文章还是为了记录在学习韦东山老师的嵌入式开发教程中的课程笔记,并整理一个比较详细的课堂笔记,方便一起学习的同学们参考。
如果还没有购买韦老师的教学视频,或者不知道去哪里购买的,我这里给大家一个小程序链接
在这里插入图片描述
在这里插入图片描述
分享好视频资源后,我们开始今天的正式内容,话不多说,直接开始今天的修改步骤

  1. 修改文件 G:\source_code\linux-3.4.2\arch\arm\mach-s3c24xx\common-smdk.c 中的结构体smdk_default_nand_part
static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
            .name	= "bootloader",
            .size	= SZ_256K,
            .offset	= 0,
        },
        [1] = {
            .name	= "params",
            .offset = MTDPART_OFS_APPEND,
            .size	= SZ_128K,
        },
        [2] = {
            .name	= "kernel",
            .offset = MTDPART_OFS_APPEND,
            .size	= SZ_2M,
        },
        [3] = {
            .name	= "rootfs",
            .offset	= MTDPART_OFS_APPEND,
            .size	= MTDPART_SIZ_FULL,
        }
    };
  1. 同时修改G:\source_code\linux-3.4.2\arch\arm\mach-s3c24xx\mach-mini2440.c中的结构体 mini2440_default_nand_part,保证和第1步中的一致
static struct mtd_partition mini2440_default_nand_part[] __initdata = {
        [0] = {
            .name	= "bootloader",
            .size	= SZ_256K,
            .offset	= 0,
        },
        [1] = {
            .name	= "params",
            .offset = MTDPART_OFS_APPEND,
            .size	= SZ_128K,
        },
        [2] = {
            .name	= "kernel",
            .offset = MTDPART_OFS_APPEND,
            .size	= SZ_2M,
        },
        [3] = {
            .name	= "rootfs",
            .offset	= MTDPART_OFS_APPEND,
            .size	= MTDPART_SIZ_FULL,
        }
    };
  1. 上面两步移植好之后,可以正确启动kernel了,但是有一串打印,发现是无法启动根文件系统,打印如下,表示文件系统不支持
    在这里插入图片描述
  2. 我们尝试烧写一个之前的yaffs2文件系统
	nfs 30000000 192.168.0.106:/work/nfs_root/fs_mini_mdev.yaffs2
    nand erase.part rootfs
    nand write.yaffs 30000000 260000 889bc0
    
	nfs 32000000 192.168.0.106:/work/nfs_root/uImage_new
    bootm 32000000

执行完之后,打印提示不支持yaffs2文件系统
5. 我们尝试使用之前的jffs2文件系统

    nfs 30000000 192.168.0.106:/work/nfs_root/fs_mini_mdev.jffs2
    nand erase.part rootfs
    nand write.jffs2 30000000 260000 $filesize
    set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2

    nfs 32000000 192.168.0.106:/work/nfs_root/uImage_new
    bootm 32000000

仍然无法启动jffs2文件系统,说明我们需要制作新的文件系统jffs2
6. 制作根文件系统,重新编译busybox,用哪个编译器编译内核,就用哪个编译器编译busybox,make menuconfig 需要修改交叉编译器前缀名
7. 创建一个新目录,用于安装新的busybox

mkdir /work/nfs_root/fs_mini_mdev_new
  1. 安装busybox
make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_new
  1. 安装库,在/work/nfs_root/fs_mini_mdev_new 创建目录
	mkdir /work/nfs_root/fs_mini_mdev_new/lib
    mkdir /work/nfs_root/fs_mini_mdev_new/usr/lib -p

先确定库在哪里,我们可以查看交叉工具链 echo $PATH,进入到交叉编译器的目录

cd /work/tools/usr/local/arm/4.3.2/bin
cd ..
find -name lib

拷贝库到相关文件系统目录

   cp /work/tools/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/*so* /work/nfs_root/fs_mini_mdev_new/lib -d
   cp /work/tools/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/*so* /work/nfs_root/fs_mini_mdev_new/usr/lib -d
  1. 构建相关目录
cp first_fs/etc fs_mini_mdev_new -rf
mkdir /work/nfs_root/fs_mini_mdev_new/dev

创建两个设备节点,创建之前可以先看一下这两个节点的设备号

ls -l /dev/console /dev/null
cd /work/nfs_root/fs_mini_mdev_new
sudo mknod dev/console c 5 1
sudo mknod dev/null c 1 3
  1. 制作文件系统
cd /work/nfs_root
mkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_mdev_new -o fs_mini_mdev_new.jffs2
  1. 烧写新的文件系统
   nfs 30000000 192.168.0.109:/work/nfs_root/fs_mini_mdev_new.jffs2
   nand erase.part rootfs
   nand write.jffs2 30000000 260000 $filesize
   set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2

   nfs 32000000 192.168.0.109:/work/nfs_root/uImage_new
   bootm 32000000

启动完成之后,还是无法进入根文件系统,这是因为我们的busybox支持EABI,但是之前编译的内核却不支持,因此我们需要重新编译内核,支持EABI
13. 重新配置内核支持EABI
在这里插入图片描述

   set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
   nfs 32000000 192.168.0.109:/work/nfs_root/uImage_eabi
   bootm 32000000
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值