Overture
写在前面
从2月3日开始赶工, 到今天C++ WOC暂时告一段落. 有一些小功能有一些bug, 准备晚点修一下.
那么就来研究一下这个Linux的WOC, 我一向是硬件白痴. 看到这个向导的那一刻, 我的内心是崩溃的.
OMG!!!
由于步骤几乎就是照做, 于是有一部分看起来会很简略. 具体的步骤参考的是学长的文档, 链接放在了文章的最后.
Introduction to Linux Software System Configuration
Linux系统软件的架构由低到高分为四个层次:
- Bootloader, 引导加载程序. 是固化在硬件Flash(全称Flash Memory, 是一种非易失性存储设备)中的引导启动程序. 引导内核启动. Bootloader会在自身与内核分区之间存放一些可设置的参数(Boot parameters), 比如IP地址, 串口波特率, 要传递给内核(Kernel)的命令行参数.
- Kernel, 系统内核. 是整个操作系统(Operation System, OS)的底层, 负责整个硬件的驱动, 以及提供各种系统所需的核心功能, 包括防火墙(Firewall)机制, 是否支持LVM(Logical Volume Manager, 逻辑卷管理)或Quota等文件系统等. 如果内核不认识某个最新硬件, 那么它就不可以被驱动, 也就无法使用. 计算机的工作的底层是硬件的工作, 而内核指导这些硬件如何工作.
- File System, 文件系统. 操作系统中负责管理和存储文件信息的软件机构. 其不仅包含了文件数据也包含了文件的结构.
- Application, 用户应用程序.
不太懂.
一个小坑
我才知道Ubuntu不同的发行版要换不同的源. 对不起我是sb.
编译u-boot
下载, 解压, 进入u-boot的目录.
经过一通整鼓, 现在bootloader编译完成了, 如下图:
ls -al
查看, 发现一个u-boot-sunxi-with-spl.bin
文件, 是我们最终需要的bootloader.
编译Linux Kernel
内核编译完成:
zImage文件取出备用
接着是设备树:
ok 然后make menuconfig进行菜单配置
Target Options->Target Architecture 设置为 ARM(little endian)
然后将Target Architecture Variant 设置为cortex-A7, 如下图
exit返回上级菜单. 将Toolchain->Toolchain Type设置为External toolchain:
exit & save.
接着就可以开始make了
输入
1 | make |
等待了好久, make完成, 如下图:
接着就可以开始准备烧录TF卡了. 今天先做到这, 小摸一会会儿(小声
Day 2
用gparted
进行分盘.
首先安装gparted
1 | sudo apt-get install gparted |
插入并打开gparted选中tf卡.
卸载并删除盘分区, 点击绿勾保存, 如下图:
单机左上角有绿色加号的按钮, 添加一个32MB, fat16格式, 标签为boot的分区, 如下图:
接着把剩下的容量分为一个ext4格式, 标签为rootfs的分区:
点击绿勾, 保存.
拔出读卡器, 再插回, 可以看到有两个我们所命名的盘挂载在电脑上:
烧写TF卡
工作目录:
烧写u-boot
打开终端, 执行:
1 | sudo dd if=u-boot-sunxi-with-spl.bin of=/dev/sdx bs=1024 seek=8 |
将bin文件烧写到TF卡8k偏移处, 注意, of=/dev/sdx中的x要根据实际情况调整, 可以用fdisk -l
查看
完成如下:
拷贝zImage, dytb
1 | sudo cp zImage sun8i-v3s-licheepi-zero-dock.dtb /media/endsieg77/BOOT/ |
同样, 路径根据自己的实际情况改动.
解压rootfs
1 | sudo tar xvf rootfs.tar -C /media/endsieg77/rootfs/ |
解压完成如图:
弹出U盘
千万不要忽略. 右击图标单击eject, 等待图标消失, 即可. 此时系统制作已经完成.
DayX
由于春节WOC搁浅了几天, 今天开始继续解决之前的问题.
之前XShell死活没有启动信息. 然后我特么发现, 板子连了USB转串口还不够, 板子自己需要供电.
终于启动了, 泪目. 我还以为自己前面哪做错了, 结果发现在和空气斗智斗勇.
测试
焊接后如下: (焊接技术支持: 我叔)
连接到PC.
启动后如下: (测试了一下echo
命令, 看来没问题)
Debian文件系统
按照学长说的, 安装了debian的文件系统. 中间有个小插曲. 一开始用来debootstrap的那个网站死活下不下来.
然后我尝试着open link, 发现重定向到了thu的开源镜像站. 于是乎我把那个url替换了一下, 发现可以下载了.
debootstrap
:
压缩rootfs下的内容:
1 | cd rootfs |
解压到tf卡的rootfs分区:
1 | sudo rm -r /media/endsieg77/rootfs/* |
eject, 再将tf卡挂载到开发板上.
重定向输出到OLED
步骤略过了, 完成后如下:
(别问我为什么tf卡突然变成32GB了
参考文档:
搬运(来源: 虞尧学长)