在嵌入式环境中,我们最常用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构建根文件系统相关推荐

  1. 基于ubuntu-base构建根文件系统并移植到RK3568开发板

    目录 前言 一.根文件系统是什么? 二.构建根文件系统的方法 1.debootstrap 2.builroot 3.busybox 4.ubuntu-base 三.进入主题--如何使用ubuntu-b ...

  2. buildroot构建根文件系统

    buildroot构建根文件系统 一.简介 Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.本文使 ...

  3. Buildroot 构建根文件系统(Jz2440)

    1. Buildroot 简介      Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和 ...

  4. 野火i.MX6ULL Pro开发板构建根文件系统

    眼瞅着2020年马上就要到头了,承诺给大家的Linux移植三部曲还差最后一篇,这个拖延癌晚期恐怕今年是治不好了,不到最后的DL绝不妥协-- (这句话是年前写的,写了个开头就疫情了,封城,电脑丢在了公司 ...

  5. 【ARM】使用Ubuntu-base构建根文件系统

    使用Buildroot构建根文件系统 介绍 资源下载 配置根文件系统 设置软件源 安装必要软件 添加新用户 设置主机名称和本机IP 设置终端串口 网络DHCP FTP服务器搭建 串口无法登录 开机启动 ...

  6. 【ARM】使用Busybox构建根文件系统

    Busybox构建根文件系统 介绍 下载 配置busybox 配置交叉编译器 取消静态库编译 添加vi命令的支持 取消简化模块 支持mdev 中文支持 编译 完善根文件系统 创建必要文件夹 复制库 启 ...

  7. 韦东山uboot_内核_根文件系统学习笔记4.4-第004课_根文件系统-第004节_构建根文件系统之构建根文件系统

    一 最小的根文件系统需要的项(笔记4.1 4.2小结) (init 进程需要) 打开终端: /dev/console, /dev/NULL 不设置 inittab 格式中的 id(标准输入.输出和标准 ...

  8. 教你用 buildroot 构建根文件系统

    如果想要构建完整的根文件系统,大家一般都是使用buildroot,它不仅包含了 busybox 的功能,而且里面还集成了各种软件,需要什么软件就选择什么软件,不需要我们去移植. 嵌入式系统三大部分:b ...

  9. 构建根文件系统(一)

    接着前边内核移植的文章,记录根文件系统的构建. 这里要用到强大的busybox,我选择的版本是busybox-1.18.5.tar.bz2 ,1.17的也可以:之所以选择这个版本是因为基于现在的交叉编 ...

最新文章

  1. 厦大计算机研究生和福大,考研:只知道厦门大学?福建还有这些211值得你了解...
  2. 大数运算(8)——大数幂运算
  3. 2017年10月08日普及组 蜡烛
  4. Eclipse4.8.0无法打开 Eclipse MarketPlace
  5. Js控制弹窗实现在任意分辨率下居中显示
  6. 【深度学习】TensorFlow之卷积神经网络
  7. JAVA入门级教学之(面向过程和面向对象的区别)
  8. C语言/C++编程学习:不找C/C++的工作也要学C/C++的原因
  9. (129)FPGA面试题-FPGA前仿真与后仿真的区别?
  10. 登录超时服务器未响应,怎样解决超时时间已到、在操作完成之前超时时间已过或服务器未响应的问题?...
  11. BCH升级在即,什么是OP_CHECKDATASIG和Canonical Transaction Ordering(一)
  12. 【机器学习】隐马尔可夫模型及其三个基本问题(四)状态序列预测算法及python实现
  13. 从挣扎突破到英雄联盟!中国SaaS头部企业阵营渐显
  14. 显卡更新后重启计算机就没了,电脑重启后显卡出现问题怎么办
  15. 关于RAID磁盘阵列与阵列卡的介绍 —— 做一个懂它的男人
  16. linux http error 401,出现HTTP: 401 的时候的解析思路
  17. ET框架学习——消息系统之四
  18. pandas计算excel两列的日期差
  19. onedriver -1T容量,edu邮箱申请。
  20. Java随机更换背景图片_利用Java处理图片,更换背景

热门文章

  1. 将AS中Module编译成JRA包引用
  2. 拉格朗日中值定理(方便理解)
  3. Salient Object Detection with Pyramid Attention and Salient Edges
  4. ubuntu-apt软件搜索-文件搜索
  5. 美国芯片也不愿用昂贵的先进工艺,ASML光刻机高光时刻正在过去
  6. android 11.0 12.0控制屏幕亮屏和灭屏操作
  7. 【医学信息学】《统计学习导论-基于r应用》的学习总结
  8. java web相册_javaWEB之-----------简单的相册管理
  9. 春晚的撒贝宁是AI虚拟的?这到底是怎么回事!
  10. Python 63个内置函数超级详解!这63个必会!