MDK3308-EK更改根文件系统为ext2

默认生成的根文件系统是只读的squashfs,不方便修改。想修改为ext2。前面三步都是参考《Rockchip Linux软件开发指南》

1、修改kernel的bootargs参数,文件位于 kernel/arch/arm64/boot/dts/rockchip/rk3308-evb-v10.dtsi

        compatible = "firefly,rk3308-firefly", "firefly,rk3308";
 
        chosen {
-               bootargs = "earlycon=uart8250,mmio32,0xff0c0000 swiotlb=1 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=squashfs rootwait";
+               bootargs = "earlycon=uart8250,mmio32,0xff0c0000 swiotlb=1 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext2 rootwait";
        };
 
        adc-keys {

2、修改 device/rockchip/rk3308/rockimg/对应的 parameter 文件,确保 rootfs 分区大小足够存放分区镜像。默认 0x00040000@0x0002E800(rootfs) ,前面是扇区个数,每个扇区512字节,因此默认rootfs分区大小是 262,144*512=134,217,728,即128M

3、修改 device\rockchip\rk3308\BoardConfig.mk 中 rootfs 文件系统类型

 # Set rootfs type, see buildroot.
 # ext4 squashfs
-ROOTFS_TYPE=squashfs
+ROOTFS_TYPE=ext2
 
 # Set data partition type.
 # ext2 squashfs

4、重新编译镜像,烧录进板子,但是无法启动。报错为

EXT2-fs (mmcblk0p6): error: couldn't mount because of unsupported optional features (240)

研究了一下,生成根文件系统的默认参数配置在 buildroot/configs/rockchip_rk3308_release_defconfig

BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_SIZE="128M"
BR2_TARGET_ROOTFS_SQUASHFS=y

而 buildroot/fs/ext2/Config.in 中

config BR2_TARGET_ROOTFS_EXT2_GEN
        int
        default 2 if BR2_TARGET_ROOTFS_EXT2_2
        default 3 if BR2_TARGET_ROOTFS_EXT2_3
        default 4 if BR2_TARGET_ROOTFS_EXT2_4

buildroot/fs/ext2/ext2.mk 中

        $(HOST_DIR)/sbin/mkfs.ext$(BR2_TARGET_ROOTFS_EXT2_GEN) $(EXT2_OPTS) $@ \
                "$(EXT2_SIZE)" \

因为 BR2_TARGET_ROOTFS_EXT2_4=y ,因此最后用的是mkfs.ext4来生成根文件系统的。试过修改 bootargs 把 rootfstype 改为 ext4 也不能启动,可能内核还是少了一些ext4的特性支持,还得改内核。最后的方案还是用ext2的根系统

修改 buildroot/configs/rockchip_rk3308_release_defconfig,屏蔽 BR2_TARGET_ROOTFS_EXT2_4=y
然后执行 source buildroot/build/envsetup.sh,更新参数
重新编译rootfs ,make

你可能感兴趣的:(MDK3308-EK更改根文件系统为ext2)