算能BM1688开发(四)编译ubuntu
注意:先把把环境配置好。
·
1.编译命令
build_edge_rootfs
注意:先把把环境配置好
# source build/envsetup_soc.sh
# defconfig edge_wevb_emmc
2.分析编译ubuntu脚本流程
在文件build/envsetup_soc.sh 中
function build_edge_ubuntu
{
print_notice "Run ${FUNCNAME[0]}() function"
build_edge_overlay || { ret=$?; echo "Error: build_edge_overlay failed with exit code $ret"; return $ret; } ##build_edge_overlay 主要是负责解压ubuntu/distro/distro_jammy.tgz文件
local version=$(grep Version $DISTRO_OVERLAY_DIR/$CVIARCH/sophgo-fs/DEBIAN/control | cut -d ' ' -f 2)
mkdir -p "${EDGE_ROOTFS_DIR}"/home/linaro/debs #建立 /home/linaro/debs 文件夹
dpkg-deb -b "${DISTRO_OVERLAY_DIR}/${CVIARCH}/sophgo-fs" \
"${EDGE_ROOTFS_DIR}/home/linaro/debs/sophgo-bsp-rootfs_${version}_arm64.deb" #先把sophgo-fs 文件配置 打包成deb 后面安装
mkdir -p ${BSP_DEBS}
mkdir -p ${SDK_DEBS}
mkdir -p ${MOD_DEBS}
rm -rf "${BSP_DEBS}"/linux*.deb
rm -rf "${SDK_DEBS}"/linux-image*.deb
shopt -s nullglob
update_files_if_newer "linux*.deb" "${TOP_DIR}/linux_5.10/build" "${BSP_DEBS}"
update_files_if_newer "sophon-media-soc-sophon-{ffmpeg,opencv,gstreamer,sample}_*_arm64.deb" "${TOP_DIR}/sophon_media/buildit" "${SDK_DEBS}"
update_files_if_newer "sophon-soc-libisp*arm64.deb" "${TOP_DIR}/middleware/v2/modules/isp/cv186x/v4l2_adapter" "${SDK_DEBS}"
update_files_if_newer "sophon-soc-libsophon*.deb" "${TOP_DIR}/libsophon/build" "${SDK_DEBS}"
shopt -u nullglob
echo copy overlay file to rootfs... # 重点 在 ubuntu/bootloader-arm64/distro/overlay/common/rootfs/
# ubuntu/bootloader-arm64/distro/overlay/SOPHON/rootfs/ 预先放自己定制的文件
sudo cp -rf \
"$DISTRO_OVERLAY_DIR"/common/rootfs/* \
"$DISTRO_OVERLAY_DIR"/"$CVIARCH"/rootfs/* \
"${EDGE_ROOTFS_DIR}"
# copy customer's debs
find "${TOP_DIR}"/ubuntu/bootloader-arm64/distro/debs \
-name *.deb -exec cp -f {} "${MOD_DEBS}" \;
mkdir -p "${EDGE_ROOTFS_DIR}"/home/linaro/bsp-debs
find "${BSP_DEBS}" -maxdepth 1 -type f -exec sudo cp -f {} "${EDGE_ROOTFS_DIR}"/home/linaro/bsp-debs \;
find "${SDK_DEBS}" -maxdepth 1 -type f -exec sudo cp -f {} "${EDGE_ROOTFS_DIR}"/home/linaro/debs \;
find "${MOD_DEBS}" -maxdepth 1 -type f -exec sudo cp -f {} "${EDGE_ROOTFS_DIR}"/home/linaro/debs \;
echo install packages... # 安装deb文件 同时也可以预安装安装工具
sudo chroot "${EDGE_ROOTFS_DIR}" /bin/bash << EOT
#!/bin/bash
echo -e "LC_ALL=C.UTF-8\n" > /etc/default/locale
echo "Defaults timestamp_timeout=43200" | tee -a /etc/sudoers
for deb_dir in /debs /home/linaro/debs; do
if [ -d \${deb_dir} ] && [ \$(ls \${deb_dir}/*.deb | wc -l) -gt 0 ]; then
retries=0
while [ \${retries} -lt 3 ]; do
sleep 1
if dpkg -i -R \${deb_dir}; then
break
fi
retries=\$((retries + 1))
done
fi
if [ \${retries} -eq 3 ]; then
exit 1
fi
for file in \${deb_dir}/*; do
file=\$(basename \${file})
if [ "\${file##*.}" == "whl" ]; then
pip3 install --no-index --find-links=file://\${deb_dir} \${file%%-*}
fi
done
rm -rf \${deb_dir}
done
EOT
echo packing rootfs...
pushd "${EDGE_ROOTFS_DIR}"
sudo chown 1000:1000 -R data
popd
}
烧录ubuntu镜像
用tf方式烧录这个文件夹下面的文件 类似整体烧录镜像
install/soc_edge_wevb_emmc/package_edge/sdcard
如果想详细查看打包过程可以查看这个文件:/build/scripts/bm_make_package.sh
更多推荐

所有评论(0)