Ubuntu Weekly Recipe

第576回GPD MicroPCにUbuntuをインストールする

6月後半ぐらいから、GPDがクラウドファンディングを行っていたGPD MicroPCが出資者の元に届き始めました。今回はMicroPCにUbuntuをインストールする方法を紹介しましょう。

GPD MicroPCとは

GPD MicroPCはGPD社が開発する小型のノートPC(UMPC)シリーズのひとつで、第543回第544回で紹介したGPD Pocketの派生品です。

GPD Pocketやその後継機種であるGPD Pocket2、そして最近クラウドファンディングを開始したGPD P2 Maxなどが、一般的な小型PCとしての位置づけなのに対して、GPD MicroPCは「プロフェッショナル向けポケットパソコン」を謳っています[1]⁠。

具体的には1GbEに対応したRJ-45(8P8C)やRS-232用のEIA-574コネクタ、小型PCとしては珍しい3つものUSB Aコネクタなど、最近のPCでは省かれがちなさまざまなインターフェースを備えていることが特徴です。耐衝撃も従来機種より強度になっており、eMMCの代わりにM.2 SSDを採用しています。ストラップホールが付いているのも他にはない特徴ですね。

その代わりなのかどうかはわかりませんが、GPD Pocket 2に比べるとディスプレイサイズは7インチ(1920x1200)から6インチ(1280x720)と小さくなっていますし、タッチパネルも非対応になりました。重量は減っているものの、バッテリー容量も減っています。

GPD MicroPCのスペックは次のとおりです。

