默認(rèn)生成的根文件系統(tǒng)是只讀的squashfs,不方便修改。想修改為ext2。前面三步都是參考《Rockchip Linux軟件開發(fā)指南》
1、修改kernel的bootargs參數(shù),文件位于 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/對應(yīng)的 parameter 文件,確保 rootfs 分區(qū)大小足夠存放分區(qū)鏡像。默認(rèn) 0x00040000@0x0002E800(rootfs) ,前面是扇區(qū)個數(shù),每個扇區(qū)512字節(jié),因此默認(rèn)rootfs分區(qū)大小是 262,144*512=134,217,728,即128M
3、修改 device\rockchip\rk3308\BoardConfig.mk 中 rootfs 文件系統(tǒng)類型
# Set rootfs type, see buildroot.
# ext4 squashfs
-ROOTFS_TYPE=squashfs
+ROOTFS_TYPE=ext2
# Set data partition type.
# ext2 squashfs
4、重新編譯鏡像,燒錄進(jìn)板子,但是無法啟動。報(bào)錯為
EXT2-fs (mmcblk0p6): error: couldn't mount because of unsupported optional features (240)
研究了一下,生成根文件系統(tǒng)的默認(rèn)參數(shù)配置在 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)" \
因?yàn)?BR2_TARGET_ROOTFS_EXT2_4=y ,因此最后用的是mkfs.ext4來生成根文件系統(tǒng)的。試過修改 bootargs 把 rootfstype 改為 ext4 也不能啟動,可能內(nèi)核還是少了一些ext4的特性支持,還得改內(nèi)核。最后的方案還是用ext2的根系統(tǒng)
修改 buildroot/configs/rockchip_rk3308_release_defconfig,屏蔽 BR2_TARGET_ROOTFS_EXT2_4=y
然后執(zhí)行 source buildroot/build/envsetup.sh,更新參數(shù)
重新編譯rootfs ,make