嵌入式中利用ubuntu-base构建根文件系统

2023-05-16

在嵌入式环境中,我们最常用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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式中利用ubuntu-base构建根文件系统 的相关文章

  • 关于DIY电池均衡器--被动均衡---蓄电池--电瓶车电池组电压均衡的经历

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 前言 随着电动车长时间的反复使用 xff0c 电池参数难免会发生变化 xff0c 当电池组中各节电池参数不一时 xff0c 便会出现充电时
  • CMakeLists.txt与Makefile 的区别

    我平时一般是在windows使用VS编程 xff0c 但是偶尔在网上查资料的时候也会下载一些别人的代码 xff0c 其中就经常对CMakeLists txt和Makefile文件产生疑惑 xff0c 下面我来分析一下这两个经常使用的地方 C
  • 链接提示 extern "C"

    在 C 43 43 中调用 C 代码时 xff0c 需要给编译器指定 xff23 代码要按照 xff23 语言的编译器编译 xff0c 否则编译器会将 xff23 代码按照默认的C 43 43 编译器来编译 xff23 代码 xff0c 这
  • C/C++实现你的浪漫表白:浪漫流星雨表白程序,

    想要讨女朋友欢心也巩固自己所学的知识 xff0c 各位小伙伴有自己的想法了吗 xff1f 准备好想要怎样实施了吗 xff1f 有什么美好的计划了吗 xff1f 如果没有的话那么别慌 xff0c 我知道 xff0c 在座的各位肯定都是有自己的
  • DDR4原理及硬件设计

    DDR4 DRAM的工作原理 其引脚按照功能可以分为7类 xff1a 前3类为电源 地 配置 后4类为 xff1a 控制信号 时钟信号 地址信号 数据信号 电源 地 配置信号的功能很简单 xff0c 在此不赘述 控制信号主要是用来完成DDR
  • RK3568最小系统四层板设计总结

    很久没有关注DDR4和DDR5相关知识了 xff0c 利用找工作在家休息间隙从网上下载了RK3568的原理图和6层板的PCB参考设计 xff0c 将6层板改为4层板设计 进行总结之前 xff0c 先将设计时关于Allegro设计小技巧进行总
  • 部门管理经验小结

    很久没有针对管理做总结了 xff0c 回武汉后一直做工程师 xff0c 现对管理知识体系进行总结 xff1a 部门管理按照如下框图1所示 图1
  • STM32驱动开发(二)--USB Device RNDIS虚拟网卡(usb hound抓包完整数据流分析)

    一 简介 抓包工具 xff1a usb hound xff0c 本例使用安卓手机作为device 使用RNDIS功能连接电脑虚拟网卡 抓取完整数据流包按流程进行分析 数据流程熟悉之后 xff0c 查看stm32或者其他厂家的USB库开发RN
  • 瑞芯微RK3568控制板设计总结

    本周刚使用瑞芯微RK3568设计完成一款军用控制PCB板 xff0c 特进行总结便于后续设计提升效率 一 布局相关 器件布局效率及结果对于PCB设计至关重要 xff0c 特别在使用一个新处理器如何高效的展开器件的布局设计非常重要 xff0c
  • xilinx ise 下载地址

    10 1i ed2k file Xilinx ISE DS v10 1 iso 6345773056 5211e011944e70e0e682b3f90a613695 9 1i http download xilinx com direct
  • 输出比较模式时的TIM_OCMode_PWM1和TIM_OCMode_PWM2区别

    配合结构体成员TIM OCInitTypeDef TIM OCPolarity来一起使用 现在假定TIM OCInitTypeDef TIM OCPolarity 61 TIM OCPolarity High 则起始波形为高电位 若TIM
  • 运放稳定性连载4:运放网络,SPICE分析(1)

    作者 xff1a Tim Green xff0c 德州仪器公司 2 0 引言 本系列第2部分将着重分析运放电路 xff08 尤其是两种常见运放网络 xff09 的稳定性 重要的是必须在进行SPICE 仿真前先进行1 阶分析 xff08 主要
  • 运放稳定性连载18:电容负载稳定性:输出引脚补偿(2)

    我们的CMOS RRO输出引脚补偿实例如图9 20所示 这种实际电源应用采用OPA569功率运算放大器作为可编程电源 为了在负载上提供精确的电源电压 xff0c 可以采用一种差动放大器INA152对负载电压实施差动监控 闭环系统可以补偿任何
  • 音响开关机POP声/爆破声最新解决消除方法(D类音频功放IC应用实例)

    POP声是指音频器件在上电 断电瞬间以及上电稳定后 xff0c 各种操作带来的瞬态冲击所产生的爆破声 下文结合自身在推广小功率D类音频功放IC的过程中遇到的设计问题 xff0c 就音频系统开关机POP声的解决思路和大家分享一下 降低或去除P
  • 单片机stm32 USART串口实际应用解析

    stm32作为现在嵌入式物联网单片机行业中经常要用多的技术 xff0c 相信大家都有所接触 xff0c 今天这篇就给大家详细的分析下有关于stm32的出口 xff0c 还不是很清楚的朋友要注意看看了哦 xff0c 在最后还会为大家分享有些关
  • 串口数据传输当中的共用体和结构体转换

    https www cnblogs com codecamel p 4703174 html
  • extern "C" 引起的 error C2059

    extern 34 C 34 引起的 error C2059 转 在扩展名为 C的源文件中使用 extern 34 C 34 会引发错误 C2059 xff0c 错误提示为 xff1a error C2059 syntax error 39
  • 串口接收不定长数据

    这个通用的方法 xff0c 其实原理就是传输两个字节间是否超过了指定时间 xff0c 如果超过了一定的时间 xff0c 就认为是接收完一帧数据了 首先我们要知道 xff0c 串口是接收一个字节 xff0c 就会发生一次中断 xff0c 如果
  • VScode实现本地与远端同步开发的两种方式

    远程服务端开发IDE分析 这里仅对Pycharm 和 Visual Studio Code 简称VS或VScode 做简单的对比分析 xff0c Pycharm是面向专业开发者的Python IDE xff0c 分为Professional
  • MPU6050介绍及姿态解算

    1 介绍 xff1a MPU6050 是 InvenSense 公司推出的全球首款整合性 6 轴运动处理组件 xff0c 相较于多组件方案 xff0c 免除了组合陀螺仪与加速器时之轴间差的问题 xff0c 减少了安装空间 xff08 1 x

