编译 Ubuntu 根文件系统
环境:
安装依赖包:
sudo apt-get install qemu qemu-user-static binfmt-support debootstrap
下载 Ubuntu core:
wget -c http://cdimage.ubuntu.com/ubuntu-base/releases/16.04.1/release/ubuntu-base-16.04.1-base-arm64.tar.gz
创建一个大小为 1000M 的根文件系统映像文件,并使用 Ubuntu 的基础包去初始化:
fallocate -l 1000M rootfs.img sudo mkfs.ext4 -F -L ROOTFS rootfs.img mkdir mnt sudo mount rootfs.img mnt sudo tar -xzvf ubuntu-base-16.04.1-base-arm64.tar.gz -C mnt/ sudo cp -a /usr/bin/qemu-aarch64-static mnt/usr/bin/
qemu-aarch64-static是其中的关键,能在 x86_64 主机系统下 chroot 到 arm64 文件系统:
Chroot 到新的文件系统中去并初始化:
sudo chroot mnt/# 这里可以修改设置USER=fireflyHOST=firefly# 创建用户useradd -G sudo -m -s /bin/bash$USERpasswd$USER# 输入密码# 设置主机名和以太网echo$HOST> /etc/hostnameecho"127.0.0.1 localhost.localdomain localhost"> /etc/hostsecho"127.0.0.1$HOST">> /etc/hostsecho"auto eth0"> /etc/network/interfaces.d/eth0echo"iface eth0 inet dhcp">> /etc/network/interfaces.d/eth0echo"nameserver 127.0.1.1"> /etc/resolv.conf# 使能串口ln -s /lib/systemd/system/serial-getty\@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service# 安装包apt-get update apt-get upgrade apt-get install ifupdown net-tools network-manager apt-get install udev sudo ssh apt-get install vim-tiny
卸载文件系统:
Credit: bholland