[Linux]制作ubuntu文件系统镜像

主机平台:虚拟机Ubuntu 18.04 x86_64

目标平台:arm64

根文件系统版本:ubuntu-base-16.04.6-base-arm64

 

1.主机安装qemu模拟器

sudo apt install qemu-user-static
mkdir rootfs                                                     //用于制作根文件系统的临时目录
sudo tar -xpf ubuntu-base-16.04.6-base-arm64.tar.gz -C rootfs    //解压文件系统到临时目录

2.进入根文件系统并配置基础环境

此时可以先修改临时根文件系统内apt源地址为国内,以便稍后的软件安装不至于太慢;不过此时的文件系统内可能没有常用的文本编辑器,可以以现有源地址安装vim之后再修改,也可以在主机端修改好后复制到临时根目录内,注意arm源地址目录是/ubuntu-port/
配置文件地址:rootfs/etc/apt/source.list
推荐源地址:
https://mirrors.ustc.edu.cn/ubuntu-ports/
http://mirrors.aliyun.com/ubuntu-ports/

sudo cp -b /etc/resolv.conf rootfs/etc/                 //复制主机网络配置
sudo cp /usr/bin/qemu-aarch64-static rootfs/usr/bin/    //复制qemu到临时目录,以便稍后可以交叉切换到临时根目录
sduo chroot rootfs                                      //切换到临时根目录,此时的操作作用于刚才挂载的临时根目录

3.安装所需软件

apt update
apt upgrade
apt install vim git openssh-server ethtool net-tools ifupdown iputils-ping
apt install xubuntu-desktop    //按需安装
安装桌面时可能会因为系统环境未定义系统语言,造成配置页面乱码,可以提前指定系统语言为英文;
/etc/enviroment:
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"
也可以在chroot切换文件系统之前,手动赋值
LANG=C LANGUAGE=C

4.添加用户及密码

useradd -s '/bin/bash' -m -G adm,sudo userxxx
passwd userxxx
passwd root
apt clean
apt autoclean
exit

5.打包根文件系统

sudo tar cjvf ./ubuntu-16.04-desktop-rootfs.tar.bz2

6.制作根文件系统镜像

dd if=/dev/zero of=linuxroot.img bs=1M count=2048    //生成镜像文件
sudo mkfs.ext4 linuxroot.img                         //格式化镜像
mkdir rootfsTemp                                     //镜像临时挂载目录
sdudo mount linuxroot.img rootfsTemp/                //挂载
sudo cp -rfp rootfs/* rootfsTemp/                    //将制作好的根文件系统内文件拷贝到镜像挂载的目录
sudo umount rootfsTemp
e2fsck -p -f linuxroot.img
resize2fs -M linuxroot.img                           //将文件系统调整到最小值,启动后可能出现无可用空间

若系统启动后 df 查看磁盘容量未识别硬盘完整容量,则再次使用resize2fs扩展文件系统大小到硬盘分区真实值
sudo resize2fs /dev/xxx

7.调试笔记

1.locale:
    用于检查系统的[locale setting]变量是否正确设置,常见于LC_xxx,LANG,LANGUAGE等的错误。
设置到[~/.bashrc],[/etc/default/locale],[/etc/enviroment]均可
2.glmark2-es2:
    嵌入式系统中用于测试GPU性能的工具
3.bash-completion:
    若ssh登陆发现终端命令无法补全,可以安装此软件包修复
4.lrzsz:
    xshell常用到的文件传输工具
5.libgbm.so.1:
    在删除两个软件包(似乎是rockchip的gpu驱动库)之后运行其他程序(glmark-es2)提示此lib丢失,使用locate 还能查找到文件路径,而直接到目录查看时却没有,应该是文件被删除而没有出发数据库更新,最终使用强制重新安装的方式修复:apt -reinstalll install libgbm1

 

你可能感兴趣的:(Linux)