debootstrap构建基于Debian的嵌入式系统的rootfs

ops/2024/9/24 0:41:34/

嵌入式芯片:iMX6ULL

准备环境

  • 确保您的开发机器已安装debootstrapqemu-user-static(如果您在非ARM机器上构建ARM rootfs)。
    sudo apt-get updatesudo apt-get install debootstrap qemu-user-static

使用debootstrap创建rootfs

  • 确定您希望在iMX6ULL开发板上运行的Debian版本(如buster, bullseye)和架构(iMX6ULL通常是armhf)。
  • 使用debootstrap创建rootfs:
    sudo debootstrap --foreign --arch=armhf bullseye /path/to/rootfs http://deb.debian.org/debian/
  • 如果您的开发机器不是使用ARM架构的,则需要在此步骤之后安装qemu-user-static
    sudo cp /usr/bin/qemu-arm-static /path/to/rootfs/usr/bin/sudo chroot /path/to/rootfs/debootstrap/debootstrap --second-stage

配置新的rootfs

  • 您需要配置网络、安装必要的软件包、设置时区等。
  • 设置root密码,passwd
  • 添加新用户,adduser newusername

拷贝rootfs到开发板

  • 打包rootfs下所有的文件,tar -vcjf rootfs.tar.bz2 *
  • 使用烧入工具,烧入rootfs

嵌入式系统中配置网络:

  • 产看网卡信息:ip link
  • 查看网卡eth0信息:ip addr show eth0
  • 配置网卡eth0自动获取ip:dhclient eth0
  • 开启/关闭 eth0网卡:sudo ip link set eth0 up/down
  • 网络服务重启:
    • 使用 systemd-networkd 的系统:systemctl restart systemd-networkd
    • 设备使用 NetworkManager:systemctl restart NetworkManager
    • systemctl restart networking
  • 配置静态ip
    • sudo ip addr add 192.168.1.2/24 dev eth0
    • /etc/network/interfaces.d/ 路径下新建eth0文件
    • sudo nano /etc/network/interfaces.d/eth0auto eth0
      iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8 8.8.4.4

      使用ifconfig:apt-get install net-tools

注:

debootstrap 是一个为Debian及其衍生系统如Ubuntu提供的工具,它能够创建一个基础的Debian系统。这个工具通常用于初始化一个新的Debian系统环境,用于安装,在chroot环境中创建一个干净的开发或打包环境,或者构建可引导的镜像。

debootstrap 很方便,因为它可以在不同架构的计算机上使用,只需要有足够的权限来安装并执行即可,不一定要在Debian系统上运行。

以下是使用 debootstrap 的一些基本步骤:

安装debootstrap
如果 debootstrap 还没有安装,可以通过运行以下命令来安装:

   sudo apt install debootstrap

使用debootstrap构建基础系统
你可以通过指定目标架构,Debian版本和目标文件夹来创建一个基本的系统。例如,创建一个bullseye(Debian 11)的基础系统:

   sudo debootstrap --arch amd64 bullseye /path/to/new/root/ http://deb.debian.org/debian/
  • --arch 指定了目标架构,例如 amd64armhfarm64 等。
  • bullseye 是目标发行版的代号,可以替换为 stabletesting 或 sid,或其它历史发行版代号如 stretchbuster 等。
  • /path/to/new/root/ 是系统文件将要被安装到的目录路径。
  • http://deb.debian.org/debian/ 是Debian的官方软件仓库;你也可以根据地理位置或其他需求选择不同的镜像。

进入新创建的系统环境
如果需要为新的根文件系统进行更多配置,可以使用 chroot 进入新创建的环境:

   sudo chroot /path/to/new/root/

此时,你将在一个新的Debian环境中,可以进行安装软件包、用户设置或其他配置。

请注意,你需要有root访问权限来使用 debootstrap,因为它涉及到系统级的文件操作。在运行过程中,debootstrap 会下载需要的所有软件包并解压到指定目录中,创建一个可以使用的基础系统。

qemu-user-static 是一个使用 QEMU(Quick Emulator)技术的工具套件,使你能够在不同的CPU架构上执行非本机架构的二进制文件。它通过在用户空间(User space)模拟不同的处理器来实现这一功能,从而允许跨架构软件开发和测试。

