~~socialite~~
====== GPD Pocket に Debian 9 をインストールした時のメモ ======
{{ ::img_1930.jpg?400 |}}
GPD WIN に Debian 9 をインストールできたので,GPD Pocket にもLinuxを入れてみることにしました.
GPD Pocket での Linux ディストリビューションは,ネットを調べると Arch Linux や Ubuntu での事例が多いのですが,私は普段は Debian を使うことが多く, Debian 9 をインストールしてみることにしました.
免責:ここでは忘れないためのメモ的に書いているので,抜けや間違いなどあるかも知れません m(_ _)m. インストールの保証が出来る(起動保証ができる)ものではないのでご了解おねがいします.抜けや間違いに気づいたら,可能な時間で都度修正します.
もし,このメモでお気づきの点があれば, https://twitter.com/tosihisa にメンションなど頂けたらと思います.
===== 準備物 =====
GPD Pocket への Debian 9 自身のインストールは,インストールそのものはあまり難しくはないのですが,下記が必要に思います.
* 母艦PC(Debian9 amd64)\\ 後述しますが,GPD Pocket に Debian 9 を入れた後は,カスタムカーネルを入れる必要があります.このカスタムカーネルのビルドに母艦PCが必要です.\\ 母艦PCは,deb ファイルが作成できればよいのですが,私は念のため母艦PCにも Debian 9 を入れました.
* USBイーサネットアダプタ\\ Debian 9 インストール時に使います.\\ 私は "j5create JUH470" http://j5create.com/jpn/our-products/usb-hub/juh470.html を使いました.これはイーサネット+USB 3.0ハブなので,USBメモリも挿せて便利です.
* USBメモリ\\ Debian 9 インストールイメージ(debian-9.1.0-amd64-netinst.iso)を入れて,Debian 9 のインストールに使います.
===== インストールの前準備 =====
==== カスタムカーネルのビルド(母艦PC) ====
GPD Pocket は GPD WIN のカスタムカーネルが使えるようです(どの程度使えるかは不明ですが...)
https://wiki.archlinuxjp.org/index.php/GPD_Win に記載のある,[[http://hansdegoede.livejournal.com/17445.html|Hans de Goede のパッチがあたったカーネル]]の情報を元に,GPD Pocket(GPD WIN)用のカスタムカーネルをビルドします.
このカスタムカーネルのビルドに母艦PC(Debian9)を使います.まぁ,GPD Pocket でもやってやれなくは無いとは思いますが,時間を要するとは思います.
以下は,母艦PCで作業します.
# apt-get build-dep linux
# apt-get install git fakeroot
これで,カスタムカーネルをビルドするためのツール類がインストールされます.
次に,カスタムカーネルのソースコードを git で得ます.
$ git clone https://github.com/jwrdegoede/linux-sunxi.git
私が git clone した時のカーネルバージョンは,4.13.0-rc3 でした.
上記の方法だと,git を丸ごと clone するので,
$ git clone --depth 1 https://github.com/jwrdegoede/linux-sunxi.git
と最新のみを得るようにするのでも良いかもしれません.
このカスタムカーネルの注意点は, **この git リポジトリにに入っている .config をそのまま使う**事です.
Debian 9 の config(%% /boot/config-4.9.0-3-amd64 %%) を元にconfigすると,下記のエラーでビルドに失敗します.
ERROR: "xhci_intel_cap_init" [drivers/usb/host/xhci-pci.ko] undefined!
https://www.reddit.com/r/GPDPocket/comments/6idnia/linux_on_gpd_pocket/ にも同じ書き込みがあり,https://github.com/jwrdegoede/linux-sunxi/commit/e101037 の修正を戻せば良さそうと読めますが,git に入っている .config をそのままビルドに使えば,上記のビルドエラーや左記の修正なしにビルドが出来ます.
カスタムカーネルのビルドは下記のように実行します.
$ cd linux-sunxi
$ make deb-pkg LOCALVERSION=-gpdwintt2 KDEB_PKGVERSION=$(make kernelversion)-1
%%LOCALVERSION%% や %%KDEB_PKGVERSION%% は適宜修正してください.また,%%make -j4%%等で並列コンパイルするとビルドが早く進みます.
ビルドが成功すると,下記の4つのファイルができているはずです.
$ ls -l ../*.deb
-rw-r--r-- 1 tosihisa tosihisa 956962 8月 15 01:26 ../linux-firmware-image-4.13.0-rc3-gpdwintt2_4.13.0-rc3-1_amd64.deb
-rw-r--r-- 1 tosihisa tosihisa 10969892 8月 15 01:26 ../linux-headers-4.13.0-rc3-gpdwintt2_4.13.0-rc3-1_amd64.deb
-rw-r--r-- 1 tosihisa tosihisa 42203104 8月 15 01:27 ../linux-image-4.13.0-rc3-gpdwintt2_4.13.0-rc3-1_amd64.deb
-rw-r--r-- 1 tosihisa tosihisa 961596 8月 15 01:26 ../linux-libc-dev_4.13.0-rc3-1_amd64.deb
これでカスタムカーネルの deb パッケージが出来ました.
==== インストール用 USB メモリの作成(母艦PC) ====
https://www.debian.org/index.ja.html から debian-9.1.0-amd64-netinst.iso をダウンロードし,dd コマンドで書き込みます.
# dd if=debian-9.1.0-amd64-netinst.iso of=[USBメモリのデバイスファイル] status=progress
%%dd%% コマンドに %%status=progress%% が設定できるようになり,これを設定すると書き込み状態が出力されるので非常に便利です
これで母艦PCでの作業は一旦終了です.
==== Debian 9 インストール領域の作成(GPD Pocket) ====
GPD Pocket に入っている Windows パーティションのサイズを縮小して,Debian 9 をインストールするための領域を空けます.
私は 55GByte を Debian 9 のために空けました.
もし,Win 10 home -> Win 10 Pro にアップグレードしており,なおかつ bitlocker でドライブ暗号化している場合,パーティションの縮小は出来ますが,Debian 9 インストール後の Win 10 Pro 起動で bitlocker 回復キーの入力が求められるので,bitlocker で暗号化している場合は,回復キーが保管できているか確認が必要です.
===== GPD Pocket へ Debian9インストール =====
GPD Pocket へ Debian 9 をインストールします.カスタムカーネルはインストール後に dpkg コマンドでインストールします.
j5create JUH470 にイーサネットと母艦PCで作成したインストール用USBメモリを挿入し,GPD PocketのBIOSからUSBメモリを選択してインストーラを起動します.
ここでの注意点は,**画面が全て90度左向きに表示されることです.** 私はとりあえずこのまま(90度左向き表示のまま),Debian 9 をインストールしました.Debian 9 のインストール自身は,そのまま特に問題なくインストール出来ました.
あ,インストールの際に下記があります.
* もしかすると,gnome ではうまく動かないかもしれません(動くかもしれません)\\ 私は xfce4 と lxde を入れて,GUIログインは lightdm を使っています.
* ssh経由で設定したほうが楽なので,sshサーバをインストール時に入れました.
===== Debian 9 インストール後の作業 =====
Debian 9 をインストールした後,以下の状態のはずです.
* 表示が90度左向き(操作は可能なのでGUIログインも可能)
* Wifiが使えない.
* ファンが回りっぱなし
まず, j5create JUH470 で有線LANを使ったまま GPD Pocket へリモートログインします(GPO Pocketで作業できなくはないのですが見難くて...)
==== sources.list の修正(non-freeの追加) ====
残念ながら,GPD Pocket はいくつか non-free のパッケージが必要のようですので,sources.list を修正し,%%non-free%%を追加します.
...
deb http://ftp.jp.debian.org/debian/ stretch main non-free
deb-src http://ftp.jp.debian.org/debian/ stretch main non-free
deb http://security.debian.org/debian-security stretch/updates main non-free
deb-src http://security.debian.org/debian-security stretch/updates main non-free
# stretch-updates, previously known as 'volatile'
deb http://ftp.jp.debian.org/debian/ stretch-updates main non-free
deb-src http://ftp.jp.debian.org/debian/ stretch-updates main non-free
追加したら,%%apt-get update%%します.
==== カスタムカーネルのインストール ====
母艦PCで作成した4つの deb ファイルを scp コマンドで GPD Pocket に転送し,
# dpkg -i *.deb
で全部インストールします.特にエラーなどは発生しないはずです.
==== いくつかのパッケージをインストール ====
下記を追加でインストールします.
# apt-get install firmware-brcm80211
# apt-get install firmware-intel-sound
上記は non-free ですので, %%/etc/apt/sources.list%% に non-free を追加していないとパッケージが見つからないはずです.
==== brcmfmac4356-pcie.txtの保管 ====
https://wiki.archlinuxjp.org/index.php/GPD_Win を参考に, brcmfmac4356-pcie.txt を /lib/firmware/brcm へコピーします.
==== grub の設定 ====
下記のようにします.
...
GRUB_CMDLINE_LINUX_DEFAULT="video=efifb fbcon=rotate:1 dmi_product_name=GPD-WINI55"
...
%%video=efifb%%は,本当に必要か未確認です(多分に不要な気がします...).修正できたら,
# update-grub
で grub を更新し, GPD Pocket を再起動します.
===== 再起動後の GPD Pocket の挙動 =====
以下のようになっているはずです.
* grub ブートローダは90度左向きのまま(このまま起動します)
* Linux カーネル出力の表示向きはOK(fbcon=rotate:1)
* X が起動し,lightdm は90度左向き
ここで,そのままログインし,(少し操作しにくいですが)ターミナルエミュレータを起動して,
$ xrandr -o right
を実行すると,表示が90度周り,期待した表示になるはずです.
(なお,私は今のところ,GPD Pocketを起動する度に毎回 xrandr -o right を入れています)
* Wifi は利用できるようになっているはずです.
* バッテリーモニタも利用できているはずです.
* 輝度調整もできているはずです.
==== ファンの制御 ====
[[https://github.com/efluffy/gpdfand|Fan control daemon for GPD Pocket]]をインストールすると,GPD Pocket の温度に応じてファン制御が行われるようになります.
入れてみると,確かにファン制御が行われるようになります.なお,Windows と比べると,ファンの回転が細やか(表現を変えるとよく変わる)様です.
==== LCD表示の回転とタッチパネル ====
2017年8月20日追記
xrandr を使うと画面を回転できますが,同時にタッチパネルも追従できればと思います.
調べると,xinput で入力を出力にマップ出来そうですので,下記のシェルスクリプトを作成しました.
# apt-get install xinput
#/bin/sh
xrandr -o right
TSID=`xinput list --id-only 'pointer:Goodix Capacitive TouchScreen'`
xinput map-to-output $TSID DSI-1
このシェルスクリプトを実行させると,xrandr で回転後,xinput でタッチスクリーンの入力を出力DSI-1(LCD)にマップさせます.
これでLCD画面が回転し,タッチスクリーンもそれに追従するようです.
私は,"xterm -e このスクリプト" を実行するランチャを xfce のパネルに追加しました.起動後にこのランチャを実行すれば,画面が回転してタッチパネルも合います.
==== LightDM の表示文字を大きくする ====
2017年8月22日追記
GUIログインには LightDM を使うようにしていますが,GPS Pocket で表示すると文字が小さく,老眼(!!)の私には厳しいので,文字を大きくします.
LightDM の文字を大きくするには,/etc/lightdm/lightdm-gtk-greeter.conf の xft-dpi に値を設定します.
私は以下のように設定しました.
...
[greeter]
...
#xft-antialias=
xft-dpi=276
#xft-hintstyle=
===== これ以外は? =====
これ以外はまだ特に何もしていません(忘れ物があるかも)...何かあれば,また更新します.