基于Ubuntu-base构建根文件系统

        Ubuntu是一个非常常见的发行版系统,具有丰富的软件功能,可以方便的进行各类开发,系统的apt工具更是搭建各种开发环境的神器。当我们在基于X86的电脑Ubuntu完成功能开发后,想要将功能移植到arm板上,使用Ubuntu可以大大节省时间。

        Ubuntu-Base 是Ubuntu官方构建的ubuntu最小系统,一般只有几十兆大小,我们可以在此基础上增加自己需要的组件,或预装自己的软件等。

        首先我们需要下载Ubuntu-base,下面是网址Index of /ubuntu-base/releasesicon-default.png?t=N7T8https://cdimage.ubuntu.com/ubuntu-base/releases/        我下载的是基于ARM64的Ubuntu20.04.5,文件名称是ubuntu-base-20.04.5-base-arm64.tar.gz,只有25MB。

        我们新建两个文件夹,一个叫ubuntu_rootfs,一个叫rootfs_maker。我们把刚下载的Ubuntu20.04.5解压到ubuntu_rootfs中。

sudo tar -xvf ubuntu-base-20.04.5-base-arm64.tar.gz -C ubuntu_rootfs/

       因为我们使用的电脑是X86的,不支持ARM架构,所以需要安装qemu-user-static来进行仿真运行,先本机安装再拷贝到Ubuntu文件系统的文件夹中。

sudo apt install qemu-user-static
sudo cp /usr/bin/qemu-aarch64-static ubuntu_rootfs/usr/bin/

        然后我们需要挂载根文件系统,下面是挂载脚本https://download.csdn.net/download/u011436603/89227108?spm=1001.2014.3001.5503,也可以参考下面的博客构建Ubuntu20.04根文件系统并移植到RK3568_rk3568 ubuntu-CSDN博客去复制。

        有了挂载脚本后我们就可以对文件系统进行定制了,下面是挂载和卸载指令,在此之前需要确保脚本是具备执行权限的。

sudo chmod +x mount.sh
./mount.sh -m ubuntu_rootfs/
./mount.sh -u ubuntu_rootfs/

        执行./mount.sh -m ubuntu_rootfs/指令后我们会发现终端字体变白了,而且是以root身份执行的,这表明我们已经进入了Ubuntu-base的文件系统了,可以用cat /etc/issue查看下系统版本,会发现跟你本机使用的Ubuntu是有差别的。

        接下来就是定制了,你可以安装你喜欢的各种软件。

apt update
apt install vim bash-completion net-tools iputils-ping ifupdown ethtool ssh rsync udev htop rsyslog nfs-common language-pack-en-base sudo psmisc 

        这时候发现报错了,因为此时的根文件系统没有网络功能,需要拷贝本机的resolv.conf文件到文件夹中。

cp /etc/resolv.conf  ubuntu_roofs/etc/resolv.conf	

        现在再去使用apt安装软件就正常了。

        接下来我们来进行一些配置,比如修改root密码,修改hostname等,综合参考

基于 RK3588 构建 Ubuntu 22.04 根文件系统_rk3588 ubuntu-CSDN博客和构建Ubuntu20.04根文件系统并移植到RK3568_rk3568 ubuntu-CSDN博客两篇博客内容,我修改的内容有:

开机等待网络超时时间

vim /lib/systemd/system/networking.service
//将里面的TimeoutStartSec=5min修改为
TimeoutStartSec=5sec

串口调试root登录

vi /lib/systemd/system/serial-getty\@.service
ExecStart=-/sbin/agetty --autologin root --noclear %I $TERM

配置检查终端是否可用

vim /root/.profile
# 添加下面的内容,替换掉 mesg n || true 这一行
tty -s && mesg n || true

双网口DHCP

vim /etc/network/interfacesauto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet dhcp
source-directory /etc/network/interfaces.d

重启默认等待时间

vim /etc/systemd/system.conf//解除注释DefaultTimeoutStartSec=90sDefaultTimeoutStopSec=1sDefaultTRestartSec=100ms

后续我在使用ssh连接时老是提示Access denied,发现还得改一个地方,这里一并改掉

vi  /etc/ssh/sshd_config//找到并改成这样
PermitRootLogin yes

        以上就是全部针对Ubuntu-base的定制,本次没有安装gnome桌面,当然后续也可以通过终端自行安装。

        接下来是根文件系统打包,先创建一个镜像。

//首先创建一个空镜像文件,大小参考ubuntu_rootfs那个文件夹,可以略大一些
dd if=/dev/zero of=ubuntu_rootfs.img bs=1M count=4096//将该文件格式化为ext4文件系统
mkfs.ext4 ubuntu_rootfs.img

        将该镜像挂载到一个空文件夹里,然后把ubuntu_rootfs文件夹里的东西拷过去。

