xx主机环境:Ubuntu18.04.5
根文件系统Arm_Ubuntu18.04
1.获取Arm_Ubuntu18.04源码
链接:
http://cdimage.ubuntu.com/ubuntu-base/releases/
下载完了移植到Ubuntu主机
2.解压下载的Arm_Ubuntu18.04文件
mkdir rootfs
tar zxvf ubuntu-base-18.04.5-base-arm64.tar.gz -C rootfs
3. 安装qemu
sudo apt-get install qemu-user-static
#32位根文件系统复制这一行,这个我没试过,不包过
sudo cp /usr/bin/qemu-arm-static ~/rootfs/usr/bash/
#64位用这个,这个亲测好用
sudo cp /usr/bin/qemu-aarch64-static ~/rootfs/usr/bash/
4. 配置根文件系统DNS以及软件源
直接复制主机DNS配置:
sudo cp /etc/resolv.conf ~/rootfs/etc/
修改软件源,可以略过,就是之后下载更新的时候会慢一点:
vim ~/rootfs/etc/apt/sources.list
把中科大的软件源直接添加到最后
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
5. 创建挂载脚本,从这里开始就可以切换到创建的根文件系统rootfs里进行了
创建一个挂载脚本文件mount.sh
cd ~/rootfs
vim mount.sh
复制以下内容到mount.sh
#!/bin/bash
echo "MOUNTING"
sudo mount -t proc /proc ~/rootfs/proc
sudo mount -t sysfs /sys ~/rootfs/sys
sudo mount -o bind /dev ~/rootfs/dev
sudo mount -o bind /dev/pts ~/rootfs/dev/pts
sudo chroot ~/rootfs
创建卸载脚本文件unmount.sh
vim unmount.sh
添加内容:
#!/bin/bash
echo "UNMOUNTING"
sudo umount ~/rootfs/proc
sudo umount ~/rootfs/sys
sudo umount ~/rootfs/dev
sudo umount ~/rootfs/dev/pts
给予可执行权限:
chmod 777 mount.sh unmount.sh
执行挂载脚本,在执行这一步报错的话检查一下qemu的文件有没有正确安装复制,不行就把俩文件都搞过去,我执行完这一步已经可以进入到跟文件系统了:
./mount.sh -m rootfs/
执行卸载脚本文件
./unmount.sh -u rootfs/
6.更新根文件系统以及安装软件
apt-get update
更新根文件系统的时候如果报这个错就更改一下根文件系统下tmp文件的权限,再次更新就不会报错:
chmod 777 /tmp
然后就可以安装一些自己需要用到的软件了
7.制作根文件系统镜像文件用来一直到sd卡,这里切换到”~/“目录执行
mkdir tmp
dd if=/dev/zero of=rootfs-ubuntu.img bs=1M count=0 seek=4000
mkfs.ext4 rootfs-ubuntu.img
sudo mount rootfs-ubuntu.img tmp/
sudo cp -rfp rootfs/* tmp/
sudo umount tmp
e2fsck -p -f rootfs-ubuntu.img
resize2fs -M rootfs-ubuntu.img
在这之后生成的rootfs-ubuntu.img文件就可以移植到sd卡rootfs分区作为开发板的根文件系统了