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

嵌入式芯片:iMX6ULL

准备环境

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

      sudo apt-get update
      sudo 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文件
    bash 复制代码
    sudo nano /etc/network/interfaces.d/eth0
    
    
    
    auto eth0
    iface eth0 inet static
        address 192.168.1.100
        netmask 255.255.255.0
        gateway 192.168.1.1
        dns-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 还没有安装,可以通过运行以下命令来安装:

bash 复制代码
   sudo apt install debootstrap

使用debootstrap构建基础系统

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

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

进入新创建的系统环境

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

bash 复制代码
   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-staticdebootstrap**。

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

相关推荐
snpgroupcn1 小时前
ECC升级到S/4 HANA的功能差异 物料、采购、库存管理对比指南
运维·安全·数据库架构
晨曦启明7112 小时前
Linux云计算SRE-第十八周
linux·运维·云计算
暴躁的小胡!!!2 小时前
Linux权限维持之vim python 扩展后门(五)
linux·运维·服务器·网络·安全
优维科技EasyOps2 小时前
优维眼中的Manus:AI工程化思维重构Agent的运维端启示
运维·人工智能·重构
圣圣不爱学习2 小时前
Calico-BGP FullMesh模式与RR模式 Day04
运维·网络
zhgjx-dengkewen2 小时前
华为eNSP:实验 OSPF单区域
运维·网络·华为·智能路由器
爱敲代码的边芙3 小时前
Golang:实时消息交互系统
运维·服务器
babytiger4 小时前
windows 平台如何点击网页上的url ,会打开远程桌面连接服务器
linux·运维·服务器·windows
DevSecOps选型指南4 小时前
DevSecOps CI/CD 管道中数字供应链安全的集成策略
运维·安全·ci/cd
Arbori_262154 小时前
Linux 命令 for循环
linux·运维·服务器