从 SDK 编译到镜像固化|SBC‑TLT153 单板机 Linux 系统深度开发指南(三)
4.2配置Kernel4.2.1请设备树配置参考“配置编译设备树文件”章节配置设备树文件。4.2.2配置Linux内核选项请参考“配置内核选项”章节配置内核选项。
4.3编译Kernel在LinuxSDK源码目录下执行如下命令,配置编译选项,单独编译Linux内核。
Host# ./build.sh kernel
https://file1.elecfans.com/web3/M00/78/F0/wKgZO2qolwGAA0wZAADKQ2kWCUs671.png
https://file1.elecfans.com/web3/M00/78/F0/wKgZO2qolwGAY8WbAAFuV1XhqCk152.png
执行如下命令,打包生成新的内核镜像boot.fex。Host# ./build.sh pack
https://file1.elecfans.com/web3/M00/78/F0/wKgZO2qolxWAGj2BAAF8E6fXEJo182.png
https://file1.elecfans.com/web3/M00/78/F0/wKgZO2qolxWAVfe7AACEKKyXL3E829.png
https://file1.elecfans.com/web3/M00/78/EC/wKgZPGqolxWAHqTsAABB2FsmVCQ968.png
4.4替换Kernel我司已提供Linux内核镜像文件(boot_xxx.fex)、Linux内核模块压缩包(modules文件夹),位于产品资料“4-软件资料\Linux\Kernel\image\linux-5.10.198-[版本号]-_bsp-[版本号]-\”目录下。其中nand目录下的内核镜像文件、内核模块适配NAND FLASH配置单板机,emmc目录下的内核镜像文件、内核模块适配eMMC配置单板机。
4.4.1替换内核镜像请将Linux内核镜像拷贝至单板机root目录下(镜像名称请以实际情况为准),执行如下命令固化至NAND FLASH。Target#flash_erase /dev/mtd9 0 0 //擦除/dev/mtd9分区的所有块Target#nandwrite -p /dev/mtd9 boot.fex //将boot.fex写入/dev/mtd9分区Target#reboot
https://file1.elecfans.com/web3/M00/78/F0/wKgZO2qolzaADlN6AAA0MU5le8A135.png
https://file1.elecfans.com/web3/M00/78/EC/wKgZPGqolzaASH7OAAAYG7k4l4s650.png
备注:(1)如需固化至系统启动卡,请参考如下命令进行操作。(2)如需固化至eMMC,请将以下命令中的"mmcblk0p4"替换为"mmcblk2p4"。Target#dd if=boot.fex of=/dev/mmcblk0p4 conv=fsync //将boot.fex写入系统启动卡的第4分区Target#reboot
https://file1.elecfans.com/web3/M00/78/F0/wKgZO2qol5OAJTy9AAAVnUrWKKM998.png 4.4.2替换内核模块内核模块需与内核版本保持一致,否则会因版本不一致而导致内核模块无法加载。替换内核镜像后,请按如下方法替换对应版本的内核模块。将内核模块压缩包解压后拷贝至单板机系统root目录下,执行如下命令,替换原有的内核模块。备注:Git系列号请以实际为准。除了使用我司提供的内核模块压缩包,也可使用SDK根目录下的"/out/t153/sbc-tlt153-xxxx/ubuntu/lib/modules/"。Target# rm /lib/modules/* -rfTarget# cp $(uname -r) /lib/modules/ -rTarget# syncTarget# reboot
https://file1.elecfans.com/web3/M00/78/F0/wKgZO2qol6eANk3ZAAARXJcMYlE963.png
5 Rootfs开发5.1 Rootfs源码说明Rootfs(根文件系统)是Linux内核启动后挂载的第一个文件系统,它包含了Linux系统启动和运行所必需的所有文件和目录。
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qol7qAK_MkAAGW7Lect_c607.png
5.2 修改Rootfs本次操作以增加文件为例,演示rootfs根文件系统的修改方法。rootfs根文件系统修改前需添加qemu-arm-static工具,请执行如下命令进行安装。Host# sudo apt updateHost# sudo apt install qemu-user-static
https://file1.elecfans.com/web3/M00/78/ED/wKgZPGqol8yAIariAACu2_6_N5E409.png
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qol82AVSQ2AABw8JOsmKs939.png
执行如下命令创建mount_dir目录,挂载rootfs根文件系统。Host# mkdir mount_dirHost# tar -xzf /mnt/hgfs/SharedFolders/Tronlong-Desktop-22.04-v1.0-g73b96f4-nand.tar.gz -C /home/tronlong/mount_dir/Host# sudo mount -t proc /proc mount_dir/proc/Host# sudo mount -t sysfs /sys mount_dir/sys/Host# sudo mount -o bind /dev mount_dir/dev/Host# sudo mount -o bind /dev/pts mount_dir/dev/pts/
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qol9mABHOeAACtEsz7QM4380.png
执行如下命令,使用chroot进入根文件系统。Host# sudo chroot mount_dir
https://file1.elecfans.com/web3/M00/78/ED/wKgZPGqol-OACUrRAAAe1q-G2hU694.png
执行如下命令,在根文件系统新增test文件。备注:如需修改或删除文件,操作同理。Host# touch test
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qol--AWheHAABccXQH-Ow506.png
执行如下命令,退出并卸载rootfs根文件系统。Host# exitHost# sudo umount mount_dir/procHost# sudo umount mount_dir/sysHost# sudo umount mount_dir/dev/ptsHost# sudo umount mount_dir/dev
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qol_yATUNxAABeW4jh_x0651.png
执行如下命令,重新挂载rootfs根文件系统,可确认已成功新增test文件。Host# sudo mount -t proc /proc mount_dir/proc/Host# sudo mount -t sysfs /sys mount_dir/sys/Host# sudo mount -o bind /dev mount_dir/dev/Host# sudo mount -o bind /dev/pts mount_dir/dev/pts/Host# sudo chroot mount_dir
https://file1.elecfans.com/web3/M00/78/ED/wKgZPGqomAyAF81cAACgDOcqmKs503.png
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qomAyAAXV2AABxVU_7yhQ723.png
执行如下命令,退出并卸载rootfs根文件系统。Host# exitHost# sudo umount mount_dir/procHost# sudo umount mount_dir/sysHost# sudo umount mount_dir/dev/ptsHost# sudo umount mount_dir/dev
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qomAyAAXV2AABxVU_7yhQ723.png
执行如下命令提取Tronlong-Desktop-22.04.tar.gz,提取完成后,将在当前目录生成Tronlong-Desktop-22.04.tar.gz压缩包。Host# sudo tar -czf Tronlong-Desktop-22.04.tar.gz -C ./mount_dir . //注意有"."
https://file1.elecfans.com/web3/M00/78/ED/wKgZPGqomCOAOs3FAABSKznfdtI856.png
5.3替换Rootfs如需进行替换Rootfs镜像,请先参考“编译生成系统镜像”章节,打包生成Rootfs镜像,再执行如下命令,将eMMC/NAND FLASH配置对应的Rootfs镜像通过simg2img工具转化为RAW格式(镜像名称请以实际情况为准)。Host# simg2img rootfs-emmc.fex rootfs_raw.ext4备注:(1)若需替换至NAND FLASH,可忽略此步骤。(2)simg2img工具可通过"sudo apt-get install android-sdk-libsparse-utils"命令安装。
https://file1.elecfans.com/web3/M00/78/ED/wKgZPGqomG2ARwo-AAAfPO_T3Bk125.png
我司已提供相应文件系统镜像文件(rootfs_xxx.fex),位于产品资料“4-软件资料\Linux\Filesystem\image\Tronlong-Desktop-22.04-[版本号]-\”目录下。需特别说明的是,Rootfs文件系统替换操作,必须在目标存储设备未被当前系统挂载占用的状态下执行:(1)若需将Rootfs镜像写入系统启动卡,请先从eMMC/NAND FLASH启动系统,再插入系统启动卡进行镜像替换。(2)若需将Rootfs镜像写入eMMC/NAND FLASH,请先从系统启动卡启动系统,再执行镜像替换操作 。
5.3.1 eMMC配置
(1)替换至系统启动卡请从eMMC启动系统,再插入系统启动卡。执行如下命令,查看系统启动卡的用户储存分区,以便存储文件系统镜像。Target# mount | grep mmcblk0p12
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qomIGANhhcAAAQ2azHNJQ878.png
请将Rootfs镜像(rootfs_raw.ext4)拷贝至单板机系统"/run/media/mmcblk0p12"目录下,执行如下命令固化至eMMC配置单板机的系统启动卡。固化完成后,重启单板机。备注:请确保用于拷贝Rootfs镜像的文件系统目录具备充足的剩余存储空间。Target# umount /dev/mmcblk0p8 //卸载系统启动卡的第8个分区Target# dd if=/run/media/mmcblk0p12/rootfs.ext4 of=/dev/mmcblk0p8 bs=1M conv=fsync //读取rootfs.ext4镜像,写入到目标分区
https://file1.elecfans.com/web3/M00/78/F1/wKgZO2qomIqADj2tAAAcn0zyPPk009.png
(2)替换至eMMC请从系统启动卡启动系统,执行如下命令,查看系统启动卡的用户储存分区,以便存储文件系统镜像。Target# mount |grep mmcblk0p12
https://file1.elecfans.com/web3/M00/78/ED/wKgZPGqomJSAcYwrAAAQa3twaz0433.png
请将Rootfs镜像(rootfs.ext4)拷贝至单板机系统"/mnt/UDISK/"目录下,执行如下命令固化至eMMC。固化完成后,重启单板机。备注:请确保用于拷贝Rootfs镜像的文件系统目录具备充足的剩余存储空间。Target# umount /dev/mmcblk2p8 //卸载eMMC的第8个分区Target# dd if=/mnt/UDISK/rootfs.ext4 of=/dev/mmcblk2p8 bs=1M conv=fsync //读取rootfs_raw.ext4镜像,写入到目标分区
https://file1.elecfans.com/web3/M00/78/ED/wKgZPGqomJ2AR_xuAAAcD7-UArE385.png
页:
[1]