以新唐 ma35d1开发板为例:
1、修改文件:board/nuvoton/ma35d1/uboot-env.txt
mmcboot=if mmc dev 0; then echo "Booting form mmc ... ..."; setenv bootargs root=/dev/ram0 console=ttyS0,115200n8 rdinit=/init mem=${kernelmem}; mmc read ${kernel_addr_r} 0x1800 0xA000; bootm ${kernel_addr_r} ; fi;
a 以上需要修改mmc kernel的镜像大小 0xA000,单位是block,即512byte,实际大小是0xA000*512byte
这个大小根据实际输出的内核镜像来决定
b 修改init脚本,在init脚本中实现文件系统的挂载和切换,重要的是在切换之前需要拷贝dev目录到,示例:echo " mount real rootfs ....."
mount -t ext4 /dev/mmcblk1p1 /mnt
cp -rf /dev /mnt
echo "The pid now is $$"
exec switch_root -c /dev/console /mnt /sbin/init
c 系统使用了fit_uimage作为启动镜像 需要修改uboot启动参数
2 pack-sdcard.json文件:烧录的mmc分区大小
{
"offset": "0x300000",
"file": "fit_uImage",
"type": 0
} ,
{
"offset": "0x2400000",
"file": "rootfs.ext4",
"type": 0
},
3、文件系统的配置修改:
4、make menuconfig
Filesystem images
(1)选择:initial RAM filesystem linked into linux kernel
去除UBI相关配置
(2)System configuration > Run a getty 将ttyS0改为console
(3)System configuration 选择下面
Dynamic using devtmpfs + mdev
4、make linux-menuconfig,确认红框里面的值有
5、MA35D1_Buildroot/package/initscripts/init.d/rcS添加命令:mdev -s ,这个需要干净编译生效。或者在output/target/etc/init.d/rcS下修改,然后再make打包
标签:buildroot,kernel,文件系统,dev,修改,init,initramfs,mmc From: https://www.cnblogs.com/xiongze1234/p/17633778.html