前言
前面编译了u-boot和Kernel,接下来试着编译buildroot的rootfs
准备
首先是下载buildroot
wget https://buildroot.org/downloads/buildroot-2023.05.1.tar.gz tar -xzvf buildroot-2023.05.1.tar.gz cd buildroot-2023.05.1
配置
make menuconfig
配置芯片类型
Target options ---> Target Architecture (AArch64 (little endian)) ---> Target Architecture Variant (cortex-A53) ---> Floating point strategy (VFPv4) ---> Target Binary Format (ELF) --->
配置Filesystem选项
Filesystem images ---> [*] ext2/3/4 root filesystem ext2/3/4 variant (ext4) ---> (rootfs) filesystem label (NEW) (128M) exact size [*] ubi image containing an ubifs root filesystem
保存
路径:/home/qubot/BPI-H618-BSP/buildroot-2023.05.1/configs/qubot_m2h_defconfig
编译
make qubot_m2h_defconfig make -j12
编译成功
放入卡内
将卡插上电脑
lsblk
可以看到设备是/dev/sdd
sudo fdisk /dev/sdd
新建分区
Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p Partition number (2-4, default 2): First sector (2048-31116287, default 2048): 303106 //起始地址 Last sector, +/-sectors or +/-size{K,M,G,T,P} (303106-31116287, default 31116287): +262144 在起始地址后面加128M的空间 Created a new partition 2 of type 'Linux' and of size 128 MiB. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
格式化分区,并将rootfs复制进卡里
sudo mkfs.ext4 /dev/sdd2 //格式化分区 sudo mount /dev/sdd2 /mnt/rootfs //挂载分区 sudo cp ./output/images/rootfs.tar /mnt/rootfs/ //复制 sudo tar -vxf /mnt/rootfs/rootfs.tar -C /mnt/rootfs //解压 sudo rm /mnt/rootfs/rootfs.tar //删除 sudo umount /mnt/rookfs
测试文件系统
将卡插到板子上面,,按空格进入u-boot
检查rootfs是否存在(不知道为啥,有时候复制好像会失败)
ext4ls mmc 0:2
# 设置启动命令,这里是kernel的配置 setenv bootcmd 'fatload mmc 0:1 0x40200000 Image;fatload mmc 0:1 0x4fa00000 sun50i-h616-orangepi-zero2.dtb;booti 0x40200000 - 0x4fa00000' # 设置bootargs变量,这个是rootfs,波特率等设置 setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw init=/sbin/init debug panic=30' # 启动 boot
启动到这个时候,突然卡在了,先记录到这里
Waiting for root device /dev/mmcblk0p2 ...
2023-08-07两天之后继续:
这两天重新做了好几遍前面的步骤,包括重新编译所有东西,在opi的镜像上面改,都不太行,有点绝望了,突然在rootfs那一步看到了问题所在
这里的设备变成了mmcblk1p2,如果是这样,那是不是应该把bootargs里面的mmcblk0p2改成mmcblk1p2?
改完之后:
setenv bootargs 'console=ttyS0,115200 root=/dev/mmcblk1p2 rootfstype=ext4 rootwait rw init=/sbin/init debug panic=30'
启动成功了!
暂无评论