Ubuntu Weekly Recipe

第252回コンバーチブルPCでUbuntuを使う

Windows 8の発売とともに、マルチタッチ対応のディスプレイがついたPCが増えてきました。そこで今回はノートPCとしてもタブレットとしても使えるコンバーチブルPC、⁠Let'snote CF-AX2」でUbuntuを使ってみます。

薄いレッツノート!

レッツノートと言えば、その高い耐久性が特徴の一つでしょう。そのため、他のウルトラブックに比べると分厚いサイズになりがちでした。しかしCF-AX2は従来の耐久性を維持しつつ、他のウルトラブックにも負けない18mmという薄さを実現しています。

さらに、マルチタッチ対応液晶ディスプレイを搭載し、ディスプレイを360度回転させることでタブレット型にも変形できるという、とてもわくわくするハードウェアになっているのです。

主な仕様

CF-AX2の主な仕様は次のとおりです。ここでは店頭モデルの一番安いタイプの仕様を掲載しています。

  • Intel Core i5-3317U CPU @ 1.70GHz
  • 4GBメモリー
  • 128GB SSD
  • 11.6型液晶ディスプレイ(1366x768⁠⁠、静電式マルチタッチ対応
  • VGA、HDMI出力
  • IEEE802.11 a/b/g/n対応無線LANとGigabit対応有線LANポート搭載
  • Bluetooth v4.0
  • Intel HDA Audio
  • SDメモリーカードスロット
  • USB3.0ポートx2

Ubuntuのインストール

Ubuntuのインストール方法として次の3種類が考えられます。

  • Windows上に仮想マシンを作成してそこにUbuntuをインストールする
  • Windowsのパーティションを分割してデュアルブートする
  • Windowsを消してクリーンインストールする

Windows 8をそのまま使いたいなら、最初の仮想マシンを使う方法をおすすめします。ただしUbuntu 12.10をVirtualBoxにインストールする場合はいくつかの注意点が存在しますので、第246回のオマケを参考に必要な対応を行ってください。

デュアルブートについてはおすすめしません。一つ目の理由は、最近はリカバリー領域がディスク内部に別パーティションとして用意されていることが多く、デュアルブートのためにパーティションをうまく分割することが難しくなっているためです。UEFI対応モデルの場合は、UEFI用のシステムパーティションも存在しますので、これらを消去しないように設定するのは難しいでしょう。

もう一つの理由はWindows 8の「高速スタートアップ」との相性問題です。Windowsは起動を高速化するために、起動時にいくつかの処理を省けるよう終了時に特別な処理を行っています。この状態でWindowsを終了し、Ubuntuを起動してしまうと、Windowsが起動しなくなってしまうケースがあるようです。特にWindows 8モデルでは高速スタートアップが初期状態でオンになっているので、LiveDVDやLiveUSBを使う場合も注意しておきましょう。

図1 Ubuntuとデュアルブートするなら、高速スタートアップは無効にする
図1 Ubuntuとデュアルブートするなら、高速スタートアップは無効にする

またこれは仮想マシンにも言えることですが、SSDモデルだとどうしても使えるディスク容量が少なくなってしまいます。仮想マシンだとディスクイメージを外部に置いてしまう方法を使えるものの、デュアルブートだとそういうわけにもいきません。やはりホストOSは、WindowsかUbuntuどちらかに絞った方が良いでしょう。

今回は128GBのSSDをUbuntuでフルに使いたいため、Windowsを消してUbuntuをクリーンインストールする方法を使用しました。ちなみにクリーンインストールする場合は、Windowsを消す前にWindowsでしかできないような、ファームウェアのアップデートの適用や、リカバリー用USBディスクの作成もしておきましょう。

インストール時の注意点

CF-AX2にはUSB 3.0対応の端子がついていますので、クリーンインストールの場合は3.0対応のUSBメモリーを使ってLiveUSBを作るのが高速でおすすめです。既にUbuntuが存在するなら「スタートアップ・ディスクの作成」でLiveUSBを作ってしまいましょう。Windowsしかない環境なら、USB Installerのインストールを参考にしてください。

図2 LiveUSBはISOイメージと「スタートアップディスクの作成」で簡単に作成できる
図2 LiveUSBはISOイメージと「スタートアップディスクの作成」で簡単に作成できる

日本語Remixや32ビット版を使う場合は、UEFIをレガシーモードにして起動する必要があります。電源投入直後のロゴ画面でF2キーを押し、UEFIの設定ツールから「起動」「Boot Mode」「UEFI起動」の設定を変更しましょう。

ちなみに、64ビット版を使う場合はUEFIとセキュアブートを有効にしたままで起動できます。もしLiveUSBを認識しない場合は、UEFIの設定ツールから「終了」「デバイスを指定して起動」でUSBデバイスを選択してください。

ハードウェアの動作確認

CF-AX2の場合、サウンドも無線LAN、有線LAN、Bluetoothも特に問題なく認識、動作します[1]⁠。インストール中にカーネルのアップデートや(日本語Remix以外を使う場合は)言語パックの適用を行いたいなら、インストール時に無線LANの設定を行っておきましょう。

ウェブカメラも認識されるので、インストール時に画面の前に座っている人が表示されますが、そこは我慢して「次へ」を押してください[2]⁠。

Intelのグラフィックドライバーが使われるのでインストール後は追加のドライバーを導入する必要なく、3Dアクセラレーションの効いたUnityが動作するはずです。

Unityの動作が遅い場合は端末から次のコマンドを入力して、どれかがnoになっていないか確認してみましょう。

$ /usr/lib/nux/unity_support_test -p
OpenGL vendor string:   Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Ivybridge Mobile
OpenGL version string:  3.0 Mesa 9.0

Not software rendered:    yes
Not blacklisted:          yes
GLX fbconfig:             yes
GLX texture from pixmap:  yes
GL npot or rect textures: yes
GL vertex program:        yes
GL fragment program:      yes
GL vertex buffer object:  yes
GL framebuffer object:    yes
GL version is 1.4+:       yes

Unity 3D supported:       yes

サスペンドとレジューム

サスペンドとレジュームも問題ありません。サスペンドとレジュームが正しく行われたかどうかを確認したいなら、ふたを閉じたあと、しばらくして再びふたを開き端末から次のコマンドを入力してください。

$ dmesg | less

次のメッセージの少し前から、サスペンドが開始しています。

[29891.645929] PM: Preparing system for mem sleep

レジュームは次のメッセージ前後からの開始です。

[29892.753289] ACPI: Low-level resume complete

これらのメッセージから一番最近のログまででエラーが発生していないようなら、特に問題ないと考えて良いでしょう。

外部ディスプレイ

HDMI/VGAともに接続しただけで、システム設定の「ディスプレイ」が認識します。また、Ubuntuの場合は外部ディスプレイ単体にしなくても、FullHDでの表示も可能でした。

図3 システム設定の「ディスプレイ」で状態を変更できる
図3 システム設定の「ディスプレイ」で状態を変更できる

Fn+F3キーを押すことで、LCD単体、外部ディスプレイ単体、画面のミラー、通常の外部ディスプレイと設定を切り替えることができます。

ハードウェアキー

Fnキーの動作も輝度やボリュームの設定、ミュートの場合は特に問題ありませんでした。バッテリー通知は、NotifyOSDではなく統計情報のウィンドウが表示されます。Fn+F7、Fn+F10はどちらもサスペンドになります。Fn+F8のプロジェクターヘルパーは画面が一度再起動する以外に特に動作しませんでした。

起動時のロゴ画面でF2キーを押しUEFIの設定ツールを起動すれば、FnキーとCtrlキーの位置を入れ替えることが可能です。キーボードの左下はCtrlでないと許せないという人はこちらから設定すると良いでしょう。

また、CF-AX2の場合、タブレットモードでの用途を想定していくつかのハードウェアキーが備わっています。

  • タッチパッドにあるキーボードロックキーを押せばキー入力がロックされます。
  • サイドのボリュームキーで音量を調整できます。
  • サイドの画面回転ロックキーは、Ubuntuの場合Superキーとして認識されるようです。
  • サイドのWirelessスイッチをOFFにすると無線LAN、Bluetoothともにオフとなります。
  • ディスプレイ上部のWindowsキーは、Superキーとして認識されます。

ちなみにキーボード自体がちょっと固く、しっかり上から押さないと入力されなかったり、FnキーやAltキーが入りっぱなしになることがあるようです。

SDカードスロット

CF-AX2にはSD/SDHC/SDXCに対応したカードスロットが内蔵されていますが、Ubuntuの場合そのままだとドライバーが存在しないため認識しません。

lspciコマンドを使うと、RealtekのPCIeカードリーダーであるRTS5229であることがわかるので、Realtekのサイトから、Linux用のドライバーのソースコードをダウンロードし、ビルドしましょう。

$ sudo apt-get install build-essential linux-headers-generic
(ダウンロードしたソースコードを展開する)
(Makefileがあるディレクトリに移動する)
$ make
$ sudo make install
$ sudo depmod
$ sudo modprobe rts5229
$ sudo sh -c "echo rts5229 >> /etc/modules"

これで、SDカードスロットにSDカードを挿入すると、自動的にマウントされてファイルブラウザーが起動するようになります。

カーネルアップデート時にドライバーを自動でビルドしたい場合は、DKMSを使うようにしてください。

バッテリー

CF-AX2には、交換可能なバッテリーと内蔵の、2つのバッテリーが搭載され、片方はホットプラグに対応しているという大きな特徴があります。このため、コンセントがない環境でも、電源を切ることなくバッテリー交換ができるのです。

Ubuntuの場合も、バッテリーインジケーターに2つのバッテリーが表示されます。また、交換可能なバッテリーが切れたら自動的に内蔵バッテリーに切り替わってくれますし、電源が入っている状態で、交換可能なバッテリーを取り外しても特に問題は起きません。

図4 片方のバッテリーが切れた状態
図4 片方のバッテリーが切れた状態

ちなみに、無線LANとBluetoothがオンの状態で、テキストエディタで編集しながら、ウェブブラウザーのTwitterやGmailを起動したままブラウジングをする状態だと、4時間ぐらいで交換可能なバッテリーが、さらに2時間ぐらいで内蔵バッテリーが切れるぐらいの駆動時間になりました。

液晶の輝度も含めて、特にチューニングは行っていないため、調整すればもっと駆動時間は伸びるものと思います。

タブレットに変形

CF-AX2は、液晶を360度回転させることで、液晶とキーボードが外側になったタブレット型に変形できます[3]⁠。ただの変形なので、Ubuntuもそのまま使用できるのですが、Windows版の挙動や、Windowsキーの位置、サイドのハードウェアキーの位置を考えると、変形時は画面を上下反転して使うことを想定しているようです。

そこでUbuntuでも、画面とタッチスクリーンの座標を反転させてみましょう。

画面の回転

画面を回転する方法自体はそれほど難しくありません。システム設定の「ディスプレイ」「回転」「180度」にするだけです。

ただ、後述のタッチ座標の回転と同時に行いたい場合や、何か特定のボタンを押したときに回転させたい場合はスクリプトを使えた方が便利なので、回転するためのコマンドを確認しておきましょう。

180度回転する
$ xrandr --output LVDS1 --rotate inverted
元に戻す
$ xrandr --output LVDS1 --rotate normal

ここでLVDS1は、ノートPC本体のディスプレイです。xrandrをオプションなしで実行すれば、VGA1やHDMI1など他のディスプレイ名も表示されるので、他のディスプレイを操作する場合は参考にしてください。

$ xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1366x768       60.0*+
   1360x768       59.8     60.0
   1024x768       60.0
   800x600        60.3     56.2
   640x480        59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)

