在树莓派 Pico 上使用 Unix:FUZIX
FUZIX 由英国计算机科学家 Alan Cox 创建,是用于小型计算机的轻量级 Unix 操作系统。其最初是为 8 位 Zilog Z80 处理器编写的。
David Given 已将 FUZIX 移植到各种架构上,并于近期发布
FUZIX 由英国计算机科学家 Alan Cox 创建,是用于小型计算机的轻量级 Unix 操作系统。其最初是为 8 位 Zilog Z80 处理器编写的。 David Given 已将 FUZIX 移植到各种架构上,并于近期发布了树莓派 Pico 的 RP2040 微型芯片的端口。 Given 将 Fuzix 描述为「老式的 Unix 克隆」。「它将在很小的空间中运行,同时还可以扩展到具有合理数量的RAM(例如兆字节)的计算机unix实用命令,同时还提供了一个相当不错的老式 Unix 环境,它具有多个进程,经典的 Bourne shell 等等。」 FUZIX 仅使用树莓派 Pico 的一个内核,并运行用户可执行文件使用 64KB 的代码和数据、最多 15 个进程、Unix 文件系统、SD 卡支持以及树莓派 Pico 的 UART0 上的串行控制台。 下面介绍如何在树莓派或另一台基于 Linux 的计算机上,让树莓派 Pico 用上 FUZIX。 从源码编译 FUZIX 编译 FUZIX 并不复杂。如果你还没有准备好树莓派 Pico 的工具链,请通过在终端运行下面的命令来安装。 如果 wget 还没有安装,请执行 sudo apt install wget 命令。然后下载安装脚本,执行。 wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh 然后从 FUZIX 仓库获取源码。 git clone https://github.com/davidgiven/FUZIX.git 修改 Makefile 的第一行,设置为 pico-sdk 的路径。例如: export PICO_SDK_PATH = /home/pi/pico/pico-sdk 然后就可以编译 FUZIX UF2 文件和 root 文件系统了。 make world -j 如果一切顺利,在 build/fuzix.uf2 中会出现 UF2 文件,在当前工作目录中有一个 filesystem.img 文件。 现在,您可以按常规方式将 UF2 文件上传到 Pico 上,参考 。 1、按住 BOOTSEL 按钮,然后将 Pico 插入树莓派或 PC 的 USB 接口。 2、Pico 会被识别为大容量存储设备。 3、将下载的 UF2 文件放入 RPI-RP2 卷上。 该卷将自动卸载,树莓派 Pico 就已经开始运行 Unix 了。 创建可引导启动的 SD 卡 上面所得到的 filesystem.img 镜像文件并不具备引导启动的能力。下面将介绍在树莓派或其他类似的 Linux 平台上构建文件系统的方法。 先找一张 microSD 卡,由于我们只需要 34MB,所以几乎是随便找一张什么容量的都可以。这里使用了一张 4GB 的卡。插入读卡器,再通过 USB 插到 PC 上。构建 FUZIX 所需的分区表。这包含两个分区: 1、2MB 的交换分区 2、32MB 的根分区(将根文件系统,即 filesystem.img 复制进去) 使用 lsblk 命令,如果你有空白的未格式化的卡,会显示为 /dev/sda。 $ lsblk 如果是格式化过的卡,则会是下面这样子。 $ lsblk 上面 /media/pi/USB 所挂载的就是 FAT 格式的 SD 卡的 MBR 分区。 要卸载 SD 卡直接使用命令卸载。 $ umount /dev/sda1 然后使用 lsblk 命令会成这个样子。 $ lsblk 此时,我们可以通过将卡的第一部分清零并删除「磁盘起始(start of disk)」结构来删除当前分区表。 $ sudo dd if=/dev/zero of=/dev/sda bs=512 count=1 之后再次运行 lsblk,将会看到 sda1 分区已被删除。接下来,我们将使用 fdisk 创建一个新的分区表。输入以下内容: $ sudo fdisk /dev/sda 进入 fdisk 提示符。然后键入o以创建新的 DOS 磁盘卷标。 Command (m for help): o 键入n创建新分区。 Command (m for help): n 根据磁盘的初始状态,系统可能会提示分区包含 vfat 签名。如果询问,按Y确认即可。 下面我们将该分区类型设置为 7F。 Command (m for help): t 创建 2MB 的交换分区。 下面创建第二个分区,32MB 的根文件系统。 Command (m for help): n 然后在 fdisk 提示符下键入p。 Command (m for help): p 键入w写入并保存分区表。 最后,将 filesystem.img 文件复制到 32MB 的分区中。 $ sudo dd if=filesystem.img of=/dev/sda2 是时候弹出 SD 卡,连接面包板了! 在面包板上接线 如果你是在树莓派上开发,并且之前没有试用过在树莓派上使用 UART 串口,请参考入门指南的第 4.5 节操作。 按照图上所示,连接树莓派、树莓派 Pico、SD 卡模块。 如果你是在笔记本电脑上开发,则可以使用 SparkFun FTDI Basic Breakout 之类的模块将 UART 串口连接到计算机。 无论是哪种方式,树莓派 Pico 上的引脚和 SD 卡模块的引脚对应关系都是一样的,如下: 接好之后,将格式化了的 microSD 卡弹出,插到 SD 卡模块上。然后将树莓派 Pico 通电,FUZIX 就会自动启动了。 连接到 FUZIX 如果你使用树莓派连接 Pico,需要先启用 UART 串行通信。 $ sudo raspi-config 依次选择 Interfacing Options → Serial,出现 “Would you like a login shell to be accessible over serial?” 选择 “No”,然后 “Would you like the serial port hardware to be enabled?” 选择 “Yes”。 退出 raspi-config 时你需要选择 “Yes” 并重启树莓派。 你还可以使用 minicom 连接到 FUZIX: $ sudo apt install minicom 如果你使用 macOS 或者 Windows,你可以用 minicom、screen 或者常用的终端程序。 如果这时候你没有看到任何输出,请拔下树莓派 Pico 并重新插入即可。 最后,输入日期和时间,当出现登录提示时,请以 root 身份登录而无需输入密码。开始你的 FUZIX 探索之旅吧! (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |