~~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= ===== これ以外は? ===== これ以外はまだ特に何もしていません(忘れ物があるかも)...何かあれば,また更新します.