构建arm64 的Ubuntu rootfs

tech2026-08-08  1

构建ubuntu18.04 rootfs

下载ubuntu arm64 base image

wget http://cdimage.ubuntu.com/ubuntu-base/releases/18.04/release/ubuntu-base-18.04-base-arm64.tar.gz

构建ubuntu-rootfs

mkdir ubuntu-rootfs tar -xvf ubuntu-base-16.04.2-base-arm64.tar.gz -C ubuntu-rootfs

安装 qemu-user-static搭建arm64模拟环境

apt-get install qemu-user-static cp /usr/bin/qemu-aarch64-static usr/bin cp /etc/resolv.conf etc/

chroot 到 模拟arm64的文件系统下

vi ch-mount.sh #!/bin/bash # function mnt() { echo "MOUNTING" sudo mount -t proc /proc ${2}proc sudo mount -t sysfs /sys ${2}sys sudo mount -o bind /dev ${2}dev sudo mount -o bind /dev/pts ${2}dev/pts sudo chroot ${2} } function umnt() { echo "UNMOUNTING" sudo umount ${2}proc sudo umount ${2}sys sudo umount ${2}dev/pts sudo umount ${2}dev } if [ "$1" == "-m" ] && [ -n "$2" ] ; then mnt $1 $2 elif [ "$1" == "-u" ] && [ -n "$2" ]; then umnt $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 "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 ./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 yourusername echo "Set password for yourusername:" passwd yourusername echo "Set password for root:" passwd root ##设置主机名 echo 'ubuntu.yourusername' > /etc/hostname ## 设置自动更新DNS dpkg-reconfigure resolvconf

配置登录的串口(很重要)

## 修改此文件中内的串口设备名字,改为你设备的实际名称 /etc/systemd/system/getty.target.wants/getty@tty1.service ##ConditionPathExists=/dev/ttyAMA0 此字段

退出arm64模拟文件系统

exit ./ch-mount -u ubuntu-rootfs

注意事项

kernel 需支持 CONFIG_DEVTMPFS CONFIG_DEVTMPFS_MOUNT 因为udev会/dev/,用的类型是devtmpfs >>>>>>>>>rootfs 启动流程 >kernel--->/sbin/init(systemd) >/sbin/init---->mount proc sys dev >udveadm trigger 创建所有设备 >启动服务

18.04 LTS 后,使用netplan配置网络

roofs ext4 生成

#1. 生成一个适当大小的数据块,这个大小参考du -h ubuntu-rootfs dd if=/dev/zero of=rootfs.ext4 bs=1M count=500 #2. 格式化 mkfs.ext4 rootfs.ext4 #3. 挂载此空镜像 mount -o loop rootfs.ext4 /mnt #4.向挂载好的文件系统中写入需要加入的文件 sudo cp ubuntu-rootfs/* /mnt -rf #5.卸载根文件系统 umount /mnt #6. 收缩 rootfs.ext4 e2fsck -p -f rootfs.ext4 #7. 将rootfs.ext4 烧写到指定设备分区
最新回复(0)