PC Engines
PC Engines 是一家瑞士硬件制造商,专注于嵌入式 x86 设备。
apu2c4
本文档介绍如何通过 SD 卡或 USB 闪存驱动器将 Arch Linux 安装到 SSD。
硬件
CPU: AMD 嵌入式 G 系列 GX-412TC,1 GHz 四核 Jaguar 核心,64 位
RAM: 4GB DRAM,带 ECC
请小心组装设备,并阅读 散热系统指南!
准备工作
- 您需要通过串行 (RS-232) 连接到 APU 以控制它。
- 将您的用户添加到 uucp 组。
- 安装 picocom 或类似工具,参见 使用串行控制台#建立连接。
- 下载并验证安装镜像。
启动系统
要查看 BIOS,请使用此命令
$ LANG=C picocom --baud 115200 /dev/ttyUSB0
如果您的设备无法从 SD 卡或 USB 闪存驱动器启动,请在启动时按 F10 调出启动菜单。然后使用 Ctrl+a Ctrl+q 关闭 picocom。
重新连接到 Archiso GRUB
$ LANG=C picocom --baud 38400 /dev/ttyUSB0
按 Tab 进入 CLI 模式,并将以下内核参数添加到该行
console=ttyS0,115200
按 Enter。
现在退出 picocom,并使用第一个命令重新连接以切换到更高的 115200 波特率。最后等待约 30 秒,您将看到一个多彩的启动提示符。
安装系统
现在安装 Arch 最方便的方式是启动 ssh 服务器,然后使用 安装指南。
您可能需要使用 dhclient 获取新 IP 并启动 sshd.service。
SSD 的一个可能的布局可能是这样的
/dev/sda1 2048 264191 262144 128M 83 Linux /dev/sda2 264192 25430015 25165824 12G 83 Linux /dev/sda3 25430016 31277231 5847216 2.8G 82 Linux swap / Solaris
使用带有 GRUB 的 MBR 布局是个好主意
# grub-install --target=i386-pc /dev/sda # grub-mkconfig -o /boot/grub/grub.cfg
如果使用 Syslinux,请确保在启动菜单中提供 console 选项
/boot/syslinux/syslinux.cfg
LABEL arch
MENU LABEL Arch Linux
LINUX ../vmlinuz-linux
APPEND root=UUID=1ef5a2eb-1908-4929-9b91-f6c4183695ac rw console=ttyS0,115200
INITRD ../initramfs-linux.img
请记住在完成设置后移除 SD 卡或 USB 闪存驱动器。
LED 控制
虽然有 2 个主线内核驱动程序 (leds-apu 和 pcengines-apuv2) 可以控制各种 APU 型号上的 LED,但如果您运行的是主线 PC Engines 固件,则建议让 ACPI 处理 LED 控制。结合 ledtrig_netdev 模块,可以通过以下 sysfs 条目控制 APU LED:
/sys/class/leds/apu2:green:led1 /sys/class/leds/apu2:green:led2 /sys/class/leds/apu2:green:led3
模块处理
您需要手动加载 ledtrig_netdev。您还应该禁用 leds_apu 和 pcengines-apuv2。
配置示例
一个常见的用例是将 APU 用作无线 路由器。在这种情况下,一个有线网卡 (wan0) 连接到 ISP 的上游,其余有线和无线网卡桥接 (br0) 起来作为 LAN。使用 netdev 触发器的典型 LED 配置可能如下所示:
LED1: power on / power off indicator LED2: upstream network (wan0) traffic indicator LED3: local network (br0) traffic indicator
要启用此设置
echo "1" > /sys/class/leds/apu2:green:led1/brightness echo "netdev" > /sys/class/leds/apu2:green:led2/trigger echo "wan0" > /sys/class/leds/apu2:green:led2/device_name echo "1" > /sys/class/leds/apu2:green:led2/tx echo "1" > /sys/class/leds/apu2:green:led2/rx echo "netdev" > /sys/class/leds/apu2:green:led3/trigger echo "br0" > /sys/class/leds/apu2:green:led3/device_name echo "1" > /sys/class/leds/apu2:green:led3/tx echo "1" > /sys/class/leds/apu2:green:led3/rx
trigger sysfs 条目,因为这会启用 device_name、tx 和 rx 条目。- 查看当前加载模块支持的触发器:
cat /sys/class/leds/apu2:green:led1/trigger。 - 其他触发器模块可在以下位置找到:
/lib/modules/$(uname -r)/kernel/drivers/leds/trigger。
持久化配置
Systemd 自动模块加载和 tmpfiles.d 可用于跨重启持久化此配置。
/etc/modules-load.d/ledtrig-netdev.conf
ledtrig_netdev
/etc/tmpfiles.d/leds.conf
#Power on/off w /sys/class/leds/apu2:green:led1/brightness - - - - 1 #WAN activity w /sys/class/leds/apu2:green:led2/trigger - - - - netdev w /sys/class/leds/apu2:green:led2/device_name - - - - wan0 w /sys/class/leds/apu2:green:led2/tx - - - - 1 w /sys/class/leds/apu2:green:led2/rx - - - - 1 #LAN activity w /sys/class/leds/apu2:green:led3/trigger - - - - netdev w /sys/class/leds/apu2:green:led3/device_name - - - - br0 w /sys/class/leds/apu2:green:led3/tx - - - - 1 w /sys/class/leds/apu2:green:led3/rx - - - - 1
固件
APUx 设备使用 coreboot 固件,而不是 UEFI。要更新 APU2/3/4/5 设备上的固件,请使用 flashrom。
# flashrom --programmer internal --read old.rom --output read-old.txt # flashrom --programmer internal --write new.rom --output write-new.txt # systemctl poweroff
然后拔下电源再重新插入。如果无法完全重启,例如因为固件正在远程更新,则有可行的变通方法。详情请参见
故障排除
BIOS 串行控制台与 GRUB 串行控制台冲突
如果 GRUB 启动屏幕上的字符显示为双倍,请检查 BIOS 菜单中的串行控制台是否已启用,并禁用它。详细信息请参阅 [1]。