CPU Intel Celeron N4100(64bit、4コア4スレッド、1.1GHz/2.4GHz)
Memory 8GiB LPDDR4 2133 MHz
Storage 128GB M.2 SATA SSD(BIWIN製⁠⁠、microSDXCカードリーダー(Realtek製)
GPU UHD Graphics 600
Display 720x1280、6inch、タッチパネル非対応
Ethernet Realtek RTL8168
Wi-Fi 2.4GHz/5GHz、802.11 ac/b/g/a/n(Intel Wireless 3165)
Bluetooth Bluetooth 4.2(同上)
Sound Realtek ALC269VC、モノラルスピーカー・マイク
Battery 3100mAh[2]
Connectors USB Type-C(USB 3.1 Gen 1、DisplayPort Alt Mode、PD⁠⁠、HDMI 2.0、
USB Standard-A(USB 3.1 Gen 1)x3、ヘッドフォンジャック
Size 153mm x 113mm x 23.5mm、440g

キーボード左上には右クリック・スクロール・左クリックボタンが、右上にタッチパッドが配置されています。このため両手で抱えるようにして持つことで、親指のみでの操作が可能です。

図1 小型PCの命運を左右するキー配列
画像

キーボード自体は既存のGPD Pocket/Pocket2に比べるとしっかりした作りに見えます。英字のキー配置も比較的まともなので、キー入力に迷うこともないでしょう。なお、タッチパッドを配置するためか、数字と記号類も2段になっています。これに関しては、そのまま6以降がそのままずれただけなので、そこまで違和感はないはずです。一応左手親指だけで数字を入力できる仕組みのようです。

ただしサイズの都合上タッチタイピングはかなり難しいです。指の太さ次第ではありますが、タッチパッド操作と同じく両手でホールドしつつ親指でタイプする方法がベストだと思われます。

ちなみにキーボードにはバックライトが備わっています。よって暗いところでもキーを確認できる仕様です。

Ubuntuの起動とインストール

GPD MicroPCは現状Ubuntuをサポートしていません。しかしながら、将来的にUbuntuをサポートする予定ではあります。

とはいえ「ただのPC」なので、今の段階でもUbuntuが起動しないわけではありません。というわけで実際にUbuntuをインストールしてみましょう。

今回はUbuntu 19.04を使います。また、Ubuntu MATEやXubuntuなど他のフレーバーでもこれから説明する方法で起動できます。理論上は18.04や現在開発中の19.10でも同じです。

ストレージのサイズが大きい(128GiB)ので、Windowsとのデュアルブートも可能です[3]⁠。ただし今回はWindowsを消して、クリーンインストールすることにします。なお、1月ぐらいに公開された分解動画を見る限り、⁠M.2 Type 2242(B & M Key⁠⁠」のようなので、一般的なM.2 SATAカードで換装が可能だと思われます。このあたりeMMCとは異なるメリットですね。

ポイントは次の3つです。

  • 2019年6月時点のUbuntuはいずれもそのままでは画面が表示されません(ディスプレイを認識できません⁠⁠。
  • nomodeset(safe graphics mode)を利用することで上記は回避可能ですが、左に回転してしまいます。つまりディスプレイから見るとポートレートモードで表示されます。
  • より新しいカーネルとパッチを導入すればいずれも解消可能です。

言い方を変えると、ディスプレイ以外に見た目上の大きな問題は見受けられませんでした。

まずはUbuntu 19.04のリリースイメージ(ubuntu-19.04-desktop-amd64.iso)をダウンロードします。ダウンロードしたイメージをddコマンドや第488回でも紹介されているEtcherでUSBメモリーなどに書き込みましょう。

作成したUSBメモリーをGPD MicroPCに接続し、GPD MicroPCを起動します。

GPDのロゴが表示されたらFn+7(F7)キーを押し続けてください[4]⁠。起動デバイスの選択画面(Please select boot device)が表示されるので、カーソルキーで「UEFI: デバイス名, Partition2」を選択します。⁠デバイス名」の部分はおそらくUSBメモリーのベンダーなどが表示されるはずです。もし表示されない場合は、USBメモリーを接続するポートを変更して再起動してください。

GRUBメニューから縦置きの画面になってしまいます。カーソルキーをうまく駆使して「Try Ubuntu without installing (safe graphics)を選択してください。⁠safe graphics」のほうを選ぶのがポイントです。⁠safe graphics」ではないほうを選ぶと、画面が暗転したまま何も表示されません。その場合は一度強制的に電源を切って、再度起動し直してください。

Liveセッションが起動するので、Wi-Fi・キーボード・タッチパッド・サウンドあたりの動作を確認します。画面の回転はサポートしていないので注意が必要です[5]⁠。画面が縦置きのままでは使いづらいので、インストールしてから動作を確認する手順にしても良いかもしれません。

特に問題なければ、デスクトップ上の「Install Ubuntu 19.04」をダブルクリックしてインストールを開始しましょう。マウスカーソルを合わせるのが面倒なら、⁠Super + 1」を入力するとインストーラーが起動します。言語は日本語を選択してもかまいませんが、キーボードレイアウトは「英語(US⁠⁠」を選びます。

図2 ポートレート表示だと
インストーラーが見切れてしまう
画像

縦置きな上に短辺の解像度が720pxしかないため、インストーラーが見切れてしまいます。この状態でのインストールはなかなか難儀ではありますが、マウスとタブキー、それにこれまでUbuntuをインストールしたときの記憶を駆使して対処してください。皆様のUbuntuへの愛が問われています[6]⁠。

ポイントはウィンドウタイトルをAlt+左 クリックで移動できることです。もしくはウィンドウ上でAlt+F7を押すとウィンドウグラブモードに移行するので、タッチパッドやカーソルキーで移動した上で左クリックもしくはEnterキーで位置を確定できます。

あとは普通のUbuntuとインストール方法は一緒です。ただしインストールが完了しても再起動してはいけません⁠。

再起動するかどうか問い合わせられたら、⁠試用を続ける」を選択してください。これは再起動前にGRUBの設定を「safe graphics」モードに変更する必要があるためです[7]⁠。

Ctrl-Alt-Tで端末を起動した上で、次のコマンドを実行してください。

$ sudo sed -i "s/splash/splash nomodeset/g" /target/boot/grub/grub.cfg
$ sudo sed -i "s/splash/splash nomodeset/g" /target/etc/default/grub

本来であれば/etc/default/grubを編集してupdate-grubを実行するのが正しいやり方ではありますが、今回のようなLive USB環境だとupdate-grubがきちんと動くように設定するのに手間がかかります。そこで「とりあえずの措置として」起動用のgrub.cfgを直接編集しています。また、起動後にupdate-grubを実行した時のために、/etc/default/grubも合わせて更新しています。

あとは通常どおりシステムをシャットダウンしてください。Liveセッション終了時にUSBメモリーを取り外すよう指示されるので、取り外した上でEnterキーを入力しましょう。

GPD MicroPCのBIOS事情

画面が縦置きのままだと使いづらいので、まずはその対処を行います。これはより新しいカーネルをインストールすることで対応可能です。

  • 2019年4月26日以前のBIOSの場合:Kernel 5.6.0-rc5以降をインストールします
  • 2019年5月28日以降のBIOSの場合:Kernel 5.6.0-rc5以降にパッチを当てたものをインストールします

GPDのBIOSは伝統的にシステム関連の情報がまったく入っていませんでした。このためカーネル側でディスプレイ関連の情報に対してソフトウェア的な補正を行おうにも「GPDのデバイスである」ことがわからなかったのです。

これまでは「システム情報が初期値であり、BIOSのリリース日がこの日だったらおそらくGPDのはずだ」という無理やりな判断基準で補正を行っていました。つまりBIOSが更新されるたびにカーネルも修正する必要があったのです。そのため、GPD系のデバイスでUbuntuを動かす場合は特定のBIOSに固定する方法が一般的でもありました。

2019年5月28日版のBIOSから、晴れてシステム情報が登録されるようになります。

$ sudo dmidecode -t 0,1
Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
        Vendor: American Megatrends Inc.
        Version: 4.09
        Release Date: 05/28/2019
        (中略)

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: GPD
        Product Name: MicroPC
        (後略)

つまり今後は「Manufacturer: GPD」「Product Name: MicroPC」だけ確認すれば良く、BIOSが更新されても(これらの文字列がそのままであれば)引き続きMicroPC用の補正は有効になるということです。

なお、Kernel 5.6.0-rc5まではManufacture/Product Nameが「Default string」でマッチングしていたため、新しいBIOSでは補正が反映されません。そのためより新しいBIOSを使っているのであれば、GPD/MicroPCに対応したパッチが必要になるのです。このパッチが5.2のリリースに間に合うかどうかは不明です。もし間に合ったらUbuntu 19.10からは特に何もせずとも利用できる見込みです。

インストールされているBIOSは届いた時期によって異なるようです。上記文字列やBIOSのリリース日はBIOS画面のMainタブからでも確認できます。

MicroPC対応カーネルのインストール

さて、前置きが長くなりましたが、MicroPC対応カーネルをインストールしましょう。

初回起動時に表示されるオンラインアカウントの登録の画面はとりあえず無視して、Ctrl-Alt-Tで端末を開きます。まずはパッケージ一式を最新のものに更新しておきましょう。

$ sudo apt update
$ sudo apt full-upgrade

ここではあとの作業と一連の操作になるので端末で実行していますが、パッケージを更新する処理自体は、おそらく初回起動後に表示されているであろう「パッケージの更新ダイアログ」からでもかまいません。更新後の再起動をするかどうかは、どちらでも結構です。

パッケージを更新したら、カーネルをインストールします。前述のとおり2019年4月26日以前のBIOSであれば5.2.0-rc5以降のカーネルで問題ありません。テスト目的で提供されているMainlineカーネルを使うのが簡単でしょう。詳しいことは第524回「新しい開発中のカーネルをビルド&インストールする」を参考に、先日リリースされたばかりのv5.2-rc7をインスールしてみてください。最近有償ソフトウェアとなったukuuを使うという手もあります。

今回は2019年5月28日版のパッチも適用した自家製PPAを使うことにします。

$ sudo add-apt-repository ppa:cosmos-door/linux-gpd
$ sudo apt install \
  linux-image-unsigned-5.2.0-050200rc7gpd1-generic \
  linux-modules-extra-5.2.0-050200rc7gpd1-generic

とりあえず必要最低限なもののみを指定しています。使い方によっては他にもパッケージが必要になるかもしれません。詳しいことはPPAの詳細からパッケージ情報を確認してください[8]⁠。

インストールが完了したら起動オプションからnomodesetを外して、safe graphicsモードをオフにします。

$ sudo sed -i "s/ nomodeset//g" /etc/default/grub
$ sudo sed -i "s/TIMEOUT=0/TIMEOUT=10/g" /etc/default/grub
$ sudo update-grub

何か問題があったときのために、GRUBのタイムアウトを長めの10秒まで伸ばしています。うまく起動できることを確認したら、0秒に戻してしまっても良いでしょう。

ここまでできたら再起動しましょう。GRUBでは自動的にインストールしたカーネルが選択されているはずですので、横置きの画面のままログイン画面に遷移するかと思います。

図3 きちんと横置きで表示される
画像

GPD MicroPCにおけるUbuntuの使い方

Ubuntuそのものの使い方は、GPD MicroPCでも違いはありません。端末やブラウザー(Firefox)を起動したり、Ubuntuソフトウェアやaptコマンドでパッケージをインストールするなど、普通のPCとして使用できます。第543回第544回の設定も参照してください。

日本語入力IBus/Mozcを使います。英語キーボードなので、⁠Ctrl+Space」で日本語入力をオンオフできるよう設定が必要です。

まずはシステム設定の「地域と言語」を開きます。⁠入力ソース」の設定は好みが分かれるところですが、日本語入力の割合が多いなら、⁠日本語 (Mozc)」を一番上に持ってきておくと良いでしょう。⁠英語 (US)」を消してしまってもかまいません。ここにリストアップされているものは、Super + Spaceで切り替えられます。

図4 日本語 (Mozc)を一番上にする
画像

次に「インストール冴えている言語の管理」を選択します。初回起動時は「言語サポートが完全にはインストールされていません」と表示されるので「インストール」を押してパッケージをインストールしておきましょう。インストールが完了したら「閉じる」を押しておいてください。

図5 初回起動時は未インストールのパッケージのインストールが促される
画像

ここまでできたら、一度ログアウトしてからログインしなおします。画面右上のキーボードインジケーターが「A」もしくは「あ」になっているので、それをクリックし、⁠ツール」「プロパティ」を選択します。

図6 Mozcプロパティ
画像

「キー設定の選択」から「編集」を押し、現れたダイアログの「入力キー」でソートします。このうち「Hankaku/Zenkaku」になっているものをゆっくりと3回クリックして「Mozcキーバインディング設定」ダイアログを表示し、好みのキー入力(たとえばCtrl + Spaceなど)に変更してください。

図7 Mozcキー設定で「Hankaku/Zenkaku」を順に変更していく
画像

最後に「Mozcキー設定」ダイアログと「Mozcプロパティ」ウィンドウのそれぞれで「OK」を押して、設定を反映します。もう一度ログアウトして、ログインし直したら設定の反映が完了です。

ハードウェアの構成

GPD MicroPCのスペックは前掲の通りですが、Ubuntu側からはどのように見えているでしょうか。第522回第543回のように、lshwの簡易出力を取得してみましょう。

$ sudo lshw -short
H/W path               デバイス  クラス      詳細
==========================================================
                                     system         MicroPC (Default string)
/0                                   bus            Default string
/0/0                                 memory         64KiB BIOS
/0/23                                memory         8GiB システムメモリー
/0/23/0                              memory         4GiB DIMM LPDDR4 同期 2133 MHz (0.5 ns)
/0/23/1                              memory         4GiB DIMM LPDDR4 同期 2133 MHz (0.5 ns)
/0/2e                                memory         224KiB L1 キャッシュ
/0/2f                                memory         4MiB L2 キャッシュ
/0/30                                processor      Intel(R) Celeron(R) N4100 CPU @ 1.10GHz
/0/100                               bridge         Intel Corporation
/0/100/0.1                           generic        Intel Corporation
/0/100/2                             display        Intel Corporation
/0/100/e                             multimedia     Intel Corporation
/0/100/f                             communication  Intel Corporation
/0/100/12                            storage        Intel Corporation
/0/100/13                            bridge         Intel Corporation
/0/100/13/0            wlp1s0        network        Wireless 3165
/0/100/13.2                          bridge         Intel Corporation
/0/100/13.2/0          eno1          network        RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
/0/100/15                            bus            Intel Corporation
/0/100/15/0            usb1          bus            xHCI Host Controller
/0/100/15/0/3                        input          USB KEYBOARD
/0/100/15/0/4                        communication  Bluetooth無線インターフェース
/0/100/15/1            usb2          bus            xHCI Host Controller
/0/100/15/1/1          scsi2         storage        USB3.0-CRW
/0/100/15/1/1/0.0.0    /dev/sdb      disk           SD/MMC
/0/100/15/1/1/0.0.0/0  /dev/sdb      disk
/0/100/16                            generic        Intel Corporation
/0/100/16.1                          generic        Intel Corporation
/0/100/16.2                          generic        Intel Corporation
/0/100/16.3                          generic        Intel Corporation
/0/100/17                            generic        Intel Corporation
/0/100/17.1                          generic        Intel Corporation
/0/100/17.2                          generic        Intel Corporation
/0/100/17.3                          generic        Intel Corporation
/0/100/18                            generic        Intel Corporation
/0/100/18.1                          generic        Intel Corporation
/0/100/18.2                          generic        Intel Corporation
/0/100/18.3                          generic        Intel Corporation
/0/100/19                            generic        Intel Corporation
/0/100/19.1                          generic        Intel Corporation
/0/100/19.2                          generic        Intel Corporation
/0/100/1c                            generic        Intel Corporation
/0/100/1f                            bridge         Intel Corporation
/0/100/1f.1                          bus            Intel Corporation
/0/1                   scsi0         storage
/0/1/0.0.0             /dev/sda      disk           128GB BIWIN SSD
/0/1/0.0.0/1                         volume         511MiB Windows FAT ボリューム
/0/1/0.0.0/2           /dev/sda2     volume         118GiB EXT4ボリューム

GPD Pocketに比べてデバイスの数が増えているように見えるのは、I2C/UART/SPIコントローラーなどが有効化されているためです。

例のごとくdmesgcpuinfoの結果などは次のURLにアップロードしてあります。

ちなみにGPD Pocketのときと異なり、Wi-Fi/Bluetoothを使うにあたってファームウェアの追加インストールは不要です。

外部ディスプレイの利用

GPD MicroPCには外部ディスプレイ接続端子として、Micro HDMIとUSB Type-C(DisplayPort Alt Mode対応)が用意されています。

カーネルが新しくなったからか、第543回のときと状況が異なり、USB Type-C経由のDisplayPortもつながるようになりました。もちろんサウンドの出力も可能です。

HDMI端子も、普通のHDMIケーブルでかまいません。また、4Kまで出力できました。

図8 1280x720に比べると広大な4K空間
画像

ちなみにGPD MicroPCのグラフィックスコントローラーはVAAPIに対応しています。第532回と同様にVAAPI対応のソフトウェアをインストールすれば、ハードウェアエンコード・デコードが可能になります。

シリアルコンソールの利用

MicroPCの特徴と言えば、なんといっても最近のPCでは特定のモデル以外とんとご無沙汰なEIA-574コネクタが載っていることです。

まずはシリアルコンソールアプリケーションをインストールしましょう。minicomやC-Kermit(のGPL版のG-Kermit)など必要に応じてインストールすると良いでしょう。ちなみにUbuntu 19.04からckermitパッケージは削除されました。ここではscreenを使うことにしましょう。

$ sudo apt install screen

背面のシリアルコンソールポートは/dev/ttyS1として認識されています。

$ dmesg | grep -A1 "8250/16550"
[    2.214416] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    2.239606] 00:02: ttyS1 at I/O 0x2f8 (irq = 3, base_baud = 115200) is a 16550A

よってシリアルコンソールケーブルを接続したら、次のようにして通信が可能になります。

$ sudo screen /dev/ttyS1 115200

第555回でも説明しているように、シリアルコンソールデバイスはdialoutグループに属しています。よってsudoを使ってアクセスしているのですが、毎回sudoを打つのが面倒なら第555回のようにユーザーをdialoutグループに所属させてください。

なお、screenは「Ctrl-a k」で終了できます。これは「現在開いているウィンドウを閉じる」キーバインディングです。

おすすめ記事

記事・ニュース一覧