| ||
本文所介绍的方法需要使用到Linux环境下的一些工具。工具可联系触觉智能客服或留言获取。下载Ubuntu PC环境后,需要解包后使用,解包方法如下:
$ tar -vxf ido-pack-tools.tar -C ./
root@ido:/# mount/dev/mmcblk2p8 on / type ext4 (rw,relatime)devtmpfs on /dev type devtmpfs (rw,relatime,size=996844k,nr_inodes=249211,mode=755)sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=1008396k,nr_inodes=252099)devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)tmpfs on /run type tmpfs (rw,nosuid,nodev,size=201680k,nr_inodes=252099,mode=755)tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,nr_inodes=252099)tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=1008396k,nr_inodes=252099,mode=755)cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)pstore on /sys/fs/pstore type pstore (rw,relatime)cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)debugfs on /sys/kernel/debug type debugfs (rw,relatime)tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)adb on /dev/usb-ffs/adb type functionfs (rw,relatime)tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=201676k,nr_inodes=252099,mode=700)tmpfs on /run/user/1001 type tmpfs (rw,nosuid,nodev,relatime,size=201676k,nr_inodes=252099,mode=700,uid=1001,gid=1001)gvfsd-fuse on /run/user/1001/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1001,group_id=1001)/dev/mmcblk2p7 on /media/ido/oem type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)/dev/mmcblk2p6 on /media/ido/userdata type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)/dev/sda1 on /media/ido/U type vfat (rw,nosuid,nodev,relatime,uid=1001,gid=1001,fmask=0022,dmask=0022,codepage=936,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)
# 挂载根文件目录$ sudo mount /dev/mmcblk2p8 /mnt# 进入挂载文件夹$ cd /mnt$ rm var/lib/misc/firstrun$ sudo tar -czf /media/ido/U/ido-rootfs.tar.gz ./*$ sync
$ mkdir -p your/target/path/$ sudo tar -xzf ido-rootfs.tar.gz -C your/target/path/
$ sudo du -sh your/target/path/
dd if=/dev/zero of=${ROOTFSIMAGE} bs=1M count=0 seek=4096
$ sudo cd pack-tools/roofs_mk/$ sudo ./mk-rootfs-image.sh ../../your/target/path/
在执行build.sh lunch后,执行以下命令: 最后执行build.sh即可生成包含了rootfs.img的update.img整包固件。 rockdev/update.img即为我们所需的完整固件。$ ./unpack.sh IDO-EVB3562-V1B_MIPI-800x1280_Ubuntu20_QT5_240719.img
mkdir myrootfs#将rootfs.img放入myrootfs中ls myrootfs/rootfs.img
function build_rootfs(){
check_config RK_ROOTFS_IMG || return 0
RK_ROOTFS_DIR=.rootfs
ROOTFS_IMG=${RK_ROOTFS_IMG##*/}
rm -rf $RK_ROOTFS_IMG $RK_ROOTFS_DIR
mkdir -p ${RK_ROOTFS_IMG%/*} $RK_ROOTFS_DIR
case "$1" in
yocto)
build_yocto
ln -rsf yocto/build/latest/rootfs.img \
$RK_ROOTFS_DIR/rootfs.ext4
;;
debian)
build_debian
ln -rsf debian/linaro-rootfs.img \
$RK_ROOTFS_DIR/rootfs.ext4
;;
distro)
build_distro
for f in $(ls distro/output/images/rootfs.*);do
ln -rsf $f $RK_ROOTFS_DIR/
done
;;
myrootfs)
ln -rsf myrootfs/rootfs.img \
$RK_ROOTFS_DIR/rootfs.ext4
;;
*)
build_buildroot
for f in $(ls buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.*);do
ln -rsf $f $RK_ROOTFS_DIR/
done
;;
esac
export RK_ROOTFS_SYSTEM=myrootfs
./build.sh
....省略部分代码........
build_ubuntu20()
{
ln -rsf "$PWD/ubuntu/rootfs-ubuntu20.04-desktop.img" $ROOTFS_DIR/rootfs.ext4
finish_build build_ubuntu20 $@
}
build_myrootfs()
{
ln -rsf "$PWD/myrootfs/rootfs.img" $ROOTFS_DIR/rootfs.ext4
finish_build build_myrootfs $@
}
....省略部分代码........
build_hook()
{
check_config RK_ROOTFS_TYPE || return 0
if [ -z "$1" -o "$1" = rootfs ]; then
ROOTFS=${RK_ROOTFS_SYSTEM:-buildroot}
else
ROOTFS=$1
fi
ROOTFS_IMG=rootfs.${RK_ROOTFS_TYPE}
ROOTFS_DIR="$RK_OUTDIR/rootfs"
echo "=========================================="
echo " Start building rootfs($ROOTFS)"
echo "=========================================="
rm -rf "$ROOTFS_DIR"
mkdir -p "$ROOTFS_DIR"
case "$ROOTFS" in
yocto) build_yocto "$ROOTFS_DIR" ;;
debian) build_debian "$ROOTFS_DIR" ;;
buildroot) build_buildroot "$ROOTFS_DIR" ;;
ubuntu) build_ubuntu20 "$ROOTFS_DIR" ;;
myrootfs)build_myrootfs "$ROOTFS_DIR" ;;
*) usage ;;
esac
config RK_ROOTFS_SYSTEM
string
default "buildroot" if RK_ROOTFS_SYSTEM_BUILDROOT
default "debian" if RK_ROOTFS_SYSTEM_DEBIAN
default "yocto" if RK_ROOTFS_SYSTEM_YOCTO
default "ubuntu" if RK_ROOTFS_SYSTEM_UBUNTU
default "myrootfs" if RK_ROOTFS_SYSTEM_MYROOTFS
choice
prompt "default rootfs system"
help
Default rootfs system.
config RK_ROOTFS_SYSTEM_BUILDROOT
bool "buildroot"
depends on RK_BUILDROOT_BASE_CFG != ""
config RK_ROOTFS_SYSTEM_DEBIAN
bool "debian"
depends on RK_DEBIAN_VERSION != ""
config RK_ROOTFS_SYSTEM_UBUNTU
bool "ubuntu"
config RK_ROOTFS_SYSTEM_MYROOTFS
bool "myrootfs"
export RK_ROOTFS_SYSTEM=myrootfs
./build.sh