双椒派E2000D开发板Linux环境配置指南
双椒派E2000D开发板Linux环境配置指南
——从内核编译到根文件系统实战详解
📚 目录
- 环境准备:工具链与源码部署
- 内核编译全流程详解
- 设备树定制与配置技巧
- 根文件系统制作
- 思维导图总结
1️⃣ 环境准备:工具链与源码部署
步骤1:创建工具链目录
sudo mkdir /opt/toolchains # 创建交叉编译工具链目录
sudo mkdir /opt/kernel # 创建内核源码目录
步骤2:解压工具链与内核源码
# 解压ARMv8工具链(从资料包复制)
tar -xvf cross_tool/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu.tar.xz -C /opt/toolchains# 解压飞腾定制内核
tar -xvf phytium-linux-kernel.tar.xz -C /opt/kernel
步骤3:配置环境变量
# 永久生效(添加到~/.bashrc)
echo 'export PATH=$PATH:/opt/toolchains/arm-cortex_a9-eabi-4.7-eglibc-2.18/bin:/opt/toolchains/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin' >> ~/.bashrc
source ~/.bashrc# 验证安装
aarch64-none-linux-gnu-gcc --version
预期输出:
gcc version 10.3.1 20210621 (GCC) # 确认版本匹配
2️⃣ 内核编译全流程详解
步骤1:内核配置
cd /opt/kernel/phytium-linux-kernel# 添加设备树支持(针对E2000D开发板)
cp arch/arm64/boot/dts/phytium/e2000d-chillipi-board.dts .# 修改Makefile关键配置
sed -i '7,8 s/^# //' Makefile # 取消ARCH和CROSS_COMPILE注释
echo "ARCH ?= arm64" >> Makefile
echo "CROSS_COMPILE ?= aarch64-none-linux-gnu-" >> Makefile
步骤2:解决依赖问题
# 安装编译依赖
sudo apt install bison flex libssl-dev ncurses-dev -y# 生成默认配置
make e2000_defconfig
步骤3:编译内核
# 启动编译(-jN根据CPU核心数调整)
make -j$(nproc) # 验证生成文件
ls arch/arm64/boot/Image # 内核镜像
ls arch/arm64/boot/dts/phytium/e2000d-chillipi-board.dtb # 设备树二进制
编译成功标志:
Kernel: arch/arm64/boot/Image is ready # 最终输出
3️⃣ 设备树定制与配置技巧
关键设备树配置(e2000d-chillipi-board.dts)
// 示例:配置40Pin GPIO复用功能
&gpio0 {pinctrl-names = "default";pinctrl-0 = <&pinctrl_gpio0>;// 将GPIO18配置为PWM输出pwm_pin: pwm-pin {pins = "GPIO1_A7"; // 对应物理引脚18function = "pwm";};
};// 调试串口配置(匹配bootargs参数)
&uart1 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&pinctrl_uart1>;
};
编译设备树
# 单独编译设备树
make dtbs# 反编译验证(调试用)
dtc -I dtb -O dts e2000d-chillipi-board.dtb > debug.dts
4️⃣ 根文件系统制作
方案1:使用预编译根文件系统
# 解压资料包提供的Ubuntu根文件系统
tar -xvf rootfs-ubuntu.tar.xz -C /opt/rootfs# 或从飞腾官方仓库下载
git clone https://gitee.com/phytium_embedded/phytium-rootfs.git
方案2:自定义Buildroot构建
# 安装Buildroot
sudo apt install buildroot# 配置E2000D专用配置
make phytium_e2000d_defconfig# 添加定制软件包
echo "BR2_PACKAGE_PYTHON3=y" >> .config
make
部署到SD卡
# 假设SD卡挂载在/media/sdcard
sudo cp /opt/kernel/arch/arm64/boot/Image /media/sdcard/boot/
sudo cp /opt/kernel/arch/arm64/boot/dts/*.dtb /media/sdcard/boot/
sudo rsync -a /opt/rootfs/* /media/sdcard/rootfs/# 创建extlinux.conf启动配置
echo "LABEL Linux" > /media/sdcard/boot/extlinux/extlinux.conf
echo " KERNEL /boot/Image" >> /media/sdcard/boot/extlinux/extlinux.conf
echo " FDT /boot/e2000d-chillipi-board.dtb" >> /media/sdcard/boot/extlinux/extlinux.conf
echo " APPEND console=ttyAMA1,115200 root=/dev/mmcblk0p2 rw" >> /media/sdcard/boot/extlinux/extlinux.conf
5️⃣ 思维导图总结
💡 避坑指南:
- 依赖缺失:首次编译前务必安装
bison flex
,否则报错/bin/sh: bison: not found
- 权限问题:操作
/opt
目录需加sudo
,或修改目录权限sudo chown -R $USER /opt
- 设备树匹配:
.dts
文件名必须与bootcmd
加载的设备树名一致- 文件系统权限:
rsync
时用-a
参数保留权限属性,避免启动失败
性能优化技巧:
- CCache加速:在
make
前设置export CCACHE_DIR=/path/to/ccache
,二次编译速度提升70% - 分布式编译:使用
distcc
将编译任务分发到多台机器 - 增量编译:修改代码后只运行
make
,无需make clean
完成以上步骤,您的双椒派E2000D将具备:
✅ 定制化Linux内核 ✅ 专用设备树支持 ✅ 完整Ubuntu根文件系统
原创技术笔记,转载需注明出处。更多系统编程内容持续更新中…
欢迎在评论区交流启动日志和性能测试结果!