找回密码
 立即注册
Qt开源社区 门户 查看内容

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

2019-9-5 08:44| 发布者: admin| 查看: 698| 评论: 0

摘要: 本系列文章还是为了记录在学习韦东山老师的嵌入式开发教程中的课程笔记,并整理一个比较详细的课堂笔记,方便一起学习的同学们参考。如果还没有购买韦老师的教学视频,或者不知道去哪里购买的,我这里给大家一个小程 ...
本系列文章还是为了记录在学习韦东山老师的嵌入式开发教程中的课程笔记,并整理一个比较详细的课堂笔记,方便一起学习的同学们参考。

如果还没有购买韦老师的教学视频,或者不知道去哪里购买的,我这里给大家一个小程序链接





分享好视频资源后,我们开始今天的正式内容,话不多说,直接开始今天的修改步骤

  1. 修改文件 G:\source_code\linux-3.4.2\arch\arm\mach-s3c24xx\common-smdk.c 中的结构体smdk_default_nand_part
      staticstruct 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, }};

    • 同时修改G:\source_code\linux-3.4.2\arch\arm\mach-s3c24xx\mach-mini2440.c中的结构体 mini2440_default_nand_part,保证和第1步中的一致
        staticstruct 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, }};

      • 上面两步移植好之后,可以正确启动kernel了,但是有一串打印,发现是无法启动根文件系统,打印如下,表示文件系统不支持




      • 我们尝试烧写一个之前的yaffs2文件系统

        执行完之后,打印提示不支持yaffs2文件系统

          nfs 30000000 192.168.0.106:/work/nfs_root/fs_mini_mdev.yaffs2nand erase.part rootfsnand write.yaffs 30000000260000889bc0nfs 32000000192.168.0.106:/work/nfs_root/uImage_newbootm 32000000

        • 我们尝试使用之前的jffs2文件系统

          仍然无法启动jffs2文件系统,说明我们需要制作新的文件系统jffs2

            nfs 30000000 192.168.0.106:/work/nfs_root/fs_mini_mdev.jffs2nand erase.part rootfsnand write.jffs2 30000000260000 $filesizeset bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
            nfs 32000000192.168.0.106:/work/nfs_root/uImage_newbootm 32000000

          • 制作根文件系统,重新编译busybox,用哪个编译器编译内核,就用哪个编译器编译busybox,make menuconfig 需要修改交叉编译器前缀名

          • 创建一个新目录,用于安装新的busybox
              mkdir /work/nfs_root/fs_mini_mdev_new

            • 安装busybox
                make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_new

              • 安装库,在/work/nfs_root/fs_mini_mdev_new 创建目录
                  mkdir /work/nfs_root/fs_mini_mdev_new/libmkdir /work/nfs_root/fs_mini_mdev_new/usr/lib -p

                先确定库在哪里,我们可以查看交叉工具链 echo $PATH,进入到交叉编译器的目录
                  cd /work/tools/usr/local/arm/4.3.2/bincd ..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 -dcp /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
                    10. 构建相关目录

                      cpfirst_fs/etc fs_mini_mdev_new -rfmkdir/work/nfs_root/fs_mini_mdev_new/dev
                      创建两个设备节点,创建之前可以先看一下这两个节点的设备号

                        ls -l /dev/console /dev/nullcd /work/nfs_root/fs_mini_mdev_newsudo mknod dev/console c 51sudo mknod dev/null c 13
                        11. 制作文件系统

                          cd /work/nfs_rootmkfs.jffs2 -n -s 2048 -e 128KiB -d fs_mini_mdev_new -o fs_mini_mdev_new.jffs2
                          12. 烧写新的文件系统
                            nfs 30000000192.168.0.109:/work/nfs_root/fs_mini_mdev_new.jffs2 nand erase.part rootfs nand write.jffs2 30000000260000 $filesize set bootargs console=ttySAC0,115200 root=/dev/mtdblock3 rootfstype=jffs2
                            nfs 32000000192.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 32000000192.168.0.109:/work/nfs_root/uImage_eabi bootm 32000000

                              ----------------------------------------------------------------------------------------------------------------------
                              我们尊重原创,也注重分享,文章来源于微信公众号:张笑生的地盘,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
                              ----------------------------------------------------------------------------------------------------------------------

                              鲜花

                              握手

                              雷人

                              路过

                              鸡蛋
                              
                              公告
                              可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了