构建arm64 的Ubuntu rootfs

构建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 烧写到指定设备分区
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值