rotateオプションにinvertedを指定すれば画面を180度反転します。normalで元に戻ります。

タッチ座標の回転

タッチ座標はxinputコマンドで変更します。なお、12.10のX serverには、座標変更後のリリースイベントを誤認識する不具合があるため、12月2日時点のパッケージだとカーソルキーが意図しない場所に移動します[4]⁠。

修正パッケージはproposedでテスト中ですので、数日以内に12.10でも解決するはずです。うまく動作しない場合は、xserver-commonパッケージが、⁠2:1.13.0-0ubuntu6.1」にアップデートされるまで待つようにしてください。

xinputを使うには、まずタッチスクリーンのIDを取得します。⁠eGalax Inc. eGalaxTouch EXC7903-02v10」がタッチスクリーンですので、IDは9となります。

$ xinput
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ eGalax Inc. eGalaxTouch EXC7903-02v10     id=9    [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=12   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ USB HD Webcam                             id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=11   [slave  keyboard (3)]
    ↳ Panasonic Laptop Support                  id=13   [slave  keyboard (3)]

座標変換の際は、高校時代に習った行列演算を思い出しましょう。今回はX座標、Y座標ともに反転させるだけなのでいたってシンプルです。

180度回転する
$ xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" -1, 0, 1, 0, -1, 1, 0, 0, 1
元に戻す
$ xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" 1, 0, 0, 0, 1, 0, 0, 0, 1

xinputの座標変換を使えば、マルチディスプレイ環境でタッチパッドの部分領域をそれぞれのディスプレイに割り当てたり、ディスプレイを90度回転させた状態のためのタッチスクリーンの設定を行うことも可能です。

キーに割り当てる

逐一これらのコマンドを打つのは面倒なので、回転をトグル式のスクリプトにしてしまい、特定のキーを押したらスクリプトが呼ばれるようにしてしまいましょう。

まず次のようなスクリプトをrotate.shという名前で保存しておきます。

#!/bin/bash

OUTPUT=LVDS1

case $(xrandr | grep $OUTPUT | awk '{print $4}') in
    inverted)
        xrandr --output $OUTPUT --rotate normal
        xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" 1, 0, 0, 0, 1, 0, 0, 0, 1
        ;;
    *)
        xrandr --output $OUTPUT --rotate inverted
        xinput --set-prop 9 --type=float "Coordinate Transformation Matrix" -1, 0, 1, 0, -1, 1, 0, 0, 1
        ;;
