构建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
dpkg-reconfigure resolvconf
配置登录的串口(很重要)
/etc/systemd/system/getty.target.wants/getty@tty1.service
退出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 生成
dd if
=/dev/zero of
=rootfs.ext4 bs
=1M count
=500
mkfs.ext4 rootfs.ext4
mount -o loop rootfs.ext4 /mnt
sudo cp ubuntu-rootfs/* /mnt -rf
umount /mnt
e2fsck -p -f rootfs.ext4