ArmHF Debian Chroot¶
在 Linux 系统上进行嵌入式开发时,通常使用交叉编译或者qemu虚拟环境进行软件的构建,生成可以在目标机器上运行的可执行程序。对于 Debian ,为了加快软件开发速度,同时避免交叉编译时自行构建各个依赖库产生各种不必要的干扰,可以选择基于 QEMU 虚拟环境的 Debian Chroot 环境进行软件的开发,构建,以及调试。本篇主要对 Debian Chroot 环境的构建,开发,调试环境进行介绍,方便开发人员能够快速的搭建相关环境,介入软件开发过程。
配置 chroot 环境¶
安装 qemu 和 debootstrap 等工具¶
sudo apt-get install binfmt-support qemu qemu-user-static debootstrap
获取 armhf 系统包¶
Debian Arm 硬浮点系统包有两种方式可以获取,包括 debootstrap 和 qemu-debootstrap ,两者获取方式如下说明。
基于 debootstrap 获取¶
安装 debootstrap, qemu, qemu-arm 等工具。
获取 chroot 系统及软件包。
sudo debootstrap --no-check-gpg --arch=armhf sid ./sid-armhf ftp://ftp.debian.org/debian/
Note
对于上述指令中的 sid 为 Debian 的每日构建版本,属于 Factory 版本,软件时时更新,可能并不稳定。如果希望使用稳定版本,可以选择 jessie (Debian 8),wheezy (Debian 7), squeeze (Debian 6)等稳定版本,不过建议使用最新的稳定版本 jessie 作为生产系统,如果是用于测试或者开发者环境,可以选择 sid 。
基于 qemu-debootstrap 获取¶
Warning
对于 qemu-debootstrap 仅适用于 Debian 或者 Ubuntu 系统,以及这两个系统的衍生系统版本。
对于 x86 机器,则可以使用 qemu-user-static 包中的 qemu-debootstrap 来获取系统包。系统选择参照备注里的说明。
qemu-debootstrap --no-check-gpg --arch=armhf sid /chroots/sid-armhf ftp://ftp.debian.org/debian/
切入 Chroot 环境¶
在完成 Arm 硬浮点架构的系统包获取之后,可以切入 Chroot 环境,进行第一次环境设置。
进入 chroot 环境,挂载 /proc 文件系统
sudo cp /usr/bin/qemu-arm-static sid-armhf/usr/bin sudo chroot /chroots/sid-armhf mount -t proc proc /proc
Note
如果使用的是 qemu-bootstrap 和 schroot ,那么 /proc 的挂载将会有配置文件自动执行。
对于 openSUSE , 则需要拷贝 /usr/bin/qemu-arm 和 /usr/bin/qemu-arm-binfmt 到 sid-armhf/usr/bin 目录。
首次进入系统设置。
在第一次进入系统之后,需要对系统进行设置。在首次进入系统后,需要对系统进行设置,包括阻止系统服务启动,配置软件源等。
Tip
建议创建 /usr/sbin/policy-rc.d 阻止 chroot 环境中的后台服务启动。该文件权限需要修改为 0755 ,其中的内容如下(内容取自pbuilder)。
echo "************************************" >&2 echo "All rc.d operations denied by policy" >&2 echo "************************************" >&2 exit 101
系统更新源配置位于 /etc/apt/sources.list ,由于 debootstrap 生成的软件源不可用,我们需要在其中添加可用的软件源,如下是 armhf 的二进制和源代码源:
deb http://ftp.debian.org/debian sid main deb-src http://ftp.debian.org/debian sid main
Note
软件源需要根据自己的系统版本进行设置,这里使用的是 sid ,对于生产用系统需要根据选择的系统版本进行设置,如 jessie , wheezy ,或者 sequeeze 等。
在完成软件源的添加之后,可以根据需要更新系统,或者添加自己需要的软件源。
sudo apt-get update
准备开发环境¶
安装 gcc, build-essential, scons 等开发工具