文章目录
前序
环境 Ubuntu18.04
+ Windows7
本文主要参照 NanoPi M2/zh维基文档
安装交叉编译工具链
克隆交叉编译工具链
git clone https://github.com/friendlyarm/.git -b master --depth 1
//or
git clone https://gitee.com/friendlyelec/prebuilts.git -b master --depth 1
解压
cd prebuilts/gcc-x64
cat toolchain-4.9.3-armhf.tar.gz* | sudo tar xz -C /
解压后生成以下文件
添加PATH
vi ~/.bashrc
vi
的操作就不说明了,不懂的自己查 vi命令汇总,添加以下命令
export PATH=/opt/FriendlyARM/toolchain/4.9.3/bin:$PATH
export GCC_COLORS=auto
执行一下,让其立即生效
. ~/.bashrc
验证安装成功or失败
arm-linux-gcc -v
U-Boot
U-Boot 下载&编译
官方提供的链接是 github
的,下载速度非常慢。
我采用的是将 github
导入 gitee
的方法,直接克隆以下仓库就可以了。
git clone https://gitee.com/jyu_hsy/uboot_nanopi2.git
速度还是可以的
该项目目前默认分支已经为 nanopi2-lollipop-mr1
,故而不需再执行 git checkout
替换分支,执行以下命令即可:
make s5p4418_nanopi2_config
make CROSS_COMPILE=arm-linux-
完成后生成 u-boot.bin
U-Boot更新至NanoPi M2
需要准备 fastboot
来更新正在运行的 NanoPi M2
板上 SD
的 U-Boot
可通过以下命令安装 fastboot
工具
sudo apt-get install android-tools-fastboot
回到 Window
界面下,使用 SecureCRT
登陆到 NanoPi M2
上电启动 2s
内(复位重启就行了),在终端按下回车,进入 u-boot
命令模式
在 u- boot
命令行中输入 fastboot
进入 fastboot
模式
开启 Ubuntu
,执行以下命令
fastboot flash bootloader u-boot.bin
这里有个坑,执行以上指令后,一直卡在 waiting for device
遇到这种问题请检查虚拟机是否启用了 USB控制器
并添加了设备
这里推荐使用的是 USB1.1 控制器
如果你和我一样使用 Oracle VM VirtualBox
,千万不要直接添加一个值为空的 USB筛选器
,这样启动虚拟机后,鼠标键盘统统被接管,只能重启,不是开玩笑的。
编译Linux kernel
准备 mkimage
编译内核需要用到 U-Boot
中的工具 mkimage
可以直接使用以下指令来安装:
sudo apt-get install u-boot-tools
之前在 git
下来的 uboot
其实也有这个工具
使用以下命令编译并安装:
cd uboot_nanopi2
make CROSS_COMPILE=arm-linux- tools
sudo mkdir -p /usr/local/sbin && sudo cp -v tools/mkimage /usr/local/sbin
执行完以上操作,可以发现 /usr/local/sbin
下存在 mkimage
下载内核src
git clone https://github.com/friendlyarm/linux-3.4.y.git
//or
git clone https://gitee.com/ezio_zhang/linux-3.4.y.git
cd linux-3.4.y
编译Debian内核
make nanopi2_linux_defconfig
touch .scmversion
make uImage
编译时间有点长,耐心等待,编译完成后可以发现该路径存在 uImage
文件
替换内核
取出 SD卡
,用读写器读取,并添加该USB设备, 这时Ubuntu
桌面上会出现 boot
及 rootfs
文件(手头这张 SD卡
已经烧过官方镜像了,可能有点不一样),将我们生成的 uImage
移至其中。
后话
维基的教程教程嘎然而止,其实镜像制作并没有结束!
我发现另一篇维基文档 NanoPi / zh 维基文档
可以发现我们还需要移植 Debian
的文件系统,然后再制作 SD卡
。
按照该教程制作的 SD卡
烧录到 NanoPiM2
无法正常启动,可能是教程提供的仓库非 NanoPiM2
所用…
暂时留坑,完。