Ubuntu文件系统的定制化可以通过多种方法实现,以下是一些常见的方法和步骤:
AFPTool.exe和RKImageMaker.exe拷贝到Build_Package目录。Build_Package目录下并改名为update.img。./output/Android两层目录文件夹。.\RKImageMaker.exe -unpack .\update.img output.\AFPTool.exe -unpack .\output\firmware.img .\output\Android\
./output/Android下,解包后的目录结构如下:Build_Package
├── AFPTool.exe
├── RKImageMaker.exe
├── output
│   ├── Android
│   │   ├── Image
│   │   │   ├── boot.img
│   │   │   ├── misc.img
│   │   │   ├── recovery.img
│   │   │   ├── rootfs.img
│   │   │   └── uboot.img
│   │   ├── MiniLoaderAll.bin
│   │   ├── package-file
│   │   └── parameter.txt
│   ├── boot.bin
│   └── firmware.img
└── update.img
parameter.txt文件里的CMDLINE行的mtdparts参数进行修改。具体修改参数需要在运行系统的开发板上使用parted工具对系统大小进行修改后,使用RKDevTool读取修改后分区参数来进行修改。rootfs.img上传到开发板的Ubuntu系统中,借助loop+chroot来进行修改。output目录进行准备,将Android目录下的MiniLoaderAll.bin、package-file、parameter.txt都复制到Image目录下。下载Ubuntu根文件系统:可以从Ubuntu官方网站下载所需的Ubuntu根文件系统。
安装虚拟机:在Ubuntu系统中安装qemu-user-static以便在虚拟机中运行ARM架构的系统。
sudo apt-get install qemu-user-static
解压文件系统:解压下载的Ubuntu根文件系统压缩包。
mkdir ubuntu-rootfs
tar -xpf ubuntu-base-20.04.5-base-arm64.tar.gz -C ubuntu-rootfs
复制虚拟机的运行环境:将主机上的虚拟机运行环境复制到根文件系统中。
cp -b /etc/resolv.conf ubuntu-rootfs/etc/resolv.conf
cp /usr/bin/qemu-aarch64-static ubuntu-rootfs/usr/bin/
复制官方外设驱动文件:将开发板所需的外设驱动文件复制到根文件系统的相应位置。
挂载根文件系统:创建挂载脚本ch-mount.sh,并执行挂载操作。
#!/bin/bash
functionmnt() {
    echo "mounting..."
    sudo mount -t proc /proc${2} procsudo mount -t sysfs /sys${2}syssudo mount -obind/dev${2}devsudo mount -obind/dev/pts${2}dev/ptsecho "chroot..."
    sudo chroot${2}
    echo "success!"
}
functionumnt() {
    echo "unmounting"
    sudo umount${2}procsudo umount${2}syssudo umount${2}dev/ptssudo umount${2}dev
}
if ["$1" = "-m" ] && [ -n "$2" ]; then
    mnt "$1" "$2"
elif ["$1" = "-u" ] && [ -n "$2" ]; then
    numnt "$1" "$2"
else
    echo ""
    echo "either 1'st, 2'nd or both parameters were missing"
    echo ""
    echo "1'st parameter can be one of these: -m(mount) or -u(umount)"
    echo ""
    echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"
    echo ""
    echo "for example: ch-mount -m /media/sdcard/"
    echo ""
    1st parameter :${1}
    2nd parameter :${2}
fi
拷贝bash依赖库:执行挂载脚本时,如果遇到动态链接库缺失的错误,需要拷贝相应的动态链接库到根文件系统中。
通过以上步骤,你可以根据具体需求定制化Ubuntu文件系统。这些方法适用于需要深度定制和优化的场景,如嵌入式系统开发等。