esac

次にシステム設定の「キーボード」のショートカットタブを開きます。⁠独自のショートカット」でプラスボタンを押し、名前は任意に、コマンドにrotate.shを指定して「適用」ボタンを押してください。

「無効」と表示されているところをクリックしてショートカットにしたいキー入力を押せば設定完了です。次の図では、⁠Ctrl+無変換」に設定しています。

図5 名前を「回転」にして、Ctrl+無変換で回転するように設定
図5 名前を「回転」にして、Ctrl+無変換で回転するように設定

これで「Ctrl+無変換」を押してディスプレイの回転し、タッチスクリーン座標が期待通りの動作をするなら成功です。

Unityのマルチタッチ機能を使う

Unityはマルチタッチ機能にも対応しており、例えば4本指でタップするとDashが開きます。せっかくマルチタッチスクリーンがついているのだから、これを活用しない手はありません。操作方法については公式のドキュメントにも掲載されていますので、ここで紹介しておきましょう。

  • 4本指タップ:Dashを開く
  • 4本指で左右にスワイプ:Launcherが隠れているなら表示する
  • 3本指タップ:ウィンドウの移動やサイズ変更のハンドルを表示する(一定時間後に消える)
  • 3本指でピンチイン、ピンチアウト:ウィンドウを通常サイズ化、最大化する
  • 3本指で押し続けたあとに移動:ウィンドウを移動する
  • 3本指でダブルタップ:一つ前に表示していたウィンドウに切り替える
  • 3本指でタップしたあとに再度押し続けながら移動する:ウィンドウスイッチャーを表示、選択する
  • 上記の状態で指を離す:選択したアイコンのウィンドウを表示
  • 3本指でタップしたあともう一度プレスして指を離す:ウィンドウスイッチャーを表示する

