Administrator
发布于 2025-06-23 / 7 阅读
0
0

基于DebianLinux定制开发嵌入式Linux系统镜像构建

以下是定制一个基于 Debian Linux 系统、适用于 Orange Pi KunPeng Pro 开发板的系统镜像详细步骤:

准备工作

  1. 硬件准备

    • 一台运行 Linux 的主机(推荐,因为部分工具在 Linux 环境下更方便使用。如果使用 Windows,可通过 WSL 模拟 Linux 环境)。

    • Orange Pi KunPeng Pro 开发板。

    • 一张容量足够的 SD 卡(建议 8GB 或更大)。

  2. 软件准备

    • 安装必要工具:在 Linux 主机上,打开终端并执行以下命令安装所需工具:


bash

sudo apt-get update
sudo apt-get install debootstrap qemu-user-static binfmt-support parted dosfstools kpartx


  • debootstrap:用于创建基础的 Debian 文件系统。

  • qemu - user - staticbinfmt - support:允许在 x86 架构的主机上模拟 ARM 架构来构建系统。

  • parteddosfstoolskpartx:用于磁盘分区和文件系统操作。

创建基础 Debian 文件系统

  1. 创建工作目录:在主机上选择一个合适的位置创建工作目录,例如:


bash

mkdir -p ~/orangepi_debian
cd ~/orangepi_debian


  1. 使用 debootstrap 创建基础系统:执行以下debootstrap命令来创建基础的 Debian 文件系统。这里假设使用 Debian Bullseye 版本,你可以根据实际需求更改版本。


bash

debootstrap --arch=arm64 --foreign bullseye debian_root http://deb.debian.org/debian


  • --arch=arm64:指定目标系统的架构为 ARM64,适用于 Orange Pi KunPeng Pro 的处理器架构。

  • --foreign:表示这是一个交叉编译环境下的引导安装。

  • bullseye:Debian 版本代号。

  • debian_root:是创建的基础文件系统的目录名,可自行命名。

  • http://deb.debian.org/debian:Debian 官方软件源地址。


  1. 挂载必要的文件系统:为了能在这个基础文件系统中进行后续配置,需要挂载一些关键的文件系统:


bash

sudo mount --bind /dev debian_root/dev
sudo mount --bind /dev/pts debian_root/dev/pts
sudo mount --bind /proc debian_root/proc
sudo mount --bind /sys debian_root/sys

配置基础系统

  1. 进入基础系统环境:通过chroot进入刚刚创建的基础 Debian 系统环境:


bash

sudo chroot debian_root /debootstrap/debootstrap --second-stage


  1. 设置软件源:编辑/etc/apt/sources.list文件,更换为适合你所在地区的 Debian 软件源,例如:


bash

nano /etc/apt/sources.list


将文件内容替换为:


plaintext

deb http://deb.debian.org/debian bullseye main contrib non - free
deb - src http://deb.debian.org/debian bullseye main contrib non - free

deb http://deb.debian.org/debian bullseye - updates main contrib non - free
deb - src http://deb.debian.org/debian bullseye - updates main contrib non - free

deb http://security.debian.org/debian - security bullseye - security main contrib non - free
deb - src http://security.debian.org/debian - security bullseye - security main contrib non - free


Ctrl + X,然后按Y,最后按Enter保存并退出。


  1. 更新系统并安装基本工具:更新软件包列表并安装一些基本工具:


bash

apt - get update
apt - get install - y locales sudo net - tools vim


  1. 设置 locale:生成所需的 locale,例如:


bash

dpkg - reconfigure locales


在弹出的界面中,选择你需要的 locale(如en_US.UTF - 8 UTF - 8),然后设置默认 locale。


  1. 创建用户:创建一个普通用户(避免直接使用 root 用户):


bash

adduser your_username
adduser your_username sudo


your_username替换为你想要的用户名。


  1. 设置 root 密码:为 root 用户设置密码:


bash

passwd root

配置内核与设备树

  1. 获取 Orange Pi KunPeng Pro 的内核和设备树文件:你可以从 Orange Pi 官方的 GitHub 仓库或其他官方资源获取适用于该开发板的内核和设备树文件。假设已经下载到~/orangepi_debian目录下,文件名为Image(内核)和dtb.img(设备树)。

  2. 将内核和设备树文件复制到系统中:在chroot环境中执行以下命令:


bash

mkdir -p /boot
cp /path/to/Image /boot/
cp /path/to/dtb.img /boot/


/path/to/替换为实际存放Imagedtb.img文件的路径。

退出 chroot 环境并清理挂载

  1. 退出 chroot 环境:在chroot环境中,按Ctrl + D或执行exit命令退出。

  2. 卸载挂载的文件系统:在主机的终端中执行以下命令卸载之前挂载的文件系统:


bash

sudo umount debian_root/sys
sudo umount debian_root/proc
sudo umount debian_root/dev/pts
sudo umount debian_root/dev

创建可引导的镜像文件

  1. 创建镜像文件:在~/orangepi_debian目录下创建一个空的镜像文件,例如大小为 4GB:


bash

dd if=/dev/zero of=orangepi_debian.img bs=1M count=4096


  1. 对镜像文件进行分区:使用parted工具对镜像文件进行分区:


bash

parted orangepi_debian.img mklabel msdos
parted orangepi_debian.img mkpart primary fat32 1MiB 100%
parted orangepi_debian.img set 1 boot on


  1. 将分区映射到系统:使用kpartx工具将镜像文件中的分区映射到系统:


bash

sudo kpartx - av orangepi_debian.img


假设映射后的设备名为/dev/mapper/loop0p1(实际可能不同,根据终端输出确定)。


  1. 格式化分区:对映射后的分区进行格式化:


bash

sudo mkfs.vfat /dev/mapper/loop0p1


  1. 挂载分区:创建一个挂载点并挂载分区:


bash

mkdir -p ~/orangepi_mount
sudo mount /dev/mapper/loop0p1 ~/orangepi_mount


  1. 将定制的 Debian 系统复制到镜像分区:将之前创建的debian_root目录中的内容复制到挂载的分区中:


bash

sudo rsync -a debian_root/ ~/orangepi_mount/


  1. 卸载分区并删除映射:复制完成后,卸载分区并删除映射:


bash

sudo umount ~/orangepi_mount
sudo kpartx - dv orangepi_debian.img


此时,orangepi_debian.img就是你定制的适用于 Orange Pi KunPeng Pro 开发板的 Debian 系统镜像,可以使用 Etcher 等工具将其烧录到 SD 卡,然后在开发板上启动。


评论