如何在 Ubuntu 系统上定制文件系统
基于全志 T507H 处理器设计研发的 OKT507-C 开发板为例进行介绍。
Forlinx Desktop(Ubuntu)系统基于 Ubuntu 官方为嵌入式设备制作的操作系统-Lubuntu,该操作系统具备 apt-get、ldd 等常用的命令,若需要安装软件则直接 apt-get 在线安装即可,不需进行交叉编译移植等繁琐操作。但是每次重新烧写镜像之后,之前安装的软件就得重新安装,比较繁琐,如果需要批量操作则每块开发板都需要去 apt-get 安装,这样会大幅增加工作量,很不便于批量化生产。
能不能把软件一起打包到镜像呢?这样每次烧写完就不用再去 apt-get 在线安装了。答案当然是肯定的,这就涉及到文件系统的定制了,那么接下来,小编就为大家介绍在 Forlinx Desktop(Ubuntu)系统上定制文件系统的操作过程。
解压文件系统
首先,找到 OKT507-desktop-release 源码的文件系统所在的目录,然后将文件系统压缩包解压,路径如下:
OKT507-desktop-release/ubuntu
解压后,可看到文件系统目录 OKT507-linux-ubuntu,进入到此目录后可看到如下文件夹:
安装 QEMU
这里简单介绍下 QEMU,它是一个小巧的模拟器,可以模拟很多硬件如 ARM、x86、AMD64/Intel64 等。QEMU 用途广泛,比如 Xen、Android 模拟器等都是基于 QEMU 的。下面我们开始在虚拟机进行安装 QEMU,如下:
① 更新下载源:
sudo apt-get update
②执行命令安装:
sudo apt-get install qemu-aarch64-static
sudo apt-get install qemu-user-static
修改配置
① 将 QEMU 的 qemu-arm-static 拷贝到文件系统目录 OKT507-linux-ubuntu,如下:
sudo cp /usr/bin/qemu-arm-static usr/bin/
② 拷贝 PC 主机端的 DNS 配置,因为待会我们安装程序时要用网络:
sudo cp -b /etc/resolv.conf etc/resolv.conf
③ 修改下载源:
sudo vim etc/apt/sources.list
添加
deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
挂载文件系统
因为我们这里是通过脚本的方式挂载和卸载文件系统,所以需要编写一个脚本挂载和卸载文件系统。
① 新建一个脚本文件命名为 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 chroot {2} } function umnt() { echo "UNMOUNTING" sudo umount {2}proc sudo umount{2}sys 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
② 设置这个 shell 脚本可执行权限,如下:
sudo chmod 777 ch-mount.sh
③ 挂载文件系统:
执行 ch-mount.sh 脚本 指定参数-m,挂载成功如下:
sudo ./ch-mount.sh -m ./
安装软件
前面我们挂载了文件系统,已将文件系统挂载到了 QEMU 模拟器,接下来就可以安装我们所需要的软件了。
① 更新下载源:
apt update
注意:更新下载源可能会报错,这里需要注意一下,因为 tmp 文件夹权限不够,chmod 为其赋予权限。
如下:
chmod 777 /tmp
② 安装软件:
至此,便可以安装所需软件了,在这里用 apt-get 安装自己所需软件,根据所需安装。我们这里来安装一个 minicom 串口测试工具。如下:
③ 安装完成后,exit 退出 QEMU。
④ 执行 ch-mount.sh 脚本卸载文件系统,指定参数-u,卸载成功后打印如下:
注意:我们 exit 退出后,只是退出了 QEMU 模拟器,并没有卸载文件系统,一定要执行脚本卸载文件系统。
打包文件系统
① 完成前面的步骤后,用 tar 命令将当前文件夹下所有文件压缩,命名为 OKT507-linux-ubuntu.tar.gz。如下:
sudo tar -cvzf OKT507-linux-ubuntu.tar.gz ./*
② 压缩完成后,为文件系统压缩包 OKT507-linux-ubuntu.tar.gz 赋予权限,如下:
sudo chmod a+w OKT507-linux-ubuntu.tar.gz
③ 将刚打包好的压缩包替换到上一级目录下的旧的文件系统压缩包。
④ 重新编译打包后生成新的镜像烧录开发板。
测试方法
烧录到板子后,在终端启动 minicom,验证下是否安装上。如下:
从上图红框可以看出,通过终端命令启动了 minicom,说明我们在 QEMU 中安装成功了,至此 Ubuntu 文件系统定制就做完了。
通过这种方法可以个性化的定制属于自己文件系统,安装自己所需软件,也可以根据自己需求将出厂不需要的软件用相同的方式卸载掉,这样既能减少工作量,又利于批量化生产。
版权声明: 本文为 InfoQ 作者【智趣匠】的原创文章。
原文链接:【http://xie.infoq.cn/article/bf81a7e3c4a9ff99696376d27】。文章转载请联系作者。
评论