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

相关推荐
小O_好好学1 小时前
CentOS 7文件系统
linux·运维·centos
哲伦贼稳妥2 小时前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
john_hjy2 小时前
11. 异步编程
运维·服务器·javascript
x晕x2 小时前
Linux dlsym符号查找疑惑分析
linux·运维·服务器
活跃的煤矿打工人2 小时前
【星海saul随笔】Ubuntu基础知识
linux·运维·ubuntu
tangdou3690986553 小时前
两种方案手把手教你多种服务器使用tinyproxy搭建http代理
运维·后端·自动化运维
北京智和信通3 小时前
云平台和虚拟化智慧运维监控,全面提升故障感知与处置能力
运维·虚拟化·云平台·虚拟机监控
fasewer3 小时前
第五章 linux实战-挖矿 二
linux·运维·服务器
楚灵魈3 小时前
[Linux]从零开始的网站搭建教程
linux·运维·服务器
小小不董3 小时前
《Linux从小白到高手》理论篇:深入理解Linux的网络管理
linux·运维·服务器·数据库·php·dba