2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Arch LinuxでKindleを使う

Last updated at Posted at 2025-12-21

モチベーション

Arch Linuxで本が読みたくなったから.Arch LinuxでKindleを使う方法は主に2つあるらしい.

  • Wine: Windowsプログラムをネイティブ動作できる
  • Waydroid: コンテナ化されたAndroidの環境を実行する

どちらでも良かったが,普段から利用しているモバイル版のKindleを使えた方がなんとなく嬉しいので「Waydroid」を採用することにした.

環境

OS: Arch Linux x86_64
カーネル: 6.18.1-arch1-2
DE: cosmic (Wayland)
CPU: i5-12600H
GPU: Intel Iris Xe Graphics

Waydroidの導入

詳しくは,Arch Wiki/Waydroidを参照してください.ただ,使用するカーネルのバージョンによって,Arch Wikiでは不足するところもあるので気をつけてください.

1. CPUとGPUの確認

必要なCPUアーキテクチャの要件はAndroid ABIから確認できます.
GPUについては,Intel GPUならそのまま使用できるそうです.AMD GPUもサポートされているらしいです.NVIDIA GPUアーキテクチャを使用されている方はArch Wikiを参照してください.

2. ウィンドウマネージャーの確認

WaydroidはWaylandでのみ動作するらしい.

Arch Wikiには以下のようにも書いてあります.詳しいことはわからないので,X11を使っている方は各自で調べてもらえると良いと思います(Waylandに移行しようぜ).

X11 を使用している場合でも、多くの Wayland セッション マネージャーはネストされたセッションをサポートしていることに注意してください (そのため、X11 セッション内で実行できます)。最も単純な例は cage です。

3. カーネルモジュールの確認

↪ uname -r
6.18.1-arch1-2

Linux標準カーネルなので,binderモジュールが付属しているカーネルを準備する必要があります.BinderはAndroidがプロセス間通信に使う仕組みらしいです.

今回は,Linux-Zenを使用します.

↪ sudo pacman -S linux-zen linux-zen-headers

ブートローダ(GRUB)の更新

↪ sudo grub-mkconfig -o /boot/grub/grub.cfg

カーネルの確認

↪ reboot

↪ uname -r
6.18.1-zen1-2-zen

4. Binderモジュールが有効か確認

↪ lsmod | grep binder

binderカーネルモジュールがロードされておらず,実行した結果何も表示されません.
カーネルの設定を確認しましょう.

↪ zcat /proc/config.gz | grep BINDER
# CONFIG_ANDROID_BINDER_IPC is not set
CONFIG_ANDROID_BINDER_IPC_RUST=y
CONFIG_ANDROID_BINDER_DEVICES=""

Rust版のBinderが有効になっているが,デバイスが設定されていないようです.
Binderデバイスを設定する必要がありますが,Arch Wikiを参照するとCONFIG_ANDROID_BINDER_DEVICESでBinderデバイスを管理するのはいくつか問題がありそうなのでbinderfsというBinderデバイスの管理方法が推奨されています.

5. binderfsのマウント

binderfsを用いたbinderfs専用のファイルシステムをマウントします.

↪ sudo mkdir -p /dev/binderfs
↪ sudo mount -t binder binder /dev/binderfs

ls -la /dev/binderfs/

binder-controlが作成されていることを確認します.

6. Waydroidのインストール

↪ yay -S waydroid

Waydroidのインストール後に,再起動後も自動的にbinderfsがマウントされるようにします.

sudo mkdir -p /etc/systemd/system/waydroid-container.service.d/
↪ sudo tee /etc/systemd/system/waydroid-container.service.d/override.conf << EOF
[Service]
ExecStartPre=/bin/sh -c 'mkdir -p /dev/binderfs && mount -t binder binder /dev/binderfs || true'
EOF
sudo systemctl daemon-reload

7. Waydroidサービスの有効化と初期化

↪ sudo systemctl enable --now waydroid-container.service
↪ sudo waydroid init

8. Waydroidセッションの起動

↪ waydroid session start

別ターミナルでUIを表示

↪ waydroid show-full-ui

こんな感じの画面が出ると思います(※Kindleをインストール後に撮影したものです).

9. Google Play Storeのインストール

Google Play Storeをインストールするスクリプトがコミュニティにあるので利用します.

↪ git clone https://github.com/casualsnek/waydroid_script
↪ cd waydroid_script
↪ python3 -m venv venv
↪ venv/bin/pip install -r requirements.txt
↪ sudo venv/bin/python3 main.py
  • Android 13を選択
  • Installを選択
  • gappsとlibhoudiniをインストール

10. Google Device IDの登録

Google Play Storeの利用にはGoogle Play Protectにデバイスを登録する必要があります.
登録に必要なIDの参照も最期ほどのスクリプトを利用します.

↪ cd waydroid_script
↪ sudo venv/bin/python3 main.py

11. Waydroidの再起動

↪ waydroid session stop
↪ sudo systemctl restart waydroid-container.service
↪ waydroid session start

別ターミナルで実行

↪ waydroid show-full-ui

12. Kindleのインストール

Play Storeを開き,アカウントの登録/ログインをします.
登録後,Kindleを検索してインストールします.

13. Kindleの起動

インストール後,Waydroidのホーム画面にKindleが追加されています.
waydroid show-full-uiを使用しなくても,以下のコマンドで起動することもできます(もちろんwaydroidのセッションの起動は必要です).

↪ waydroid app launch com.amazon.kindle

オプション設定

画面サイズの変更

↪ waydroid prop set persist.waydroid.width 800
↪ waydroid prop set persist.waydroid.height 1280
↪ waydroid session stop
↪ waydroid session start

Fish shellでのエイリアス設定

私はfishを使っているので,以下のような設定を作成してkindleコマンドでKindleを起動できるようにしています.bashやzshでも再現できます.

~/.config/fish/config.fishに追加:

function kindle
    if not waydroid status &> /dev/null
        waydroid session start &
        sleep 3
    end
    waydroid app launch com.amazon.kindle
end
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?