Endsieg77's Studio.

Linux WOC--LicheePi 0

2021/02/09 Share

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
2
cd rootfs
sudo tar cvzf ../debian9.9.rootfs.gz .

解压到tf卡的rootfs分区:

1
2
sudo rm -r /media/endsieg77/rootfs/*
sudo tar xvf debian9.9.rootfs.gz -C /media/endsieg77/rootfs/

eject, 再将tf卡挂载到开发板上.


重定向输出到OLED


步骤略过了, 完成后如下:

(别问我为什么tf卡突然变成32GB了

参考文档:

搬运(来源: 虞尧学长)

CATALOG
  1. 1. Overture
    1. 1.1. 写在前面
    2. 1.2. Introduction to Linux Software System Configuration
    3. 1.3. 一个小坑
    4. 1.4. 编译u-boot
    5. 1.5. 编译Linux Kernel
  2. 2. Day 2
    1. 2.1. 用gparted进行分盘.
    2. 2.2. 烧写TF卡
      1. 2.2.1. 烧写u-boot
      2. 2.2.2. 拷贝zImage, dytb
      3. 2.2.3. 解压rootfs
      4. 2.2.4. 弹出U盘
  3. 3. DayX
    1. 3.1. 测试
    2. 3.2. Debian文件系统
    3. 3.3. 重定向输出到OLED