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

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