随机推荐

  • 2022 数学建模B题 高教社杯 含半成品论文 部分代码 全部数学模型 和全套思路

    2022 数学建模国赛B题 高教社杯 含半成品论文 部分代码 全部数学模型 和全套思路 定时更新 xff01 xff01 全部内容见 xff1a https mianbaoduo com o bread mbd Y5WUkppr 第一问 根
  • 【Java】String字符串的最大长度是多少?

    先说结论 对于Java字符串的最大长度 要分为2种情况进行讨论 编译期 一般情况下 最大长度为65534 运行期 Integer MAX VALUE 接下来通过对一个字节码文件反编译来解释一下为什么 一 编译期String字符串的最大长度为
  • 电脑间通过串口传输数据【串口练习】

    目录 一 串口通信概述1 串口如何连接2 如何计算波特率 二 实验演示1 实验设备2 实际电路连接3 通过串口传输数据 三 总结参考文献 一 串口通信概述 串口通信 xff08 Serial Communications xff09 的概念
  • 基于RK1126的人工智能安防检测方案,支持AI算法二次开发定制

    AI BOX 是一款基于 RK1126 设计的高性能 低功耗的边缘计算设备 xff0c 2Tops RK1126 支持 4K H264 H265 解码器解码 xff0c 支持1080P 64 60fps H264 H265 编码器编码 xf
  • 基于RK3399+PID的手持稳定云台的设计与实现

    手持稳定云台的主要作用是将外界环境因数引起的相机姿态变化进行隔离 如因操作者运动造成的机体震动 风阻力矩等 xff0c 为了确保工作中相机的视轴始终保持期望的姿态不动 云台相机要拍摄出高质量的影像最重要的就是保证相机的视轴相对目标保持稳定
  • 解决Linux 下server和client 通过TCP通讯:accept成功接收却报错的问题

    今天在写简单的TCP通讯例子的时候 xff0c 遇到了一个问题 server 和client能够连接成功 xff0c 并且client也能够正常发送 xff0c 但server就是接收不到 xff0c 在网上搜索一番后 xff0c 终于解决
  • stm32 各头文件或C文件功能

    stm32f10x con h 配置文件 xff1a 加载哪个外设 使能assert 对参数进行检查 xff0c 如果使能了assert 需要在main文件中添加 assert faild 函数 使能assert会增大编译出执行文件的大小
  • Linux网络编程 - TCP Socket 简单练习:select同时监测多个描述符

    运行方式 服务器端 xff0c 可以直接运行命令 xff0c 也可以带参数运行 xff0c 如果不带参数运行 xff0c 则程序自主获取主机ip xff0c 然后默认设定port和lisnum的值 其中port默认为6666 xff0c l
  • ubuntu安装 nautilus(右键单击出现打开终端的插件)

    最近由centos切到 ubuntu 14 04 xff0c 发现习惯的右键单击出现打开终端的选项没有 xff0c 于是查找发现可以安装 nautilus open terminal 插件 步骤如下 xff1a sudo apt get i
  • 云从科技宣布B+轮融资,多家国有基金入股,累计获资35亿元

    雷刚 发自 凹非寺 量子位 报道 公众号 QbitAI 又一家AI公司宣布完成新一轮融资 这次是起步重庆 xff0c 以CV发家的云从科技 云从官宣称 xff0c B 43 轮 xff0c 原股东跟投外 xff0c 多家国家战略投资基金 地
  • CURL 使用教程以及命令总结

    概述 cURL是一个利用URL语法在命令行下工作的文件传输工具 xff0c 1997年首次发行 它支持文件上传和下载 xff0c 所以是综合传输工具 xff0c 但按传统 xff0c 习惯称cURL为下载工具 cURL还包含了用于程序开发的
  • HTTP Basic 认证

    HTTP Basic 认证 Basic 认证是 Web 服务器于客户端之间进行认证的一种方式 xff0c 最初是在HTTP 1 0 规范 xff08 RFC 1945 xff09 中定义 xff0c 后续的有关安全的信息可以在HTTP 1
  • 无法定位程序输入点xxxxx于动态链接库KERNEL32.dll

    问题 xff1a 这次装完Win7 64位专业版 xff0c 安装Dell触摸板程序出现报错 xff0c 提示 无法定位程序输入点AddDllDirectory 于动态链接库KERNEL32 dll上 安装Atom也碰到了这个问题 xff0
  • 华为matebook14 笔记本触摸板操作

    公司发了一台华为了matebook笔记本 xff0c 为了方便操作 xff0c 结合华为官方推荐的操作 xff0c 总结如下的常见操作 xff0c 基本覆盖鼠标的操作 1 单击 xff1a 模拟鼠标左键单击 2 连续单击两次 xff1a 模
  • win10电脑任务栏软件图标变成白色解决办法

    在软件使用过程中 xff0c 有时会发现任务栏的软件图标消失 xff0c 变成了一个白色 xff0c 有点轻微强迫症的我肯定是不能容忍的 下面是总结网页及个人实践的一些记录 xff0c 供日后参考吧 xff1a 参考 xff1a https
  • tp-link 路由器iD登陆时,经常的发送请求失败,解决办法如下

    tp link 路由器iD登陆时 xff0c 经常的发送请求失败 xff0c 不知道这是啥BUG xff0c 解决办法如下 xff1a 1 进入精品应用 2 右边看到 重试 xff0c 3 然后再登陆tp link 路由器iD就成功了
  • c语言编程基础入门必备资料

    数据类型 基本数据类型 类型名称说明char字符类型存放字符的ASCII码int整型存放有符号整数short短整型存放有符号整数long长整型存放有符号整数long long存放有符号整数float单精度浮点型存放精度不高的小数double
  • 使用VMware+Ubuntu,无法切换大小写的异常处理

    问题 xff1a 在虚拟机VMware下 xff0c 使用Ubuntu系统时 xff0c 可能会出现当切换到大写字母后 xff0c 无法在切换成小写 解决方案 xff1a 这是VMware的bug xff0c 解决方法是如下 xff1a 1
  • linux网络编程---IP地址

    目录 一 Linux下IP地址的表示方式 1 1 通用套接字的地址类型定义如下 xff1a 1 2 以太网中的地址类型表示 1 3 结构sockaddr和结构sockaddr in的关系 1 4 本地socket中使用的地址类型 二 IP地
  • 嵌入式中利用ubuntu-base构建根文件系统

    在嵌入式环境中 xff0c 我们最常用busybox yocto或buildroot来构建根文件系统 xff0c 这种情况下 xff0c 当我们需要使用一些组件的时候 xff0c 往往需要我们使用源码编译 xff0c 移植到开发板中 那有没