//将镜像文件挂载到一个空文件中,并将ubuntu_roofs中的文件拷贝到该空文件中
chmod 777 rootfs_maker
sudo mount ubuntu_rootfs.img rootfs_maker/
sudo cp -rfp ubuntu_rootfs/* rootfs_maker/

        复制完后再卸载,此时ubuntu_rootfs.img就已经有数据了,但是比较大,是我们之前创建的4096M,因此可以减小下。

//复制完以后用e2fsck修复及检测镜像文件系统,resize2fs减小镜像文件的大小
umount rootfs_maker/
e2fsck -p -f ubuntu_rootfs.img
resize2fs -M ubuntu_rootfs.img

        现在我们就得到一个可用的Ubuntu根文件系统了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/651723.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现自动化的服务器部署和配置管理库之pyinfra使用详解

概要 在现代软件开发中,自动化部署和配置管理变得越来越重要。Python pyinfra库是一个强大的工具,可以帮助开发者实现自动化的服务器部署和配置管理。本文将介绍pyinfra库的安装、特性、基本功能、高级功能、实际应用场景以及总结。 安装 首先,来看一下如何安装pyinfra库。…

线上剧本杀小程序:创新玩法下带来的市场活力

近几年来,剧本杀作为一种新型的游戏娱乐模式,深受年轻人的喜欢,成为了当下年轻人娱乐休闲的主要方式之一。剧本杀行业在经历过一段时间的“野蛮生长”后,游戏内容和服务得到的升级发展,游戏的趣味性和体验感也逐渐增强…

线性代数 --- 计算斐波那契数列第n项的快速算法(矩阵的n次幂)

计算斐波那契数列第n项的快速算法(矩阵的n次幂) The n-th term of Fibonacci Numbers: 斐波那契数列的是一个古老而又经典的数学数列,距今已经有800多年了。关于斐波那契数列的计算方法不难,只是当我们希望快速求出其数列中的第100&#xff0…

电影交流|基于SprinBoot+vue的电影交流平台小程序系统(源码+数据库+文档)

电影交流平台目录 目录 基于SprinBootvue的电影交流平台小程序系统 一、前言 二、系统设计 三、系统功能设计 1用户信息管理 2 电影信息管理 3公告信息管理 4论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取…

笔记:编写程序,绘制一个展示 2013~2019 财年阿里巴 巴淘宝+天猫平台的 GMV 的柱形图,实现过程如下:

文章目录 前言一、GMV 的柱形图是什么?二、编写代码总结 前言 编写程序。根据实例 2 的要求,绘制一个展示 2013~2019 财年阿里巴 巴淘宝天猫平台的 GMV 的柱形图,实现过程如下: (1) 导入 matplotlib.pypl…

LMDeploy高效部署Llama-3-8B,1.8倍vLLM推理效率

Llama 3 近期重磅发布,发布了 8B 和 70B 参数量的模型,LMDeploy 对 Llama 3 部署进行了光速支持,同时对 LMDeploy 推理 Llama 3 进行了测试,在公平比较的条件下推理效率是 vLLM 的 1.8 倍。 书生浦语和机智流社区同学光速投稿了 L…

全志ARM-修改开发板内核启动日志

修改开发板内核日志输出级别: 默认输出级别为1,需要用超级用户权限修改 sudo vi /boot/orangepiEvn.txt 把第一行内核启动输出权限改为7,第二行把输出方式该为“serial”串口输出

TCP关闭连接时的一些思考

TCP协议是TCP/IP栈中最复杂的协议,它最大的优点是传输的可靠性,这通过面向连接、按序传输、超时重传、流量控制等机制保证其传输的可靠性。但这并不是我们今天要讨论的重点! TCP通信的过程分别是三个阶段:建立连接、传输数据、关…

科蓝尔环保 | 成都2024全国水科技大会暨技术装备成果展览会

2024年5月13日一15日中华环保联合会、福州大学、上海大学在四川省成都市联合举办“2024全国水科技大会暨技术装备成果展览会”。 大会主题:加快形成新质生产力 增强水业发展新动能 大会亮点:邀请6位院士,100余位行业专家,15场专…

Spark 基础

/* Why Spark一、MapReduce编程模型的局限性1、繁杂:只有Map和Reduce两个操作,复杂的逻辑需要大量的样板代码2、处理效率低:2.1、Map中间结果写磁盘,Reduce写HDFS,多个Map通过HDFS交换数据2.2、任务调度与启动开销大3、…

2024年智能手表行业线上市场销售数据分析

智能手表市场近几年随着各大厂商的加入,逐渐朝着专业化、智能化发展。从一开始被认为是“智商税”、“鸡肋产品”到如今可以成为人体心脑血管健康监测、专业运动测速、移动定位的“多功能电子管家”,智能手表市场仍在不断发展中。 根据鲸参谋数据显示&a…

mac安装java

在 macOS 上配置 Java 环境变量是相对简单的。你需要做的是设置 JAVA_HOME 环境变量,并将 bin 目录添加到 PATH 变量中。本篇是最详细的教程,细化每个步骤过程,保姆级的教程! 1. 下载JDK安装包 到oracle官网下载适合的JDK安装包…