PC Engines

出自 ArchWiki

PC Engines 是一家瑞士硬件制造商,生产嵌入式 x86 设备。

apu2c4

本文档描述了如何通过 SD 卡或 USB 闪存驱动器将 Arch Linux 安装到 SSD。

硬件

CPU:AMD Embedded G 系列 GX-412TC,1 GHz 四核 Jaguar 核心,64 位

内存:4GB DRAM ECC

注意: 首先移除串口的螺丝!

小心组装设备,并阅读散热系统的指南

安装准备

启动系统

要查看 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

另请参阅 Working with the serial console#Configure console access on the target machine

完成设置后,请记住移除 SD 卡或 USB 闪存驱动器。

LED 控制

虽然有 2 个主线内核驱动程序 (leds-apupcengines-apuv2) 可以控制各种 APU 型号上的 LED,但如果您运行的是主线 PC Engines 固件,建议让 ACPI 处理 LED 控制。与 ledtrig_netdev 模块结合使用,APU LED 可以通过以下 sysfs 条目进行控制

/sys/class/leds/apu2:green:led1
/sys/class/leds/apu2:green:led2
/sys/class/leds/apu2:green:led3

模块处理

您将必须手动加载 ledtrig_netdev。您还需要将 leds_apupcengines-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_nametxrx 条目的原因。
提示
  • 查看当前加载的模块支持的触发器: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]