Chrome OS 设备

来自 ArchWiki
(重定向自 Chromebook
警告: 本文依赖于第三方脚本和修改,可能会不可修复地损坏您的硬件或数据。

本文旨在提供关于如何在 Acer、HP、Samsung、Toshiba 和 Google 制造的 Chrome OS 设备系列上安装 Arch 的信息。目前此页面正在进行改版,并且正在构建更多特定于型号的页面,其中列出了一些以下信息。

注意: 本文介绍如何通过激活开发者模式来安装 Arch Linux。有关如何在 ChromeOS 容器中安装 Arch Linux 而无需启用开发者模式的说明,请参阅 Crostini

简介

传统启动模式

所有最新的基于 Intel 的 Chrome OS 设备(从 2013 Chromebook Pixel 开始)都具有传统启动模式,旨在允许用户启动 Linux。传统启动模式具有专用的固件区域 RW_LEGACY,该区域设计为用户可写入的(因此使用“RW”表示法),并且与固件的 ChromeOS 部分完全分离(即,更新是安全的,并且不会使设备变砖)。它由 SeaBIOS payload of coreboot 启用,coreboot 是用于所有 Chrome OS 设备的开源固件(第一代 Chromebook 和一些早期的 ARM 型号除外)。SeaBIOS 的行为类似于传统的 BIOS,它启动到磁盘的 MBR,然后从那里启动到标准引导加载程序,如 Syslinux 和 GRUB。

使用基于 Core-i 的 SoC(Haswell、Broadwell、Skylake、KabyLake)的型号大多附带功能正常的传统启动模式 payload;更新到第三方构建可以提供错误修复和附加功能。使用基于 Atom 的 SoC(Baytrail、Braswell、Apollolake)的型号具有传统启动模式功能,但不附带 RW_LEGACY/SeaBIOS payload(固件的这一部分是空白的)。这些型号需要加载第三方 RW_LEGACY 固件才能使传统启动模式正常工作。

没有传统启动模式/SeaBIOS 的型号

为了在未将 SeaBIOS 作为已安装固件一部分的 Chrome OS 设备上安装 Arch Linux,可以采取以下方法之一

  • 如果设备支持传统启动模式,但不附带功能正常的 RW_LEGACY payload(或者根本不附带),则可以将 SeaBIOS payload 刷写到固件的 RW_LEGACY 部分。这是 100% 安全的,因为它写入到固件映像的用户可写入区域,该区域与 ChromeOS 完全分离/不影响 ChromeOS。在您的 ChromeOS 设备上安装/更新 RW_LEGACY 固件的最简单方法是通过 MrChromebox 的 固件实用程序脚本,该脚本支持最广泛的设备,并提供最新的 SeaBIOS 构建;也可以使用 Chrome OS 的 flashrom 手动更新 RW_LEGACY 固件(需要下载/编译您自己的构建),或使用 John Lewis 的 flash_chromebook_rom.sh 脚本(不再受支持)。
  • 刷写完整的 自定义固件,其中包括 SeaBIOS 或 UEFI payload,并删除所有特定于 ChromeOS 的部分。
  • 刷写固件的 BOOT_STUB 部分。此方法将 stock ChromeOS payload (depthcharge) 替换为 SeaBIOS。从理论上讲,这是一种比刷写完整固件更安全的方法,但可能存在一些限制(例如,不支持挂起或 VMX)。这是 John Lewis 的 flash_chromebook_rom.sh 脚本中的 Modify ROM to run SeaBIOS exclusively 选项和 MrChromebox 的脚本中的 Flash BOOT_STUB firmware 选项。
  • 采用 ChrUbuntu 方法,该方法使用 Chrome OS 内核和模块。
  • 构建并签署您自己的内核,请参阅 [1] [2]

本页描述的 安装 过程尝试涵盖通过刷写自定义固件在没有 SeaBIOS 的型号上安装 Arch Linux 的方法。

固件写入保护简介

所有 Chrome OS 设备都具有固件写入保护功能,该功能限制对闪存芯片某些区域的写入访问。了解这一点很重要,因为您可能需要禁用硬件写入保护作为安装过程的一部分(以更新 GBB 标志或刷写自定义固件)。

有关更多详细信息,请参阅 Chrome OS 设备/自定义固件#固件写入保护

准备工作

  • 访问您的 Chrome OS 设备 的 ArchWiki 页面。
  • 如果您的设备没有 ArchWiki 页面,那么在继续之前,请收集有关设备的信息,如果您成功安装了 Arch Linux,请考虑为您的型号添加一个新的 ArchWiki 页面(您可以使用 Category:Chrome OS devices 中的现有页面作为示例)。
  • 完整阅读本指南,并确保在进行任何更改之前了解所有步骤。

Chrome OS 设备

有关硬件比较以及 SeaBIOS 可用性和存储扩展的详细信息,请参阅 Chrome OS 设备/Chromebook

通用硬件建议和说明

  • 在升级 Chrome OS 设备的内部 SSD 时,MyDigitalSSD M.2 NGFF SSD 驱动器可能是最流行的选择。在 Arch 论坛的 Acer C720 主题中,有多个 MyDigitalSSD SSD 驱动器故障的案例 [3] [4] [5] 以及网络上的更多案例。如果 SSD 已升级到 MyDigitalSSD 型号,则强烈建议经常备份系统和数据。建议使用其他品牌的 SSD 升级 SSD。请注意,这可能是由于 SSD 固件问题,因此强烈建议更新 SSD 固件。
  • Transcend MTS400 M.2 NGFF SSD 驱动器在启用 ALPM 时会发生故障(至少使用 stock Coreboot 固件时会发生故障),ATM 没有 SSD 固件更新可以修复此错误,因此强烈建议禁用 ALPM(如果已安装电源管理守护程序(已启用它)),请参阅 解决 SATA 电源管理相关错误如何在 Chrome OS 中禁用 ALPM

安装

警告: 在未附带 SeaBIOS 的 ChromeOS 设备上安装需要刷写自定义固件,某些类型的自定义固件有可能使您的设备变砖。
注意: 虽然以下信息应适用于所有带有 coreboot 固件(附带或不附带 SeaBIOS payload)的 ChromeOS 设备,但某些型号可能需要进行进一步调整。

通用安装过程

  • 启用开发者模式。
  • 带有功能性传统启动模式/SeaBIOS 的 ChromeOS 设备
    • 启用传统启动模式。
    • 将 SeaBIOS 设置为默认值(可选但强烈建议,需要禁用写入保护)。
  • 没有功能性传统启动模式的 ChromeOS 设备
    • 刷写以下类型的自定义固件之一
      • 刷写 RW_LEGACY 固件(零风险)
      • 刷写 BOOT_STUB 固件(极低风险)。
      • 刷写完整自定义固件(低风险)。
  • 准备安装介质。
  • 启动 Arch Linux 安装介质并安装 Arch。

启用开发者模式

开发者模式 是访问 ChromeOS 内部超级用户 shell 所必需的,这对于对系统进行更改(如允许通过 SeaBIOS 启动)是必需的。

警告: 启用开发者模式将擦除您的所有数据。

要启用开发者模式

  • 按住 Esc+⟳ 键(通常是 F3 的位置),然后按 电源 按钮。这将进入恢复模式。
    • Chromeboxes 有一个专用的恢复按钮,应在开机时按下/按住该按钮
  • Ctrl+d(无需提示)。它会要求您确认,然后系统将恢复其状态并启用开发者模式。
注意
  • 有时,按 Ctrl+d 会提示您关闭 OS 验证。执行此操作,然后再次按住 Ctrl+d,直到系统重新启动进入开发者模式的警告。
  • 在白色启动画面中按 Ctrl+d(或等待 30 秒以听到哔声并启动)以进入 ChromeOS。

访问超级用户 shell

启用开发者模式后,您将需要访问超级用户 shell。您如何执行此操作取决于您是否已配置 ChromeOS。

在不登录 ChromeOS 的情况下访问超级用户 shell

如果您尚未配置 ChromeOS,只需按 Ctrl+Alt+F2 (F2 是顶行上的“向前”箭头,→),您将看到一个登录提示符。

  • 使用 chronos 作为用户名,它不应提示您输入密码。
  • 使用 sudo 成为超级用户,使用命令 sudo su -

在登录 ChromeOS 的情况下访问超级用户 shell

注意: 从 ChromeOS 版本 117 开始,此方法不再有效,因为在 crosh shell 中不允许使用 sudo 命令。上述另一种方法是访问超级用户 shell 的唯一方法。

如果您已配置 ChromeOS

  • 使用 Ctrl+Alt+t 打开一个 crosh 窗口。
  • 使用 shell 命令打开一个 bash shell。
  • 使用 sudo 成为超级用户,使用命令 sudo su - 来完成此操作。

启用传统启动模式

如果您的 ChromeOS 设备未通过 SeaBIOS 附带传统启动模式支持,或者您更喜欢安装自定义固件,请继续 #刷写自定义固件

这将通过 coreboot 中的开发者模式屏幕启用预安装版本的 SeaBIOS。

  • 在您的超级用户 shell 中输入
# crossystem dev_boot_legacy=1
  • 重启计算机。

您现在可以通过在白色启动画面中按 Ctrl+l 来启动 SeaBIOS。

注意: 如果您打算继续使用预安装的 SeaBIOS 路线,并且认为您不会喜欢每次启动都必须按 Ctrl+l 才能进入 SeaBIOS,那么您可以将 coreboot 设置为默认启动到 SeaBIOS。这需要禁用硬件固件写入保护。

您现在应该在您的 ChromeOS 设备上启用了 SeaBIOS,如果您选择不将其设置为默认值,则可以继续 #安装 Arch Linux

默认启动到 SeaBIOS

要默认启动 SeaBIOS,您需要运行 set_gbb_flags.sh 脚本,它是 ChromeOS 的一部分。该脚本使用 flashrom 和 gbb_utility 读取 RO_GBB 固件区域,修改标志,并将其写回闪存。GBB 标志也可以使用 MrChromebox 的 固件实用程序脚本 在 ChromeOS 或 Arch 下设置(后者需要使用特定的内核参数启动以放松内存访问限制)。

警告: 如果您不设置 GBB 标志,则完全放电或断开连接的电池会将 dev_boot_legacy crossystem 标志重置为其默认值,从而取消以传统启动模式启动的能力。虽然这曾经需要您恢复 Chrome OS 并擦除内部存储上的 Arch Linux 安装,但 GalliumOS 开发人员创建了一组“fixflags”恢复映像,这些映像不是擦除内部存储,而是简单地重新设置 dev_boot_legacy crossystem 标志。请参阅 galliumos.org/fixflags
  • 禁用硬件写入保护。
要查找硬件写入保护螺丝/开关/跳线的位置以及如何禁用它,请访问您的 ChromeOS 设备 的 ArchWiki 页面。如果 ArchWiki 上没有关于您的设备的信息,请访问 ChromeOS 设备的开发者信息coreboot 的 Chromebooks 页面
有关固件保护的更多信息,请参见 Chrome OS 设备/自定义固件#固件写入保护
# flashrom --wp-disable
  • 检查写入保护是否已禁用。
# flashrom --wp-status
  • 运行不带参数的 set_gbb_flags.sh
# /usr/share/vboot/bin/set_gbb_flags.sh
  • 这将列出所有可用标志。我们感兴趣的是
GBB_FLAG_DEV_SCREEN_SHORT_DELAY 0x00000001
GBB_FLAG_FORCE_DEV_SWITCH_ON 0x00000008
GBB_FLAG_FORCE_DEV_BOOT_LEGACY 0x00000080
GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY 0x00000400
  • 因此,为了将 SeaBIOS 设置为默认值,超时时间为 1 秒,防止通过空格键意外退出开发者模式,并确保在电池耗尽/断开连接的情况下传统启动模式保持启用状态,我们将标志设置为如下
# /usr/share/vboot/bin/set_gbb_flags.sh 0x489
  • 重新启用软件写入保护。
# flashrom --wp-enable
注意: 所有这些步骤都由 MrChromebox 的固件实用程序脚本自动化,因此如果使用它来安装/更新您的 RW_LEGACY 固件,最简单的方法也是通过脚本设置标志。

您的 ChromeOS 设备现在将默认启动到 SeaBIOS,您可以继续 安装 Arch Linux,如果您的设备启动正常,您可以选择重新启用硬件写入保护。

刷写自定义固件

注意: 以下步骤说明如何从 ChromeOS 刷写自定义固件,有关如何从 Arch Linux 刷写自定义固件的信息,请访问 Chrome OS 设备/自定义固件 页面
  • 禁用硬件写入保护。
您将需要禁用硬件写入保护,可以使用开关、跳线或螺丝,或者断开电池连接。要了解如何禁用它,请访问您的 ChromeOS 设备 的 ArchWiki 页面。如果 ArchWiki 上没有关于您的设备的信息,请访问 ChromeOS 设备的开发者信息coreboot 的 Chromebooks 页面
有关固件保护的更多信息,请参见 Chrome OS 设备/自定义固件#固件写入保护
  • 输入命令以运行 MrChromebox 或 John Lewis 的固件脚本。
    注意: 此处不发布原因是强迫您访问该站点并在继续之前阅读说明。
  • 退出脚本后,请务必在重新启动系统之前将备份的固件复制到外部存储(如果脚本未向您提供该选项)。

您现在应该在您的设备上安装了自定义固件,祈祷一切顺利并重新启动。

刷写固件后,您可以继续 #安装 Arch Linux

安装 Arch Linux

准备安装介质

创建 Arch Linux 安装程序 USB 驱动器

启动安装介质

  • 将 USB 驱动器插入 ChromeOS 设备,并在白色启动画面中按 Ctrl+l 启动 SeaBIOS(如果 SeaBIOS 未设置为默认值)。
  • Esc 以获得启动菜单,然后选择与您的 USB 驱动器对应的数字。

应该会出现 Arch Linux 安装程序启动菜单,并且可以像往常一样继续进行 安装 过程。

注意: 现在选择 GRUB 作为您的引导加载程序:您可以选择 MBR 或 GPT:请参阅 分区。如果您选择 GPT,请不要忘记添加 BIOS 启动分区。另请参阅 已知问题

完成安装 Arch Linux 后,继续按照 安装后配置 进行操作。

安装后配置

打补丁的内核

注意: 您很可能可以忽略本节,除非您的设备需要打补丁的内核支持。

建议大多数 Chrome OS 设备使用官方 linux 软件包,但较新的设备可能需要打补丁的内核支持。

如果您的设备需要打补丁的内核,建议查看补丁列表,并确定补丁列表是否变得足够小,以至于您不再需要打补丁的内核,而是可以使用官方 linux 软件包。

有关更多信息,请参阅 内核

视频驱动

请参阅 Intel graphics

触摸板和触摸屏

请参阅 Touchpad SynapticslibinputTouchscreen

触摸板和触摸屏内核模块

由于内核 3.17 所有相关补丁都已合并到上游源代码中,这意味着核心中的 linux 软件包支持这些设备。

如果您的触摸板或触摸屏不受支持该怎么办?
  • 不用担心,因为开发人员应该能够通过请求添加它,因为 Chromium OS 源代码包含相关更改。
  • 您也可以尝试自己查找相关提交并创建适当的补丁,一些提示
    • 深入研究您的 Chrome OS 系统,查看明显的嫌疑对象,如启动日志、/proc/bus/input/devices/sys/devices
    • Chromium OS 的 Linux 内核源代码位于 [6]
    • 最新 Chromium OS 版本的每个内核源代码都有自己的分支,命名约定:release-R*-*-chromeos-KERNELVER,其中 R*-* 是 Chromium OS 版本,KERNELVER 是内核版本。
    • 查看 drivers/platformdrivers/i2c/bussesdrivers/input/touchscreen 的 git 日志。

触摸板配置

有几种设置触摸板的方法

Chromium OS 输入驱动

本文或章节已过时。

原因: xf86-input-cmt 开发不活跃,并且在任何情况下可能都不再需要,因为 libinput 与 Chrome OS 设备触摸板的兼容性相当好。(在 Talk:Chrome OS devices 中讨论)

xf86-input-cmtAUR 提供了 Chromium OS 输入驱动的移植:xf86-input-cmt 作为 Synaptics 输入驱动 的替代方案。它为大多数设备提供了调整后的配置文件,并提供了 Synaptics 输入驱动 不提供的功能,例如防误触。此外,它还启用了 Chromium OS 输入驱动中默认未启用的功能,例如点击拖动。

请注意,输入驱动在 某些情况下 无法工作,在这些情况下,您没有足够的权限访问 /dev/input/event。如果您使用 startx 加载 DE/WM 会话,这将影响您。如果是这种情况,或者驱动程序在任何其他情况下都无法加载,您应该运行

# usermod -a -G input $USER

其中 $USER 是想要使用输入驱动的当前用户。

还应注意,一些用户报告驱动程序在 GDM 中不起作用,但在登录后可以正常工作。如果您受到此问题的影响,您应该运行

# usermod -a -G input gdm

重新启动后,您应该能够正常使用触摸板。

修复挂起

注意: 盖子挂起可能在启动后无法直接工作,您可能需要稍等片刻。

以下是修复挂起功能的说明。预安装 SeaBIOS 或 John Lewis 预构建 SeaBIOS 的用户将需要此修复程序。使用 Matt DeVillier 的自定义固件不需要此过程,因为有问题的 ACPI 唤醒设备(如 TPAD)已在固件中禁用。

已经讨论了一些替代方案,这些方案可能对某些人更有效。 [7] [8]

要修复挂起,一般思路是禁用 EHCI_PCI 模块,该模块会干扰挂起周期。有多种方法可以实现这一点。

使用内核参数

将以下内容添加到您的 GRUB 配置中:-

/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="modprobe.blacklist=ehci_pci"

然后 重建您的 grub 配置。重建 GRUB 配置后,重新启动您的计算机。

用户报告需要将 atmel_mxt_tscros_ec_typec 列入黑名单,而不是上述模块,以便在使用 SeaBIOS 在 11 代 Acer Chromebook CX5500 上运行 Arch Linux 时获得挂起和恢复功能。

使用 systemd

有时,Synaptics 触摸板和笔记本电脑的各个其他部件被用作唤醒设备,导致笔记本电脑在挂起期间的某些移动结束挂起。为了禁用除笔记本电脑盖子传感器之外的所有唤醒设备,请创建以下 suspend-device-fix.sh 文件。

/usr/local/sbin/suspend-device-fix.sh
#!/bin/bash

awk '{if ($1 != "LID0" && $3 == "*enabled") print $1}' < /proc/acpi/wakeup | while read NAME
do echo "$NAME" > /proc/acpi/wakeup
done

exit 0

现在使文件成为 可执行文件

创建一个 systemd 服务以在每次启动时执行该脚本。

/etc/systemd/system/suspend-fix.service
[Unit]
Description=Suspend Fix

[Service]
Type=simple
ExecStart=/usr/local/sbin/suspend-device-fix.sh

[Install]
WantedBy=multi-user.target

首先 启动 suspend-fix.service。如果它正确启动,则 启用 它以便在启动时启动。

本文或章节的事实准确性存在争议。

原因: 为什么我们需要在关于 systemd 服务的章节中使用 rc.d?!(在 Talk:Chrome OS devices 中讨论)

/etc/rc.d/rc.local 的末尾添加以下行(如果它不存在,只需创建它)以防止 EHCI USB 的错误处理

/etc/rc.d/rc.local
echo 1 > /sys/devices/pci0000\:00/0000\:00\:1d.0/remove

然后,创建以下 cros-sound-suspend.sh 文件。下面仅列出了 Ath9k 绑定/取消绑定行;如果您遇到问题,请参阅上面链接的替代方案以获取其他声音挂起处理。

/usr/lib/systemd/system-sleep/cros-sound-suspend.sh
#!/bin/bash

case $1/$2 in
  pre/*)
    # Unbind ath9k for preventing error and full sleep mode (wakeup by LID after hibernating)
    echo -n "0000:01:00.0" | tee /sys/bus/pci/drivers/ath9k/unbind
    # Unbind snd_hda_intel for sound
    echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind
    echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/unbind
    ;;
  post/*)
    # Bind ath9k for preventing error and and full sleep mode (wakeup by LID after hibernating)
    echo -n "0000:01:00.0" | tee /sys/bus/pci/drivers/ath9k/bind
    # bind snd_hda_intel for sound
    echo -n "0000:00:1b.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind
    echo -n "0000:00:03.0" | tee /sys/bus/pci/drivers/snd_hda_intel/bind
    ;;
esac

确保使脚本成为 可执行文件

然后 重建您的 grub 配置

修复音频

Apollolake 型号

解决基于 Apollolake 型号的音频问题的潜在解决方案是使用 SOF DSP 驱动 并重新定义固件在音频处理管道中使用的拓扑。

这很可能会解决与未找到音频设备或内核缓冲区中与拓扑相关的错误相关的问题。

拓扑由 Sound Open Firmware 维护人员创建,并由 MrChromebox 测试(请参阅 Github 讨论)。正如 MrChromebox 所述,这可能会引入音频缩放问题(例如,音频输出范围为 0-10 而不是 0-100)和错误的音频输出设备类型(例如,耳机而不是扬声器)。

本文或章节已过时。

原因: sof-apl-da7219.tplg 当前由 sof-firmware 软件包提供,因此这可能不再必要。(在 Talk:Chrome OS devices 中讨论)
  • 安装 sof-firmware
  • 下载并解压缩 sof-apl-da7219.tplg.gz
  • .tplg 拓扑文件复制到 /lib/firmware/intel/sof-tplg
  • 通过使用 modprobe 或其他方法(例如,引导加载程序内核参数)编辑两个内核模块设置,手动选择 SOF DSP 驱动程序并指定 SOF 固件的备用路径。
/etc/modprobe.d/inteldspcfg.conf
options snd-intel-dspcfg dsp_driver=3
options snd-sof-pci fw_path="intel/sof"

Baytrail 型号

大多数 Baytrail 型号上的音频应该在 linux 上工作,因为修复已合并到 4.19.7 [9],以修复 4.18.15 中的回归,请参阅错误报告 [10]

您可能还需要使用 alsa-utils 中的 alsamixer 打开“Left Speaker Mixer Left DAC”和“Right Speaker Mixer Right DAC”。有关更多信息,请参阅 FS#48936

本文或章节已过时。

原因: sof-cht-max98090.tplgsof-byt-max98090.tplg 当前都由 sof-firmware 软件包提供,因此可能不再需要创建符号链接。(在 Talk:Chrome OS devices 中讨论)

如果您使用 max98090,您可能还需要安装 Sound Open Firmware 并将 /usr/lib/firmware/sof-cht-max98090.tplg 符号链接到 /usr/lib/firmware/sof-byt-max98090.tplg

Haswell 型号

以下一项或多项可能有助于解决与音频相关的问题,设置 snd_hda_intel 模块索引报告最有用。您很可能不需要进行任何更改。

  • 创建 /etc/modprobe.d/alsa.conf,选项 index 将确保模拟输出是默认值(而不是 HDMI),选项 model 将通知驱动程序我们的主板型号,这将使内置麦克风可用(您可以尝试使用 model=alc283-sense-combomodel=,alc283-dac-wcaps 代替)。
/etc/modprobe.d/alsa.conf
options snd_hda_intel index=1 model=,alc283-chrome
  • 使用来自[11]~/.asoundrc 文件。
  • 如果耳机出现问题(可能没有音频播放),请在终端中尝试 alsactl restore (需要 alsa-utils)。现在,ALSA 应该在使用耳机/扬声器时自动切换声道。
  • 要修复 PulseAudio 的 Flash 音频问题,请使用来自[12]~/.asoundrc 文件。

热键

Chromebook 功能键被内核识别为标准 F1-F10 键,最好根据其外观进行映射。 获得 Delete, Home, End, PgUp, PgDown 键也会很好,这些键在 Chrome OS 中映射到 Alt+: BackSpace, Right, Left, Up, Down

使用 xkeyboard

xkeyboard-config 2.16-1 添加了一个 chromebook 模型,该模型为功能键启用了 Chrome OS 风格的功能。 例如,您可以使用 localectl set-x11-keymap us chromebook 进行设置。 有关完整映射,请参阅 /usr/share/X11/xkb/symbols/inet 中的 chromebook 定义。

使用 keyd

keyd (keyd) 是一个强大的底层工具,可以拦截 evdev 事件,并允许以灵活的方式重新映射它们(例如,使用任意组合键或允许在按键点击或按住时使用不同的行为)。 与其他工具不同,所选按键使用模拟的 evdev 设备发送,因此它可以在 shell、X11 或 Wayland 上透明地工作。

主配置文件存储在 /etc/keyd/default.conf 中。 要重新映射顶行,使其在单独按下时发送功能键事件,并在与 Meta 键一起按下时发送 F1-F10,可以使用以下配置

/etc/keyd/default.conf
[ids]
*

[main]
f1 = back
f2 = forward
f3 = f5
f4 = f11
f5 = M-f8
f6 = brightnessdown
f7 = brightnessup
f8 = mute
f9 = volumedown
f10= volumeup

[meta]
f1 = f1
f2 = f2
f3 = f3
f4 = f4
f5 = f5
f6 = f6
f7 = f7
f8 = f8
f9 = f9
f10= f10

left  = home
right = end
up    = pageup
down  = pagedown

backspace = delete

[shift]
meta = capslock

最后几行允许将 Meta+<箭头> 重新映射到 HomeEndPgUpPgDown,将 Meta+Backspace 重新映射到 Delete,并将 Shift+Meta 重新映射到 Capslock

要反转顶行行为(即默认情况下为 F1-F10,与 Meta 一起按下时为多媒体键),只需移动两个节的内容

/etc/keyd/default.conf
[ids]
*

[meta]
f1 = back
f2 = forward
f3 = f5
f4 = f11
f5 = M-f8
f6 = brightnessdown
f7 = brightnessup
f8 = mute
f9 = volumedown
f10= volumeup

left  = home
right = end
up    = pageup
down  = pagedown

backspace = delete

[shift]
meta = capslock

也可以使用其他键代替 Meta,所有需要做的就是将节的名称更改为所需的键(例如,使用 controlaltshift 代替 meta)。

使用 Sxhkd

设置热键的一种方法是使用 Sxhkd 守护进程。 除了 sxhkd 之外,这还需要 amixerxorg-xbacklightxautomation

有关 ~/.config/sxhkd/sxhkdrc 中的示例配置,请参阅 [13]

使用 Xbindkeys

配置热键的另一种方法是使用 Xbindkeys。 除了 xbindkeys 之外,这还需要 amixerxorg-xbacklightxvkbdAUR

备用 xbindkeys 配置

Volchange(起源于 Debian 用户论坛))可以使用 PulseAudio 而不是 amixer 来控制音量。 除了 Volchange 之外,这还需要 xorg-xbacklightxvkbdAUR

有关匹配的 ~/.xbindkeysrc,请参阅 [16]

修补 xkeyboard-config

另一种选择是安装 xkeyboard-config-chromebookAUR[链接失效:软件包未找到],有关更多详细信息,请访问 [17]

在 GNOME 中使用 gsettings set 进行映射

一些功能键可以在 Gnome 中进行映射,其优点是更改时具有 HUD 通知(如音量和亮度更改),这可以补充上面提到的映射方法之一。 此链接示例映射了亮度和音量操作。 请注意,需要 xdotool

电源键和 lid 开关处理

忽略使用 logind

开箱即用,systemd-logind 将捕获电源键和 lid 开关事件并处理它们:它将在按下电源键时关闭 Chromebook,并在 lid 关闭时挂起。 但是,考虑到电源键是键盘右上角的一个普通按键,可能会被意外按下,因此这种策略可能有点苛刻。

要配置 logind 以忽略电源键按下和 lid 开关,请将以下行添加到下面的 logind.conf 中。

/etc/systemd/logind.conf
HandlePowerKey=ignore
HandleLidSwitch=ignore

然后重启 logind 以使更改生效。

电源键和 lid 开关事件仍将由 logind 记录到 journald。 请参阅电源管理#ACPI 事件

Gnome 忽略

安装 gnome-tweaks,打开 Tweak Tool 并在 Power 下更改 Power Button Action。

已知问题

Syslinux

仔细按照 Syslinux 安装说明进行操作。 尝试手动安装以查看问题出在哪里。 如果您看到缺少操作系统,则可能是因为您需要使用正确的启动加载程序二进制文件。 如果 syslinux 不起作用,请尝试另一个启动加载程序,例如 GRUB

参见