例如,你可以在基于x86的机器上运行编译为ARM或PowerPC等架构的应用程序。这对于开发者来说非常有用,尤其是在开发面向多种硬件平台的软件时,或者构建和测试嵌入式系统镜像。

qemu-user-static常用于结合chroot或者容器技术(如Docker)在主机上设置一个交叉编译环境或了解其他架构的操作系统。

安装 qemu-user-static

在Debian、Ubuntu等基于Debian的系统上,你可以使用下列命令安装qemu-user-static

sudo apt update
sudo apt install qemu-user-static

其他Linux发行版也可能包含qemu-user-static,但安装方法可能会有所不同。

使用 qemu-user-static 的一个实例

1. **安装 qemu-user-static 和 debootstrap**。

2. 使用 debootstrap 创建一个基于ARM架构的Debian根文件系统

   sudo debootstrap --arch=armhf --foreign bullseye /path/to/arm-chroot http://deb.debian.org/debian/

3. 将 qemu-arm-static 二进制文件复制到新创建的根文件系统内,这样CHROOT环境就能用模拟的方式运行ARM的二进制文件了。

   sudo cp /usr/bin/qemu-arm-static /path/to/arm-chroot/usr/bin

4. 使用 chroot 进入新的根文件系统

   sudo chroot /path/to/arm-chroot

现在,你就能在这个CHROOT环境下运行ARM架构的命令和应用程序了。

使用qemu-user-static可以在主机架构上暂时“模拟”目标架构,从而极大地方便了跨平台开发和测试的过程。它尤其对于开发针对特定硬件或嵌入式设备的应用程序非常有用。


http://www.ppmy.cn/ops/38447.html

相关文章

vue+springboot实现excel批量数据的导入导出

①后端配置端口:修改UserController UserController: package com.example.springboot.controller;import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.…

Lib city笔记:TrajectoryDataset

1 AbstractDataset 抽象类,所有数据集的基类 2 TrajectoryDataset 2.1 __init__ 2.2 get_data 2.3 cutter_filter 2.3.1 按照时间间隔切割 2.3.2 按照同一天切割 2.3.3 按照固定窗口长度切割 cut完的轨迹样子 每一个key是一个轨迹的id,对应的value内容…

OSPF邻居邻接关系

原理概述 OSPF网络中,路由器在发送任何链路状态信息之前,必须先建立起正确的OSPF邻居邻接关系。 OSPF路由器是使用Hello报文来建立邻居关系的。OSPF路由器会检查所收到的Hello报文中各种参数,如Router-ID、Area-ID、认证信息、网络掩码、He…

我的Transformer专栏来啦

五一节前吹的牛,五一期间没完成,今天忙里偷闲,给完成了。 那就是初步拟定了一个《Transformer最后一公里》的写作大纲。 之前一直想写一系列Transformer架构的算法解析文章,但因为一直在忙(虽然不知道在忙啥&#xf…

开源离线AI笔记应用

前言 Reor 是一款人工智能驱动的桌面笔记应用程序,它能自动链接相关笔记、回答笔记中的问题并提供语义搜索。所有内容都存储在本地,支持 Windows、Linux 和 MacOS。Reor 站在 Ollama、Transformers.js 和 LanceDB 等巨头的肩膀上,使 LLM 和嵌…

Adobe系列软件安装

双击解压 先运行Creative_Cloud_Set_Up.exe。 完毕后,运行AdobeGenP.exe 先Path,选路径,如 C:\Program Files\Adobe 后Search 最后Patch。 关闭软件,修图!

8款好用的电脑监控软件分享

在这个数码时代,电脑如同我们的得力助手,陪伴我们走过工作、学习和娱乐的每一个瞬间。然而,随着电脑使用频率的增加,电脑监控的需求也悄然崛起。别担心,市场上已经涌现出一大批出色的电脑监控软件,它们就像…

Makefile入门

1、Makefile编译过程 Makefile文件中的命令有一定规范,一旦该文件编写好以后在Linux命令行中执行一条make命令即可自动编译整个工程。不同厂家的make可能会稍有不同,并且语法上也有区别,不过基本思想都差不多,主要还是落在目标依赖…