本文所使用的所有文件都已打包到SDK中,可以直接使用,有些细节我已省略,直接使用我包里的文件即可。
(无需积分,免费下载,里面的东西都来源于官方)
觉得可以的,可以点个赞、点个关注,谢谢。
免费下载SDK链接:https://download.csdn.net/download/m0_55733070/19626284
(记得点个赞,点个关注)
教程已经生成PDF文件,可以下载下来看。
一、安装交叉编译链
安装交叉编译链方法直接使用官方给的方法即可,编译链工具包已经打包到SDK当中。
方法如下
(1)使用命令解压和复制
tar -vxJf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz
sudo cp -r ./gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi /opt/
(2)使用gedit软件打开/bash.bashrc
命令:gedit /etc/bash.bashrc
在文件末尾处,加入
PATH="$PATH:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin"
(3)然后使用命令source /etc/bash.bashrc使其生效
(4)此时可用 arm-linux-gnueabi-gcc -v 进行测试;若普通用户状态下没有成功,通过 sudo su 切换到root用户再尝试;
安装成功后如下:
二、u-boot的编译
(1)cd 到uboot文件夹,由于我们是从SD启动,所以直接
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- licheepi_nano_defconfig
执行后生成了 .config文件。
(2)随后我们就可以进行可视化配置了。
make ARCH=arm menuconfig
(3)取消勾选 [] Enable a default value for bootcmd
勾选 [v] Enable boot arguments;
如下:
(4)开始编译
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4
编译过程中如果遇到什么错误,请自行百度解决,毕竟各自的错误也不同,不能一一提出。
经过编译后会生成一个u-boot-sunxi-with-spl.bin文件
这个就是我们后面要用到的,到此,uboot的编译工作已经完成
三、编译linux内核
(1)首先进行配置,配置文件已经放进文件夹中,直接更名即可使用
使用命令: mv lichee_nano_linux.config .config
(2)如果需要裁剪,可以自行进行 make menuconfig 可视化配置,不要的直接下一步。
(3)完成配置后,就可以开始进行编译了
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4
遇到需要确定的,直接狂按回车键!!!
(4)等待编译完成,完成后会在arch->arm->boot文件夹中生成zimage镜像。
四、编译根文件系统
(根文件系统编译时会下载很多东西,如果下载失败之类的,就重试)
进入准备好的buildroot文件,使用make menuconfig命令进行可视化配置
进入Target optiongs选项,进行如下配置
再进入filesystem images选项
选定需要编译出的镜像方式
随后可以自己进行自己需要的配置,比如进入Target packages–>Interpreter languages and scripting选项,选中python3选项,安装python3.(注意:选定python前要勾选
Toolchain–>[]enable WCHAR support)
选好后,保存,退出。
再执行make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j4进行编译
编译完成后,可以在output/images/文件夹中找到rootfs.tar,这个就是我们需要用到的文件
五、写入SD卡并启动
需要烧录的文件有我们前面编译好的u-boot-sunxi-with-spl.bin文件、image文件、rootfs.tar文件,以及dtb文件。为了方便,可以把编译好的文件拉到一个文件夹里,
其中dtb文件在 linux内核文件夹中的/arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dtb
写入SD卡时需要用到一个软件GParted,这个软件可以直接在ubuntu软件管理中下载。
我们要用这个软件对SD卡分区
步骤如下
1.从这里选定插入的SD卡,注意这点,别选错了。
2.对着SD卡中已有的分区按下鼠标右键,选择卸载,然后删除。
完成后如下图,注意,这个操作是要保存的,保存后才生效。
等待保存完成。
4.然后分配区;
对着未分配的分区,右键,选定新建,
第一个分区的配置如下
第二个如下
分配好后,记得保存。
完成分区操作后,结果如下
此时,分区操作已经完成,接下来就是烧录步骤了。
5.我们先查看我们的sda在系统中的挂载,可以直接在刚才的软件中看,如下图,我的挂载点是 /dev/sda
首先我们要烧录的是uboot文件,cd到u-boot-sunxi-with-spl.bin文件所在的文件夹,使用如下命令进行烧录,其中/dev/sda是我们上一步查看的挂载点,每个人都可能不同,请自己更改。
sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sda bs=1024 seek=8
然后使用df命令查看sd的挂载信息
命令: df|grep ‘sd’
我电脑的挂载信息如图,其中 /media/mo/BOOT 和 /media/mo/rootfs 就是sd卡的分区情况。
拿到信息后,我们就可以拷贝文件到sd卡上了,首先cd到存放文件的文件夹
先拷贝zimage 和dtb
命令:
(请注意,自己的分区挂载,我的是/media/mo/BOOT)
cp zImage /media/mo/BOOT -d
cp suniv-f1c100s-licheepi-nano.dtb /media/mo/BOOT
再将rootfs文件解压到rootfs分区
命令:sudo tar -xvf rootfs.tar -C /media/mo/rootfs
完成以上步骤后,我们可以看到sd卡两个分区的情况
这样子,我们就大功告成啦!!!!
现在启动
启动成功了,直接输入 root就能登陆了