获取镜像:可以依据所需版本进行适当修改
wget http://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04-base-arm64.tar.gz构建基础镜像:如果不以root方式构建实际镜像中会有所属权限问题
mkdir ubuntu-rootfssudo chown root:root ubuntu-rootfssudo tar -xvf ubuntu-base-22.04-base-arm64.tar.gz -C ubuntu-rootfs构建挂载环境:
sudo apt-get install qemu-user-staticcd ubuntu-rootfssudo cp /usr/bin/qemu-aarch64-static usr/binsudo cp -b /etc/resolv.conf etc/cd ../构建挂载环境脚本:
vim ch-mount.sh脚本内容如下:
!/bin/bashfunction mnt() {echo "MOUNTING"sudo mount -t proc /proc ${2}procsudo mount -t sysfs /sys ${2}syssudo mount -o bind /dev ${2}devsudo mount -o bind /dev/pts ${2}dev/ptssudo chroot ${2}}function umnt() {echo "UNMOUNTING"sudo umount ${2}procsudo umount ${2}syssudo umount ${2}dev/ptssudo umount ${2}dev}if [ "$1" == "-m" ] && [ -n "$2" ] ;thenmnt $1 $2elif [ "$1" == "-u" ] && [ -n "$2" ];thenumnt $1 $2elseecho ""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 "2'nd parameter is the full path of rootfs directory(with trailing '/')"echo ""echo "For example: ch-mount -m /media/sdcard/"echo ""echo 1st parameter : ${1}echo 2nd parameter : ${2}fi进行脚本挂载:此处注意脚本中所需要的路径带/,ubuntu-rootfs/中的’/’不可省略
./ch-mount.sh -m ubuntu-rootfs/挂载完毕后进入文件系统
首先安装基础软件包:
apt-get install \language-pack-en-base \sudo \ssh \net-tools \network-manager \iputils-ping \rsyslog \bash-completion \htop \设定用户组并修改密码
useradd -s '/bin/bash' -m -G adm,sudo yourusernameecho "Set password for yourusername:"passwd yourusernameecho "Set password for root:"passwd root修改主机名:
echo 'ubuntu.yourusername' > /etc/hostname配置登录的串口:注意此功能本人未验证
因为暂时未安装桌面,所以这里的配置要具体和内核中登录的串口的设备对应起来,不然对导致无法通过串口登录的问题。在 /etc/init/ 下添加或修改ttyS0.conf
start on stopped rc or RUNLEVEL=[12345]stop on RUNLEVEL [!12345]respawnexec /sbin/getty -L 115200 ttyFIQ0 vt102退出文件系统并解除挂载:同理‘/’不可省略
exit./ch-mount -u ubuntu-rootfs\制作容器
dd if=/dev/zero of=ubuntu-rootfs.img bs=4M count=2048sudo mkfs.ext4 ubuntu-rootfs.img制作镜像:
mkdir ubuntu-mountsudo mount ubuntu-rootfs.img ubuntu-mount/sudo cp -rfp ubuntu-rootfs/* ubuntu-mount/sudo umount ubuntu-mount/e2fsck -p -f ubuntu-rootfs.imgresize2fs -M ubuntu-rootfs.img最终 ubuntu-rootfs.img 为三大件中的文件系统镜像
本次构建基于全志T507构建,由于涉及Android内核,最终还需要构建_apt用户,net用户来保证网络访问正常