如何构建一个arm64 AArch64的Ubuntu rootfs
来源:互联网 发布:linux防火墙关闭 编辑:程序博客网 时间:2024/06/11 21:41
本文参考自
gun-linux.org
的文章 ,本文将实现如何通过Ubuntu-core在Aarch64上构建最小的Ubuntu文件系统。
ubuntu-base-arm64的下载地址
1 下载文件创建rootfs文件夹
mkdir ~/rootfs && cd ~/rootfswget http://cdimage.ubuntu.com/ubuntu-base/releases/16.04.1/release/ubuntu-base-16.04.2-base-arm64.tar.gzmkdir ubuntu-rootfstar -xvf ubuntu-base-16.04.2-base-arm64.tar.gz -C ubuntu-rootfscd ubuntu-rootfsls
查看当前路径下的文件结构已经OK
bin dev home media opt root sbin srv system usrboot etc lib mnt proc run snap sys tmp var
2 安装qemu-user-static搭建arm64模拟环境
此时位于 ~/rootfs/ubuntu-rootfs/ 路径下,需要安装qemu-user-static并拷贝qemu-aarch64-static到当前路径的 usr/bin/下。
apt-get install qemu-user-staticcp /usr/bin/qemu-aarch64-static usr/bincp -b /etc/resolv.conf etc/
3 chroot 到 模拟arm64的文件系统下
#创建ch-mount.sh 脚本cd ../vi ch-mount.sh
将以下的内容复制到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 $2elif [ "$1" == "-u" ] && [ -n "$2" ];then umnt $1 $2else 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脚本chroot到arm64的文件系统下
./ch-mount.sh -m ubuntu-rootfs
4 安装基础的软件包
apt-get install \ language-pack-en-base \ sudo \ ssh \ net-tools \ network-manager \ iputils-ping \ rsyslog \ bash-completion \ htop \
5 系统基础的修改
添加用户、设定合适的组并设置密码
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
设置自动更新DNS
dpkg-reconfigure resolvconf
配置登录的串口
因为暂时未安装桌面,所以这里的配置要具体和内核中登录的串口的设备对应起来,不然对导致无法通过串口登录的问题。
在 /etc/init/ 下添加或修改ttyS0.conf
start on stopped rc or RUNLEVEL=[12345]stop on RUNLEVEL [!12345]respawnexec /sbin/getty -L 115200 ttyFIQ0 vt102
本文环境的登录串口为ttyFIQ0,具体可能会因为目标板差异而不同,具体要参考所使用的平台进行修改。
6 退出并制作可烧录的固件
退出arm64模拟文件系统
exit./ch-mount -u ubuntu-rootfs
使用dd指令制作空的固件容器
dd if=/dev/zero of=ubuntu-rootfs.img bs=1M count=2048sudo mkfs.ext4 ubuntu-rootfs.img
将arm64文件系统内容制作到ubuntu-rootfs.img
mkdir ubuntu-mountsudo mount ubuntu-rootfs.img ubuntu-rootfs/sudo cp -rfp ubuntu-rootfs/* ubuntu-mount/sudo umount ubuntu-mount/e2fsck -p -f ubuntu-rootfs.imgresize2fs -M ubuntu-rootfs.img
Finished
阅读全文
0 0
- 如何构建一个arm64 AArch64的Ubuntu rootfs
- armv8 ARM64 AARCH64
- rootfs的构建1
- rootfs的构建2
- ARMv8(ARM64, AArch64)进阶之旅
- 一个简单的练手rootfs
- 利用buildroot构建rootfs
- 如何适配Arm64架构的 iosAPP
- 如何构建一个优秀的销售团队?
- 如何构建一个完整的WEB服务器
- 我是如何构建一个持续发展的项目
- 我是如何构建一个持续发展的项目
- 如何构建一个高效的敏捷团队
- 如何构建一个持续发展的项目
- 我是如何构建一个持续发展的项目
- 如何构建一个深度的RNN
- 如何构建一个优秀的开发框架
- 我是如何构建一个持续发展的项目
- Java和Android配置环境变量,步骤
- configure: error: c-ares library defective or too old
- Spring Boot 教程系列学习
- 天津智慧山上班的一个程序员
- Java作业
- 如何构建一个arm64 AArch64的Ubuntu rootfs
- 推荐算法综述
- fragment
- 一直听说“不忘初心”,今天才知道真正内涵!
- Unity3D安装破解教程(以Unity5.3.4为例
- 没有上司的舞会
- 基于mappwidget的手绘地图
- 数据类型转换之 QByteArray转QPixmap
- Iconfont矢量图图标怎么使用带图详解