mirror of
https://codeberg.org/postscriptum/gemlog.git
synced 2026-02-19 06:22:41 +00:00
add porting-koreader-on-pocketbook-602.gmi
This commit is contained in:
parent
5acd21fb62
commit
b8e204dcb8
2 changed files with 164 additions and 0 deletions
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
### Нотатки
|
||||
|
||||
=> porting-koreader-on-pocketbook-602.gmi 2025-11-13 Портування KoReader на PocketBook 602
|
||||
=> about-the-tricky-writing.gmi 2025-11-11 Про хитро-виїбане письмо
|
||||
=> deal-with-devil.gmi 2025-11-11 Чортова робота
|
||||
=> gemini-dl-is-batch-downloader-for-gemini-protocol.gmi 2025-11-11 gemini-dl: CLI-утиліта для завантаження ресурсів Geminispace
|
||||
|
|
|
|||
163
public/uk/porting-koreader-on-pocketbook-602.gmi
Normal file
163
public/uk/porting-koreader-on-pocketbook-602.gmi
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
# Портування KoReader на PocketBook 602
|
||||
|
||||
На момент допису, через допотопність девайсу PocketBook 602, офіційної підтримки його в KoReader немає, тому я вирішив на скору для себе з цим розібратись.
|
||||
|
||||
Сам додаток KoReader мені потрібен виключно через наявність в ньому плагіна для читання ресурсів Gemini / Gemtext:
|
||||
=> gemini://gemini.thegonz.net/gemini.koplugin/
|
||||
|
||||
Нижче описаний персональний досвід, щоб нічого не забути, бо портування не є завершеним!
|
||||
|
||||
## Особливості встановлення
|
||||
|
||||
Встановлюючи KoReader, я спочатку скопіював його на зовнішню картку USB, як це описано в інструкції:
|
||||
|
||||
> You need to obtain a recent PocketBook package from the releases page. Then unzip the archive on your computer. There will be two directories in the unzipped directory, namely applications and system.
|
||||
>
|
||||
> Copy and merge both the applications and system directories into your PocketBook's USB root directory
|
||||
=> https://github.com/koreader/koreader/wiki/Installation-on-PocketBook-devices#installation
|
||||
|
||||
Але у такому разі, додаток не запускатиметься, при чому crash.log не створюватиметься. Після аналізу вихідних файлів, знайшов "мовчазного винуватця" в рядку:
|
||||
|
||||
``` /applications/koreader.app
|
||||
# we're always starting from our working directory
|
||||
cd ${KOREADER_DIR} || exit
|
||||
```
|
||||
|
||||
Тобто шлях був не коректним, і додаток вилітав ще до ініціації самого crash.log нижче по коду. Виявивши причину, я додав у цей же файл рандомні шляхи, отримані з ШІ, один з яких (ext2) спрацював. Після ініціалізації crash.log я таки вирішив перевірити як влаштована файлова система на цьому девайсі, додавши після рядків ініціації crash.log команду:
|
||||
|
||||
``` bash
|
||||
df -h "$@" >> crash.log 2>&1
|
||||
```
|
||||
|
||||
Запустивши додаток і перепідключившись через шнурок, вивід crash.log був наступним:
|
||||
|
||||
``` crash.log
|
||||
Filesystem Size Used Available Use% Mounted on
|
||||
/dev/root 26.5M 17.5M 7.6M 70% /
|
||||
none 128.0M 168.0K 127.8M 0% /var
|
||||
tmpfs 124.4M 0 124.4M 0% /var/dev/shm
|
||||
/dev/mmcblk0p3 117.2M 97.6M 19.7M 83% /ebrmain
|
||||
/dev/mmcblk0p2 602.3M 409.4M 192.9M 68% /mnt/secure
|
||||
/dev/loop0 117.5M 117.5M 0 100% /ebrmain/cramfs
|
||||
/dev/mmcblk0p1 1019.0M 338.4M 680.7M 33% /mnt/ext1
|
||||
/dev/mmcblk1 1.9G 81.3M 1.8G 4% /mnt/ext2
|
||||
```
|
||||
|
||||
Як бачимо, девайс ext1 - це саме внутрішня пам'ять, якщо поритись в сорсах, то фігурує саме цей шлях. Але якщо поставити KoReader на ext1, то його просто не буде видно в меню додатків. Згодом, щоб не патчити все на світі у сорсах KoReader, я скористався таким лайф-хаком:
|
||||
|
||||
* ставимо (через шнурок) на ext1 згідно інструкції
|
||||
* копіюємо /mnt/ext1/system/bin/koreader.app до /mnt/ext2/system/bin/koreader.app
|
||||
|
||||
Таким чином, все буде розпізнаватись, додаток буде стартувати, але все-одно вилітатиме по причинам нижче (хоча вже писатиме подробиці в crash.log)
|
||||
|
||||
## Біндінг
|
||||
|
||||
На момент допису, підтримки цього девайсу в офіціному біндінгу немає. Біндінг потрібен для опису специфіки конкретного пристрою для роботи програми, це свого роду такий собі високорівневий "драйвер", без якого KoReader просто не запуститься з помилкою в crash.log накшталт "девайс не підтримується".
|
||||
|
||||
Все це є в документації, але підсумовуючи створив:
|
||||
|
||||
=> https://github.com/oooo-ps/koreader/tree/pocketbook-602 окрему гілку
|
||||
=> https://github.com/oooo-ps/koreader/commit/083d71a6065b209cf1f39229ed2c792fa2fedba0 патч
|
||||
=> https://github.com/koreader/koreader/pull/14611 PR#14611
|
||||
|
||||
Щоб не ходити на GitHub, інструкція для PocketBook 602 виглядає наступним чином:
|
||||
|
||||
``` frontend/device/pocketbook/device.lua
|
||||
# рядок ~472
|
||||
-- PocketBook Pro (602)
|
||||
local PocketBook602 = PocketBook:extend{
|
||||
model = "PB602",
|
||||
display_dpi = 167,
|
||||
isTouchDevice = no,
|
||||
hasFrontlight = no,
|
||||
hasDPad = yes,
|
||||
hasFewKeys = yes,
|
||||
}
|
||||
# рядок ~869
|
||||
elseif codename == "602" then
|
||||
return PocketBook602
|
||||
```
|
||||
* тут я ще трохи сумніваюся стосовно display_dpi (можливо має бути 166)
|
||||
|
||||
## Крос-компіляція
|
||||
|
||||
Запустити готові бінарники для PocketBook з асету відповідних релізів на GitHub не вийде, бо вони зкомпільовані для сучасних ARM і при такій спробі, в crash.log буде помилка:
|
||||
|
||||
``` crash.log
|
||||
Illegal instruction
|
||||
```
|
||||
|
||||
PocketBook має відносно стару архітектуру процесора ARMv6:
|
||||
|
||||
``` crash.log
|
||||
# cat /proc/cpuinfo >> crash.log ARMv6
|
||||
ARMv6-compatible processor rev 6 (v6l)
|
||||
```
|
||||
|
||||
Я спочатку подумав, що самий хитрий і вирішив просто підмінити бінарники з іншого релізу:
|
||||
=> https://github.com/koreader/koreader/releases/download/v2025.10/koreader-linux-armv7l-v2025.10.tar.xz
|
||||
|
||||
Але не все так склалося як гадалося: у цьому наборі зовсім інша структура та набори файлів. Отже довелось таки розгортати середовище для крос-компіляції. Минаючи довгу передісторію, потрібно виконати наступні кроки, попередньо ознайомившись з актуальною документацією:
|
||||
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Building.md Building
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Building_targets.md Building targets
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Porting.md Porting
|
||||
|
||||
### koxtoolchain
|
||||
|
||||
Завантажуємо середовище:
|
||||
|
||||
=> https://github.com/koreader/koxtoolchain/releases/tag/2025.05
|
||||
|
||||
Розпаковуємо в теку, де лежать бінарні файли, або створюємо симлінки. В мене деякі тимчасові бінарники лежать окремо, в $HOME/Bins - цей шлях я використовую в $PATH:
|
||||
|
||||
``` bash
|
||||
export PATH="$PATH:$HOME/Bins/kindle/x-tools/arm-kindle-linux-gnueabi/bin:$PATH"
|
||||
```
|
||||
|
||||
### koreader
|
||||
|
||||
Встановивши koxtoolchain, спочатку ставимо залежності для вашої операційної системи:
|
||||
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Building.md#prerequisites Prerequisites
|
||||
|
||||
І власне збираємо віртуальну машину:
|
||||
|
||||
=> https://github.com/koreader/koreader/blob/master/doc/Building.md#building-and-running-the-emulator Building and running the emulator
|
||||
|
||||
``` bash
|
||||
git clone https://github.com/koreader/koreader.git
|
||||
cd koreader && ./kodev fetch-thirdparty
|
||||
```
|
||||
|
||||
Перед тим, як продовжити, мені порадили спробувати змінити у файлі:
|
||||
|
||||
``` base/Makefile.defs
|
||||
CHOST?=arm-pocketbook-linux-gnueabi
|
||||
POCKETBOOK=1
|
||||
HAS_POCKETBOOK_TC:=$(shell command -v arm-pocketbook-linux-gnueabi-gcc 2> /dev/null)
|
||||
ifdef HAS_POCKETBOOK_TC
|
||||
CHOST?=arm-pocketbook-linux-gnueabi
|
||||
else
|
||||
CHOST?=arm-linux-gnueabi
|
||||
endif
|
||||
```
|
||||
|
||||
на
|
||||
|
||||
``` base/Makefile.defs
|
||||
CHOST?=arm-kindle-linux-gnueabi
|
||||
LEGACY=1
|
||||
```
|
||||
|
||||
Після чого компілюємо pocketbook вже засобами хосту arm-kindle-linux-gnueabi:
|
||||
|
||||
``` bash
|
||||
./kodev release pocketbook
|
||||
```
|
||||
|
||||
Тут в мене виникла інша проблема, тому закінчу цей матеріал як з нею розберусь.
|
||||
|
||||
## Посилання
|
||||
|
||||
=> https://github.com/koreader/koreader/issues/14600 Тема №14600 на GitHub (дякую усім, хто долучився)
|
||||
Loading…
Add table
Add a link
Reference in a new issue