编译之前需要先在debian目录先执行
sudo apt-get install binfmt-support qemu-user-static live-build
sudo dpkg -i ubuntu-build-service/packages/*
sudo apt-get install -f
遇到" noexec or nodev"问题
noexec or nodev issue /usr/share/debootstrap/functions: line 1450:
..../rootfs/ubuntu-build-service/buster-desktop-arm64/chroot/test-dev-null:
Permission denied E: Cannot install into target '/rootfs/ubuntu-buildservice/buster-desktop-arm64/chroot' mounted with noexec or nodev
因为采用外挂硬盘编译代码,挂载盘的属性如下图,
解决⽅法:修改挂载盘属性
mount -o remount,exec,dev xxx
(其中xxx 是⼯程⽬录路径,然后重新编译)
ubuntu下使用磁盘工具修改挂载盘挂载选项,如下图:
定制debian根文件系统碰到的坑:
项目中使用到触摸屏,需要一个配置文件放置到根文件系统的/usr/lib/firmware中,尝试把文件放置到SDK以下目录
debian/overlay-firmware/usr/lib/firmware中,重新编译出debian固件linaro-rootfs.img, 使用以下命令挂载镜像
sudo mount linaro-rootfs.img test
查看test/usr/lib/firmware下是否有需要的文件,发现并没有
后来发现mk-rootfs-bullseye.sh 脚本中有以下这么一段代码,编译根文件系统过程中会删除根文件系统的/usr/lib/firmware
解决方法如下图:修改mk-rootfs-bullseye.sh文件
删除debian目录下的linaro-rootfs.img,重新编译出linaro-rootfs.img,挂载镜像查看发现文件已经被编译进根文件系统的/usr/lib/firmware目录中