KOReader 在 reMarkable(含 Paper Pro / aarch64)平台上的安装与启动指南
KOReader 在 reMarkable含 Paper Pro / aarch64平台上的安装与启动指南【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader本篇技术指南以仓库中 platform/remarkable/README_aarch64.md 为核心系统讲解如何在 reMarkable 电纸书上获取设备连接信息、安装 KOReader 发行包、并通过内置button-listen启动器或自定义 systemd 服务启动阅读器。读完本文你将掌握完整的 SSH 安装流程、启动器配置方法以及 aarch64reMarkable Paper Pro平台在构建与运行层面的适配细节。一、文档定位面向 aarch64 平台的安装说明在 KOReader 仓库中reMarkable 平台的构建目标分为两类传统remarkable目标与remarkable-aarch64目标。后者对应的正是采用 aarch64 架构的新一代 reMarkable 设备如 reMarkable Paper Pro。从 make/remarkable.mk 可以确认ifeq (remarkable,$(TARGET)) $(SYMLINK) $(REMARKABLE_DIR)/README.md $(INSTALL_DIR)/koreader/README_remarkable.md endif ifeq (remarkable-aarch64,$(TARGET)) $(SYMLINK) $(REMARKABLE_DIR)/README_aarch64.md $(INSTALL_DIR)/koreader/README_remarkable.md endif即当以remarkable-aarch64为目标构建时README_aarch64.md 会被打包为发布包内的README_remarkable.md成为该平台用户的首要文档而 make/remarkable-aarch64.mk 仅仅include make/remarkable.mk说明两个平台共用同一套打包逻辑zip / tar.xz / targz 三种格式仅在文档与脚本的装配上有所差异。因此本文结合同目录下的 README.md 与各平台脚本将安装与启动的完整流程还原出来。二、获取设备 IP 地址与 root 密码在任何安装操作之前你首先需要拿到 reMarkable 的网络连接信息。文档给出了明确的获取路径将设备连接到 Wi-Fi 后进入Settings - About然后在右侧向下滚动 GPLv3 compliance 区域注意这里要用手指拖拽滚动而不是使用翻页按钮。在该区域中可以找到设备的IP 地址与root 密码。同样的方法也适用于通过 USB 数据线连接电脑后出现的 USB 网络接口即scp/ssh的通信链路既可以是 Wi-Fi也可以是 USB 网络。拿到这两个信息后后续所有安装步骤都通过ssh rootip与scp完成无需额外安装客户端。三、安装与启动完整实操流程README_aarch64.md将安装细节指向 wiki 手册而同目录的 README.md 给出了可以在本仓库中直接验证的完整命令。下面按步骤还原这一流程。3.1 安装发行包首先将 KOReader 的发行包形如koreader-remarkable-aarch64-version.zip从电脑拷贝到设备然后 SSH 登录并解压scp koreader-package.zip rootyour-remarkable: ssh rootyour-remarkable unzip koreader-package.zip解压后KOReader 会被释放到设备上的/home/root/koreader/目录这一点可以从 button-listen.service 与 koreader.service 中的ExecStart/home/root/koreader/...路径得到印证。解压的默认位置决定了后续所有 systemd 单元和服务脚本中的硬编码路径。3.2 使用内置 button-listen 启动器KOReader 附带一个非常简单的启动器名为button-listen在 xochitlreMarkable 默认 UI界面下长按中间按键 3 秒及以上即可启动 KOReader。安装该启动器需要两步 systemd 操作cp -v koreader/*.service /etc/systemd/system/ systemctl enable --now button-listen*.service会同时安装两个单元文件其中 button-listen.service 定义如下[Unit] DescriptionKOReader Button Listener StartLimitIntervalSec600 StartLimitBurst4 Afterhome.mount [Service] ExecStart/home/root/koreader/button-listen Restarton-failure [Install] WantedBymulti-user.target要点解读Restarton-failure监听进程异常退出后由 systemd 自动拉起保证长按功能持续可用StartLimitIntervalSec600StartLimitBurst410 分钟内最多重启 4 次防止崩溃循环拖垮系统Afterhome.mount确保/home挂载完成后才启动避免可执行文件尚未就绪。回到默认 UI想返回 xochitl 时只需退出 KOReader——从屏幕顶部向下滑动点击右上角的图标依次选择 Exit - Exit 即可。注意事项部分 reMarkable 系统更新会清除已安装的 systemd 单元文件因此上述两条安装命令在系统更新后需要重新执行。3.3 使用其他启动器如果你使用第三方启动器如rmkit、draft等启动器真正需要执行的命令是/home/root/koreader/koreader.sh即仓库中的 platform/remarkable/koreader.sh 启动脚本。如果希望保持退出 KOReader 后自动回到默认 UI的原生行为可以在安装时额外执行一次cp -v koreader/koreader.service /etc/systemd/system/该单元文件 koreader.service 的关键配置[Unit] DescriptionKOReader Afterxochitl.service Conflictsxochitl.service OnFailurexochitl.service [Service] ExecStart/home/root/koreader/koreader.sh ExecStopPost/bin/false RestartnoConflictsxochitl.serviceKOReader 与 xochitl 互斥启动 KOReader 时 systemd 会停止 xochitlOnFailurexochitl.service一旦 KOReader 异常退出自动拉回 xochitl实现退出即回默认 UI。之后第三方启动器只需调用systemctl start koreader即可拉起 KOReader。四、aarch64 平台reMarkable Paper Pro的适配细节这是README_aarch64.md相对传统 reMarkable 版本最值得关注的部分。虽然文档正文较简短但仓库源码完整展现了新一代设备的接入方式。4.1 通过 manifest 接入 rm-apploadaarch64 设备的启动流程依托 reMarkable 的rm-appload机制QTFB即 Qt Framebuffer 共享。仓库中提供了两个 manifestexternal.manifest.json基础版本声明应用名与启动脚本并设置KO_USE_QTFB1{ name: KOReader, application: koreader.sh, environment: { KO_USE_QTFB: 1 }, qtfb: true }external.manifest.shim.json完整版本注入 QTFB shim 所需的全部环境变量{ name: KOReader, application: koreader.sh, environment: { LD_PRELOAD: /home/root/shims/qtfb-shim.so, QTFB_SHIM_MODEL: false, QTFB_SHIM_INPUT_MODE: NATIVE, QTFB_SHIM_MODE: N_RGB565, QTFB_SHIM_RESPECT_FULL_REFRESH_REQUESTS: 1, KO_DONT_GRAB_INPUT: 1, KO_DONT_SET_DEPTH: 1 }, qtfb: true }这些变量与 koreader.sh 中的 QTFB 分支一一对应当设置了KO_USE_QTFB时脚本会导出KO_DONT_GRAB_INPUT1、KO_DONT_SET_DEPTH1并把/home/root/.vellum/lib加入LD_LIBRARY_PATH以便复用 vellumreMarkable 的渲染库的库文件。4.2 QTFB 连接的 keep-alive 守护进程由于 AppLoad 在首个使用 QTFB 的应用退出时会卸载 framebufferKOReader 提供了 qtfb_keep_alive.lua 作为后台保活进程。从源码可以看到它通过AF_UNIX/SOCK_SEQPACKET连接到/tmp/qtfb.sock并带重试循环等待 QTFB 服务端就绪连接建立后发送MESSAGE_INITIALIZE消息并根据设备型号选择 framebuffer 格式FBFMT_RM2FB默认、FBFMT_RMPP_RGB565Paper Pro、FBFMT_RMPPM_RGB565Paper Pro 后续型号随后通过pause()无限期阻塞直到被父进程 kill。在 koreader.sh 中该进程由KO_USE_QTFBQTFB_KEY环境变量触发启动并在脚本退出时被显式终止if [ -n ${KO_USE_QTFB} ] [ -n ${QTFB_KEY} ]; then ./luajit qtfb_keep_alive.lua /dev/null 21 BG_KEEP_ALIVE_PID$! fi4.3 机型检测与启动环境koreader.sh 会读取/sys/devices/soc0/machine判断机型IFS read -r MACHINE_TYPE /sys/devices/soc0/machine if [ reMarkable 2.0 ${MACHINE_TYPE} ]; then export KO_DONT_GRAB_INPUT1 fireMarkable 2 及更新机型含 aarch64 平台均会设置KO_DONT_GRAB_INPUT表明这些设备上输入事件由系统侧xochitl/AppLoad接管KOReader 不再自行抓取输入设备。五、启动脚本 koreader.sh 的内部工作流程理解 koreader.sh 的启动流程有助于排查启动失败或更新异常重定位到 /tmp脚本首次运行时会把自身与external.manifest.json拷贝到/tmp并exec重新执行。这样做的目的是让 KOReader 能检测原脚本在更新后是否变化从而决定是否需要从父启动器完整重启。QTFB/Blight 环境准备设置KO_DONT_GRAB_INPUT、KO_DONT_SET_DEPTH与LD_LIBRARY_PATHfbink_wrapped()会根据环境变量选择原生 fbink、QTFB shim 或 blight 模式调用。OTA 更新检查ko_update_check()检测ota/update.tar.xz是否存在。若存在会先停掉button-listen服务用 fbink 显示更新进度调用unpack -X解包并在成功后清理旧版本残留文件、执行busybox sync确保落盘最后重新拉起button-listen更新成功还会触发脚本exec ./koreader.sh重新执行。fbdepth 位深切换非 QTFB 模式下脚本记录原始 framebuffer 位深与旋转方向然后切换到 8bpp Portrait旋转-r 1以获得更快的 blitting 路径退出时再恢复原始设置。可通过settings.reader.lua中的[dev_startup_no_fbdepth] true在开发者设置中禁用。崩溃处理循环主循环运行./reader.lua若返回码非 0 且非 8585 表示请求重启则统计连续崩溃次数通过 fbink 在屏幕上绘制炸弹 日志尾部的崩溃界面连续崩溃 5 次或设置了[dev_abort_on_crash] true时终止防止陷入死循环。崩溃日志始终追加到crash.log保留最近 500KB。退出恢复退出时恢复原始 framebuffer 位深与旋转并终止 QTFB keep-alive 进程。六、常见问题与运维要点系统更新清空 systemd 单元README_aarch64.md明确提醒reMarkable 系统更新可能清除已安装的服务文件届时需重新执行cp -v koreader/*.service /etc/systemd/system/与systemctl enable --now button-listen。更新 KOReader 本体将新版本包按ota/update.tar.xz放置后重启或在菜单中执行 Restart KOReader即可触发脚本内置的 OTA 更新流程无需手动解压覆盖。Wi-Fi 关闭脚本仓库提供 disable-wifi.sh 与 enable-wifi.sh用于 KOReader 运行期间接管 Wi-Fi停 wpa_supplicant、dhcpcd 并卸载brcmfmac内核模块阅读时省电这些脚本随remarkable目标打包进发行包。构建产物格式remarkable-aarch64目标与remarkable共用 make/remarkable.mk 的打包逻辑会生成koreader-remarkable-aarch64-version.zip、.tar.xz与.targz三种格式分别对应手动安装、OTA 更新等不同场景构建前file检查会确认luajit为 ARM 二进制。通过以上步骤你可以在任何 reMarkable 设备含 aarch64 架构的 Paper Pro上完成 KOReader 的安装、启动与日常维护并能在需要时借助仓库中的启动脚本与 systemd 单元自行排查问题。【免费下载链接】koreaderAn ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices项目地址: https://gitcode.com/GitHub_Trending/ko/koreader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考