手动编译 NanoPi debian 系统

几年前一个做电气的网友送我一块 NanoPi M2 的板子,不过安装系统各种启动不成功,后来因为自己又买了树莓派 3B+,所以也就一直没用起来。

NanoPi_M2-2

NanoPi-M2-1602-if01

最近闲来无事,想再挑战一次 NanoPi M2 的系统,但是由于官方 wiki 描述和镜像文件有差异,所以我还是选择了编译系统,想不到就让我编译成功了。因为手上没有 sd 卡,还没测试编译出来的系统,但能编译成功已经算是有进步了。

交叉编译环境

获取友善之臂的官方交叉编译器,并解压:

1
2
3
git clone https://github.com/friendlyarm/prebuilts.git -b master --depth 1
cd prebuilts/gcc-x64
cat toolchain-4.9.3-armhf.tar.gz* | sudo tar xz -C /

将编译器的路几个加入到 PATH 中,把下面的内容复制到你当前的~/.zshrc或者~/.bashrc最底下。

1
2
export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
export GCC_COLORS=auto

执行脚本,让设置在当前的 shell 窗口生效

1
2
3
4
# 如果使用的是 bash 环境
. ~/.bashrc
## 如果使用的是 zsh 环境
. ~/.zshrc

安装完成后,检查一下是否可用

1
arm-linux-gcc -v

NanoPi_M2_1512B_Dimensions

编译镜像

我并没有从头开始编译内核和文件系统,而是使用官方已经编译好的镜像,然后再通过 sd-fuse_s5p4418 生成镜像文件。我特定去看了 issues,用于 NanoPi2 的系统镜像无法启动,选择了master-for-linux-3.4.y,虽然我并不知道我的 M2 算不算所谓的“旧版本”。

先获取代码

1
2
3
git clone https://github.com/friendlyarm/sd-fuse_s5p4418.git
cd sd-fuse_s5p4418
git checkout master-for-linux-3.4.y

master-for-linux-3.4.y分支中,只要两个sh文件,看了 README 的描述,我需要的是编译出镜像文件,等以后有 sd 卡再想办法装进去,那我需要的就是mkimage.sh

1
sudo ./mkimage.sh debian

当我运行这条命令的时候,发现它需要在本地有编译好的内核镜像,我还是先手动下载吧

1
2
3
aria2c -c -j5 -x10 -s4 http://112.124.9.243/dvdfiles/S5P4418/kernel-3.4-roms/images-for-eflasher/debian-jessie-images.tgz
tar xvzf debian-jessie-images.tgz
sudo ./mkimage.sh debian

编译完成后,会在当前项目的根目录下生成一个s5p4418-debian-sd4g-YYYYMMDD.img的镜像文件,但是文件的所有者和权限都没办法用完当前的用户操作。

1
2
ls -al s5p4418-debian-sd4g-20210306.img
-rw-r--r-- 1 root root 3899999232 3 月 6 07:13 s5p4418-debian-sd4g-20210306.img

改一下权限

1
2
sudo chown bubao:users s5p4418-debian-sd4g-20210306.img
sudo chmod 755 s5p4418-debian-sd4g-20210306.img

这就算大功告成了

安装

我使用 balena-etcher 安装到 sd 卡,另外如果想生成qte-core可以使用 http://112.124.9.243/dvdfiles/S5P4418/kernel-3.4-roms/images-for-eflasher/core-qte-images.tgz 替换 http://112.124.9.243/dvdfiles/S5P4418/kernel-3.4-roms/images-for-eflasher/debian-jessie-images.tgz

参考

NanoPi M2/zh

资料


手动编译 NanoPi debian 系统
https://bubao.github.io/posts/d9c40f77.html
作者
一念
发布于
2021年3月6日
许可协议