なかなか覚えるのも、使いこなすのも難しいラインナップです。ウィンドウのサイズ変更や移動は便利なので、まずはそのあたりから覚えるのが良いでしょう。

マルチタッチではありませんが、Launcherのアイコンをシングルタップしてウィンドウを切り替える操作などは、慣れてしまうとかなり便利なので、おすすめです。

なお、12.10のUnityはマルチタッチイベントを常に奪ってしまうらしく、ToucheggやGinnといったマルチタッチの設定ツールが使えません[5]⁠。これらを使いたい場合は、他のデスクトップ環境に切り替えてください。

スクリーンキーボードを使う

タブレット型にすると通常のキーボードは使い辛いため、スクリーンキーボード(Onboard)を表示させましょう。システム設定の「ユニバーサルアクセス」からタイピングタブを表示し、⁠タイピング支援」をオンにしてください。

スクリーンキーボードは常にが表示されますので、邪魔な場合は右上の閉じるボタンで非表示にしてしまいましょう。再度表示する場合はインジケーターを使います。

タブレット化時に画面の回転と同時にオン/オフを行いたいなら、次のコマンドをrotate.shに組み込むと良いでしょう。

スクリーンキーボード起動
$ gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true
スクリーンキーボード終了
$ gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false

タッチスクリーンを使う場合、右クリックを入力する術がありません。ユニバーサルアクセスの「副ボタンの代替」はタッチ入力には影響しないからです。しかしスクリーンキーボードにはカーソル入力モードがあります。

スクリーンキーボードの右上の閉じるボタンの左下にあるマウスカーソルを押すと、マウスクリックの入力欄が表示されます。上から2つ目が右クリックボタンになりますので、これを押してから右クリックしたい領域を再度タッチすることで、右クリックを入力できます。

図6 スクリーンキーボードを使えばマウス入力もできる
図6 スクリーンキーボードを使えばマウス入力もできる

おすすめ記事

記事・ニュース一覧