跳转至内容

PC Engines

来自 ArchWiki

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

apu2c4

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

硬件

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

RAM: 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

另见 使用串行控制台#配置目标机器上的控制台访问

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

LED 控制

虽然有 2 个主线内核驱动程序 (leds-apupcengines-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_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]