最近在手机上安装了最新版本 (2026.03版) 的KOReader, 在KOReader强大的PDF裁剪/排版能力下读文献效果绝佳.
想起吃灰多年的Kindle也能越狱后安装KOReader, 为了让老设备换发第二春, 故来试试.
Kindle越狱
主要参考https://bookfere.com/post/1075.html
我的Kindle为Kindle paperwhite 3, 我尝试成功的固件版本为5.15.1.1和5.16.2.1.1.
首先要备份Kindle里的书籍. 越狱可能会”格式化”Kindle内部存储.
如果曾经有过失败的越狱尝试, 需要重装系统. 先在
设备选项 > 设备信息里查找固件版本, 在https://bookfere.com/update查找对应固件并下载. 在设置里面点设备选项 > 重置, 重置一遍Kindle, 待Kindle重启后使用数据线导入下载好的bin文件至Kindle根目录, 随后点设备选项 > 高级选项 > 更新我的Kindle, 等待Kindle重启.
在Kindle主页搜索框中输入;enter_demo, 随后在设置中点设备选项 > 重启, 进入演示模式.
如果无法正常进入演示模式, 可以考虑退出亚马逊账号、开启飞行模式后重试.
跳过WiFi设置, 在商店名称里面随便写个字符, 随后依次点击继续、跳过、Standard、完成. 等待Kindle完成配置进入屏保.
点击屏保进入配置设备 (展示机无内容或未连接网络) 界面, 双指同时点按住屏幕右下角随后向左滑动一段距离来跳过该界面.
如果无法跳过跳过这个界面, 需要多次、反复尝试上述手势. 或者双指点按后改单指左滑来尝试.
在Kindle主页搜索框中输入;demo, 等待设备进入”演示菜单, 选择导入内容. 下载越狱包https://github.com/notmarek/LanguageBreak/releases. 解压后找到LanguageBreak文件夹, 将文件夹内的documents文件夹和DONT_CHECK_BATTERY、jb、patchedUks.sqsh文件全部使用数据线导入Kindle根目录, 断开Kindle与电脑连接后点完成回到”演示菜单”.
点击销售设备 > 销售, 等待Kindle关机.
待Kindle关机后多等1分钟, 随后长按电源键开机, 语言选择简体中文. 待Kindle完全重启后, 将越狱包 (https://github.com/notmarek/LanguageBreak/releases) 中的Update_hotfix_languagebreak-en-US.bin (或者重启后Kindle系统语言对应的bin文件) 用数据线导入至Kindle根目录, 随后点设备选项 > 高级选项 > 更新我的Kindle, 等待Kindle重启.
至此越狱完毕. 可以在Kindle主页搜索框中输入;log runme来确认是否越狱成功, 如果越狱成功会在左上角出现No user script found.
安装KOReader
安装KUAL
在https://www.mobileread.com/forums/showthread.php?t=225030下载最新版本MR Package Installer (名如kual-mrinstaller-1.7.N-r19303.tar.xz), 解压后将extensions和mrpackages两个文件夹用数据线导入Kindle根目录.
在上述页面 (https://www.mobileread.com/forums/showthread.php?t=225030) 下载最新版本KUAL (名如KUAL-v2.7.37-gfcb45b5-20250419.tar.xz), 解压后将KUAL-KDK-2.0.azw2用数据线导入Kindle的documents目录, 将Update_KUALBooklet_vx.x.xx_install.bin数据线导入Kindle的mrpackages目录.
断开Kindle与电脑的连接后, 在Kindle主页搜索框中输入;log mrpi, 等待Kindle重启即可完成KUAL安装. 此时应该能在图书馆下看到KUAL.
安装KPV Booklet
在https://github.com/koreader/kpvbooklet/releases下载最新版 KPV Booklet并解压, 将update_kpvbooklet_0.x.x_install.bin文件用数据线导入Kindle的mrpackages目录, 断开Kindle与电脑的连接.
在Kindle图书馆下点开KUAL > Helper > Install MR Packages, 等待Kindle重启即可完成KPV Booklet安装.
安装KOReader
在https://github.com/koreader/koreader/releases找到并下载koreader-kindlepw2-vxxxx.xx.zip, 解压后将koreader、extensions目录用数据线导入Kindle根目录.
断开Kindle与电脑的连接后, 应该能在Kindle图书馆下的KUAL中找到KOReader.
KOReader使用优化
词典/翻译
KOReader支持Stardict格式的词典, 在http://download.huzheng.org/zh_CN/下载自己需要的词典文件, 解压后将整个词典文件夹 (内含dz、idx、ifo三个文件) 用数据线导入Kindle的koreader/data/dict/下即可使用.
KOReader的在线翻译功能默认使用谷歌翻译, 在中国大陆会失灵. 可以用插件KOReader Custom Translator来修改为基于大模型的中国大陆可用的翻译.
在https://github.com/Tokisaki-Galaxy/kindle-koreader-custom-translator/releases下载源码压缩包, 解压后将kindle-koreader-custom-translator文件夹 (内有bin文件夹的那个) 直接用数据线导入Kindle的extensions/下. 随后断开Kindle与电脑的连接, 在KUAL中点击KOReader Custom Translator > Install, 随后重启KOReader即可使用在线翻译功能.
网盘传书
在KOReader的文件管理器界面, 单击屏幕上沿打开菜单, 在第三个图标下有云存储选项, 点左上角+里面可以设置FTP或者WebDAV网盘. 按照说明填好网盘网址和账户信息就可以在KOReader里面访问网盘, 下载网盘中的文档. 下载的文档默认保存在koreader/news.
阅读进度同步
KOReader支持多设备用户依靠网络在设备直接互相同步阅读进度.
需要自己拥有服务器来架设阅读进度同步服务. 在服务器上安装docker, 随后sudo docker pull koreader/kosync:latest来安装同步服务. 如果遇到dockerhub无法访问的情况, 可以使用镜像, 比如sudo docker pull docker.1panel.live/koreader/kosync:latest. 随后新建两个目录, 一个log目录一个data目录, 再新建log目录相对路径/redis和data目录相对路径/redis. 用下述命令启动服务 (可能需要管理员权限):
docker run -d -p 7200:7200 -v log目录绝对路径/a/app/koreader-sync-server/logs -v log目录相对路径/redis:/var/log/redis -v data目录绝对路径/redis:/var/lib/redis koreader/kosync:latest
如果前文是使用镜像下载的, 需要更改命令为:
docker run -d -p 7200:7200 -v log目录绝对路径/a/app/koreader-sync-server/logs -v log目录相对路径/redis:/var/log/redis -v data目录绝对路径/redis:/var/lib/redis docker.1panel.live/koreader/kosync:latest
防火墙放行7200端口, 在浏览器中输入https://服务器地址:7200来验证是否安装成功, 安装成功的话会返回: (因为这里使用了自签名加密证书, 浏览器会报错说不安全, 在高级选项里面选择继续访问即可)
{"code":101,"message":"Invalid Accept header format."}
在KOReader中单击屏幕上边沿打开菜单, 在第四个图标下面找到进度同步, 在其中选择自定义服务器, 将https://服务器地址:7200填入, 随后在下方设置主机名, 选择注册或是登录, 根据需要打开自动同步文档. 注意KOReader的进度同步服务只同步阅读进度, 不同步文件具体内容.
阅读在线内容
KOReader支持RSS订阅. 但是国内网站少有支持RSS的, 不过可以使用RSSHub来抓取相关内容, 转为RSS链接提供给KOReader.
同样需要一台服务器来架设RSSHub. 同样需要安装docker, 然后用docker pull拉取diygod/rsshub、browserless/chrome、redis, 如果遇到网络问题可以使用镜像. 注意去默认源拉取diygod/rsshub时候会自动将依赖都拉取, 如果使用镜像源, 最好额外单独拉取两个依赖.
使用dockerhub默认源:
docker pull diygod/rsshub
使用镜像源, 以docker.1panel.live为例:
docker pull docker.1panel.live/diygod/rsshub
docker pull docker.1panel.live/browserless/chrome
docker pull docker.1panel.live/redis
为RSSHub新建目录, 在其中创建配置文件docker-compose.yml, 写入:
services:
rsshub:
# two ways to enable puppeteer:
# * comment out marked lines, then use this image instead: diygod/rsshub:chromium-bundled
# * (consumes more disk space and memory) leave everything unchanged
image: diygod/rsshub # 如果使用了镜像, 注意在前面加上镜像地址/
restart: always
ports:
- '1200:1200'
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' # marked
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:1200/healthz']
interval: 30s
timeout: 10s
retries: 3
depends_on:
- redis
- browserless # marked
browserless: # marked
image: browserless/chrome # 如果使用了镜像, 注意在前面加上镜像地址/
restart: always # marked
ulimits: # marked
core: # marked
hard: 0 # marked
soft: 0 # marked
healthcheck: # marked
test: ['CMD', 'curl', '-f', 'http://localhost:3000/pressure'] # marked
interval: 30s # marked
timeout: 10s # marked
retries: 3 # marked
redis:
image: redis:alpine # 如果使用了镜像, 注意在前面加上镜像地址/
restart: always
volumes:
- redis-data:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 30s
timeout: 10s
retries: 5
start_period: 5s
volumes:
redis-data:
使用docker compose -f docker-compose.yml文件路径 up -d来允许RSSHub, 防火墙放行1200端口. 在浏览器中输入http://服务器地址:1200来验证是否安装成功, 安装成功的话会显示RSSHub主页.
很多网站需要登录才能拉取信息, 这就需要我们再浏览器登录后按F12, 在cookie里面查找登录的令牌填入RSSHub的配置文件中. 以知乎为例, 在浏览器中查找到z_c0的cookie项, 将其值复制.
在上述配置文件修改为:
services:
rsshub:
# two ways to enable puppeteer:
# * comment out marked lines, then use this image instead: diygod/rsshub:chromium-bundled
# * (consumes more disk space and memory) leave everything unchanged
image: docker.1panel.live/diygod/rsshub # or ghcr.io/diygod/rsshub
restart: always
ports:
- '1200:1200'
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' # marked
ZHIHU_COOKIES: 'z_c0=复制的cookie值' #新增
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:1200/healthz']
interval: 30s
timeout: 10s
retries: 3
(后文省略)
重新启动RSSHub服务器.
在KOReader中单击屏幕上边沿打开菜单, 在第四个图标下面找到新闻下载器 > 编辑新闻源 > 添加新源 > URL, 根据https://docs.rsshub.app/routes/写入对应的RSS链接. 设置好后可以使用新闻下载器 > 编辑新闻源来下载内容, 默认保存在koreader/news.
以知乎为例, 可以将自己的账户收藏 (
http://服务器地址:1200/zhihu/people/allCollections/用户ID, 用户ID可以在个人主页的URL末尾查找) 设置为RSSHub链接导入KOReader. 这样自己在手机上看到长文想要转入KOReader继续看的时候, 只要收藏一下, 过一两分钟再同步到KOReader上就好了.在docker上关闭已有容器的方法:
docker ps查找目标容器的CONTAINER ID, 随后使用docker stop ID来关闭对应容器.
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!