嵌入式中利用ubuntu-base构建根文件系统
在嵌入式环境中,我们最常用busybox、yocto或buildroot来构建根文件系统,这种情况下,当我们需要使用一些组件的时候,往往需要我们使用源码编译,移植到开发板中。那有没有像ubuntu的文件系统一样,很多工具一个apt命令搞定,答案肯定是可以的。
一、介绍
ubuntu-base 是Ubuntu官方构建的ubuntu最小文件系统,基础包大小通常只有几十兆,但是依托包debain软件包管理器,可以直接使用ubuntu丰富的软件源,很方便的个性化定制嵌入式环境。本文使用的是arm架构的板子,故下面的介绍都是基于arm的,X86、powerpc、ppc等其他架构类似。
二、环境配置
2.1、下载ubuntu-base
下载ubuntu-base的方式有很多,我们可以从官方的地址下载,也可以其它镜像地址下载,如清华源,根据需要,下载自己对应的发行版本,这里我们就已20.04为例。
进入到对应的版本目录后,根据我们的CPU类型,选择对应的文件下载,这里,我们使用的是imx6ul,32位的CPU,我们选择armhf的版本
下载完成后,在宿主机上选择建立一个rootfs目录,将下载的文件ubuntu-base-20.04.4-base-armhf.tar.gz解压到这个目录,需要注意的是:解压后的文件,需要保留ubuntu-base中的文件权限及所有者,解压时需要root权限或者sudo操作,且使用-p
参数保留权限
sudo tar -xpvf ubuntu-base-20.04.4-base-armhf.tar.gz -C rootfs/
2.2、安装qemu
因为我们在x86上挂载配置arm的文件系统,需要使用qemu的环境,ubuntu下安装命令如下:
sudo apt-get install qemu-user-static
将刚刚安装的qemu-user-static复制到rootfs目录中的/usr/bin目录,命令如下:
sudo cp /usr/bin/qemu-arm-static ./usr/bin/
2.3、设置软件源
为了能让ubuntu-base正确挂载且能上网,将 Ubuntu 主机下的 DNS 配置文件/etc/resolv.conf 拷贝到根文件系统中
sudo cp /etc/resolv.conf ./etc/resolv.conf
至于软件源,默认情况下,ubuntu的软件源使用的是http的方式,国内存在访问慢和hash不匹配的情况,影响使用体验。
这里我们使用清华源 ubuntu-ports | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
上面的软件源地址使用的是https,在使用的过程中会报如下的错误,
Reading package lists... Done
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?
E: The method driver /usr/lib/apt/methods/https could not be found.
N: Is the package apt-transport-https installed?
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/dists/xenial/InRelease
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/dists/xenial-updates/InRelease
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/dists/xenial-backports/InRelease
E: Failed to fetch https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/dists/xenial-security/InRelease
E: Some index files failed to download. They have been ignored, or old ones used instead.
故需要在切换上面的源之前,先安装 apt-transport-https。具体步骤如下:
1、挂载文件系统,可以使用下面的两种方式之一
a、需要编写一个挂载脚本和卸载脚本,本文就不列出了,可以参考这个文章
b、使用arch-chroot
linux发行版提供了一个自动化chroot的脚本arch-chroot
,包含自动配置DNS文件、自动挂载虚拟文件系统等操作,用来维护linux系统非常方便,chroot时无需挂载等操作直接执行
2、安装 apt-transport-https 工具
apt update
apt install apt-transport-https
完成后切换上面的清华源即可,这样我们就可以使用https的源了,使用方式与PC的ubuntu一致
三、设置用户及常用软件安装
1、软件安装
默认下,ubuntu-base基本没安装什么工具,如果要正常使用,我们可以根据需要安装,以下基本的几个建议都进行安装
apt update
apt install sudo
apt install vim
apt install net-tools
apt install ethtool
apt install ifupdown
apt install language-pack-en-base
apt install iputils-ping
apt install openssh-sftp-server
2、设置用户,这个根据具体的情况,嵌入式的环境下,我们可以不用设置,直接使用root的用户就行了,如果要设置,执行如下的步骤:
# 1、设置root用户的密码
passwd root
#2、新增用户imx6ul
adduser imx6ul
#3、设置用户使用sudo 权限 前提条件是已经安装了sudo
3、设置本机的名称和本地的IP信息
echo "imx6ul" > /etc/hostname
echo "127.0.0.1 localhost" >> /etc/hosts
echo "127.0.0.1 imx6ul" >> /etc/hosts
4、配置网络,启动DHCP
echo auto eth0 > /etc/network/interfaces.d/eth0
echo iface eth0 inet dhcp >> /etc/network/interfaces.d/eth0
/etc/init.d/networking restart
嵌入式中利用ubuntu-base构建根文件系统相关推荐
- 基于ubuntu-base构建根文件系统并移植到RK3568开发板
目录 前言 一.根文件系统是什么? 二.构建根文件系统的方法 1.debootstrap 2.builroot 3.busybox 4.ubuntu-base 三.进入主题--如何使用ubuntu-b ...
- buildroot构建根文件系统
buildroot构建根文件系统 一.简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.本文使 ...
- Buildroot 构建根文件系统(Jz2440)
1. Buildroot 简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...
- 野火i.MX6ULL Pro开发板构建根文件系统
眼瞅着2020年马上就要到头了,承诺给大家的Linux移植三部曲还差最后一篇,这个拖延癌晚期恐怕今年是治不好了,不到最后的DL绝不妥协-- (这句话是年前写的,写了个开头就疫情了,封城,电脑丢在了公司 ...
- 【ARM】使用Ubuntu-base构建根文件系统
使用Buildroot构建根文件系统 介绍 资源下载 配置根文件系统 设置软件源 安装必要软件 添加新用户 设置主机名称和本机IP 设置终端串口 网络DHCP FTP服务器搭建 串口无法登录 开机启动 ...
- 【ARM】使用Busybox构建根文件系统
Busybox构建根文件系统 介绍 下载 配置busybox 配置交叉编译器 取消静态库编译 添加vi命令的支持 取消简化模块 支持mdev 中文支持 编译 完善根文件系统 创建必要文件夹 复制库 启 ...
- 韦东山uboot_内核_根文件系统学习笔记4.4-第004课_根文件系统-第004节_构建根文件系统之构建根文件系统
一 最小的根文件系统需要的项(笔记4.1 4.2小结) (init 进程需要) 打开终端: /dev/console, /dev/NULL 不设置 inittab 格式中的 id(标准输入.输出和标准 ...
- 教你用 buildroot 构建根文件系统
如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...
- 构建根文件系统(一)
接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...
最新文章
- 厦大计算机研究生和福大,考研:只知道厦门大学?福建还有这些211值得你了解...
- 大数运算(8)——大数幂运算
- 2017年10月08日普及组 蜡烛
- Eclipse4.8.0无法打开 Eclipse MarketPlace
- Js控制弹窗实现在任意分辨率下居中显示
- 【深度学习】TensorFlow之卷积神经网络
- JAVA入门级教学之(面向过程和面向对象的区别)
- C语言/C++编程学习:不找C/C++的工作也要学C/C++的原因
- (129)FPGA面试题-FPGA前仿真与后仿真的区别?
- 登录超时服务器未响应,怎样解决超时时间已到、在操作完成之前超时时间已过或服务器未响应的问题?...
- BCH升级在即,什么是OP_CHECKDATASIG和Canonical Transaction Ordering(一)
- 【机器学习】隐马尔可夫模型及其三个基本问题(四)状态序列预测算法及python实现
- 从挣扎突破到英雄联盟!中国SaaS头部企业阵营渐显
- 显卡更新后重启计算机就没了,电脑重启后显卡出现问题怎么办
- 关于RAID磁盘阵列与阵列卡的介绍 —— 做一个懂它的男人
- linux http error 401,出现HTTP: 401 的时候的解析思路
- ET框架学习——消息系统之四
- pandas计算excel两列的日期差
- onedriver -1T容量,edu邮箱申请。
- Java随机更换背景图片_利用Java处理图片,更换背景
热门文章
- 将AS中Module编译成JRA包引用
- 拉格朗日中值定理(方便理解)
- Salient Object Detection with Pyramid Attention and Salient Edges
- ubuntu-apt软件搜索-文件搜索
- 美国芯片也不愿用昂贵的先进工艺,ASML光刻机高光时刻正在过去
- android 11.0 12.0控制屏幕亮屏和灭屏操作
- 【医学信息学】《统计学习导论-基于r应用》的学习总结
- java web相册_javaWEB之-----------简单的相册管理
- 春晚的撒贝宁是AI虚拟的?这到底是怎么回事!
- Python 63个内置函数超级详解!这63个必会!