优雅地使用计算器上网!(下) 定制你的 Linux for Nspire

(距离上篇教程发布已经整整一个学期过去了,终于有时间填这个坑了)
注意:本篇教程是面向小白向的,但是仍建议有一定 Linux 基础的计算器玩家尝试 本篇教程将教你如何从零开始定制 Nspire 能使用的 Linux 系统,包括制作 rootfs,配置并编译内核与各类驱动模块


0x00 准备工作

需要准备的东西:
一份 Linux Kernel 源码,可以在 https://kernel.org/ 下载
(需要注意的是,Linux 内核在 4.14 以后的版本中对 Nspire 的支持有些许问题,故建议下载 4.14 以及之前的 longterm 版本)
一台 Linux 系统的点好,并需要配置好交叉编译工具链
一个 4G 以上容量的 U 盘

0x01 制作 rootfs

关于 rootfs 是什么,你可以自行查阅 Wikipedia (逃) 首先你需要安装 debootstrap 等工具,以 Manjaro 系统为例:
sudo pacman -S binfmt-support qemu-user-static debootstrap
其中,debootstrap 是用来制作 rootfs 的工具,而 qemu-user-static 则允许你 chroot 到不同体系结构的 rootfs 中

安装完成后,挂载准备好的 U 盘到任意位置,执行
sudo debootstrap --arch=armel --foreign buster /*挂载 U 盘的位置*/ https://mirrors.ustc.edu.cn/debian
其中,
buster 代表你制作的 rootfs 系统的版本(Debian 10)
armel 全称是 arm eabi little endian,代表你制作的 rootfs 软件包的体系结构,因为 Nspire 使用的是一颗 arm926ejs 内核的处理器,故选择此版本

在等待这条命令执行完毕后,使用 chroot 切换根目录环境至目标 rootfs 切换完成后,因为安装了 qemu-user-static, 可以看到 CPU 已经变成虚拟的 armv7l 版本了 CPU 执行/debootstrap/debootstrap --second-stage.进行第二部分配置

待到配置完成后,按照你的需求安装一些常用的软件包,rootfs 就制作完成了

0x02 配置 Linux 内核

首先确认你已经装好了交叉编译工具链 arm-none-eabi-gcc
关于不同 Linux 发行版安装工具链的方法请自行 Google

cd 到存放 Linux 内核源码的目录,执行 ARCH=arm make menuconfig 进入图形化配置界面 config
设置交叉编译工具为 arm-none-eabi- 并设置目标内核的 CPU 架构与系统类型 cpu-type system-type
配置互联网协议栈 network
配置网卡驱动 因为使用的是 MT7601 无线网卡,在内核内就有驱动支持,直接选定即可 如果你的无线网卡驱动没有内核支持,可以自行寻找源码编译 mt7601
按照你的需求配置一些其他设备的驱动与内核 module ,配置完成后保存配置文件并退出
exit

配置完成后,即可进入下一个环节

0x03 编译 Linux 内核与 Modules

首先编译 Linux 内核
执行 ARCH=arm make -j*你的 CPU 线程数量* 编译
比如一颗 4 核心 8 线程的 CPU,执行 ARCH=arm make -j8
注:如果报错找不到编译器,请查看你的交叉编译工具链的目录是否在 PATH
编译完内核后,继续编译内核模块
执行 ARCH=arm make modules_install INSTALL_MOD_PATH=/*rootfs 所在的目录*/ 全速编译中
build 等到全部编译完成之后,提取编译的 zImagedtb文件
分别位于:
arch/arm/boot/zImage
arch/arm/boot/dts/cx.dtb 之后就是按照上篇教程在计算器上使用了23333 至此,本篇教程结束