Ubuntu Weekly Recipe

第376回Raspberry Pi 2にUbuntuをインストールし、RDPでリモートアクセスする

今回はRaspberry Pi 2にUbuntuをインストールし、デスクトップ環境をGNOME FlashBackに変更してxrdpでリモートアクセスする方法を紹介します。

Raspberry Pi 2+Ubuntu

Raspberry Pi 2にXubuntuをインストールする方法は、すでに第362回で紹介しています。ただ、この時はまだ汎用インストーラーしかなかったのですが、現在はRaspberry Pi 2専用インストーラーが配布されているので、少しは簡単にインストールできるようになりました。しかも、今回インストールするのはXubuntuではなくUbuntuです。ただしUnityは動作しないため[1]⁠、GNOME FlashBackセッションをインストールし、使用します。

イメージ作成の難易度は第373回で紹介したUbuntu MATEのほうが低いですが、GNOME Flashbackを使用する場合はUnityを除くとほとんどがUbuntuと同じなので、学習コストが極めて低いというメリットがあります[2]⁠。

現在進行形でGNOME Flashbackのバグ修正が進んでおり、14.04のリリース直後には使用できなかったxrdpが使用できるようになりました。どのあたりが便利なのかわからないのはさておき、簡単なクロスビルド環境構築方法も紹介します。Raspberry Pi 2で使用するarmhfアーキテクチャはPPAではビルドできないため、クロスビルド環境を作成する方法を知ること自体には価値があると思います。

事前準備

Raspberry Pi 2とそれに付随するケーブル、8GB以上の中身を消去しても構わない(可能であれば新品の)microSDHCカードとUbuntu 14.04以降がインストールされたPCが必要です。あとはもちろん、インストールイメージ(2015-04-06-ubuntu-trusty.zip)も必要ですのでダウンロードしておいてください。

インストール:ステージ1

UbuntuがインストールされたPCでインストールイメージを伸張し、microSDHCカードを認識させてからダブルクリックしてください。するとディスク(gnome-disks)が起動するので、指示に従ってmicorSDHCカードにリストアしてください。その後GPartedを起動します。デフォルトではインストールされていないため、必要であればUbuntuソフトウェアセンターや端末からインストールしてください。パッケージ名はgpartedです。

GPartedを起動し、右上のプルダウンメニューからmicroSDHCカードを選択し、2番目のパーティションを選択して右クリックし、⁠リサイズ/移動]をクリックします。パーティションを目いっぱいまで広げ、⁠リサイズ/移動]をクリックします。押せるようになった緑のチェックボタンをクリックして[本当に保留中の操作を適用してもよろしいですか?]のダイアログで[適用]をクリックします。そのあとmicroSDHCカードを取り出して、Raspberry Pi 2に挿入して起動します。

インストール:ステージ2

Raspberry Pi 2から起動するとコンソールログインになります。初期ユーザー名/パスワードは共に⁠ubuntu⁠です(引用符は不要⁠⁠。

まずは最初に、apt-getを実行しましょう。

$ sudo apt-get update

続いて最低限必要なパッケージをインストールします。sshとavahi-daemonは必須として、vimユーザーはvimを、Emacsユーザーはemacsをインストールするといいでしょう。vimユーザーと仮定すると、コマンドでは次を実行します。

$ sudo apt-get install ssh avahi-daemon vim

以後はRaspberry Pi 2で実行してもいいですし、母艦たるUbuntuからsshでログインし、実行してもいいですが、今回は後者と仮定します。

avahi-daemonパッケージがインストールされており、Ubuntu PCとRaspberry Pi 2の両方でAvahiデーモンが動作している場合は、次のコマンドでログインできます。

$ ssh ubuntu@ubuntu.local

パスワードは前述のとおり⁠ubuntu⁠です。

ssh接続するメリットのうちの一つが、コピー&ペーストを簡単に行えることですが、次で早速役に立ちます。パッケージのダウンロード元がマスターサーバーになっているため、とても遅いです。というわけで、/etc/apt/sources.listを次のように書き換えてください。

deb http://jp.archive.ubuntu.com/ports/ trusty main restricted universe multiverse
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty main restricted universe multiverse

deb http://jp.archive.ubuntu.com/ports/ trusty-security main restricted universe multiverse
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://jp.archive.ubuntu.com/ports/ trusty-updates restricted main multiverse universe
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty-updates restricted main multiverse universe

deb http://jp.archive.ubuntu.com/ports/ trusty-backports restricted main multiverse universe
#deb-src http://jp.archive.ubuntu.com/ubuntu/ trusty-backports restricted main multiverse universe

書き換えが終わったら保存し、次のコマンドを実行してください。

$ sudo apt-get update
$ sudo apt-get upgrade

最初のコマンドでエラーが出た場合は、コピー&ペーストのミスがある可能性があるので、確認してください。

無事にアップデートが完了したら、いよいよ大量のパッケージをインストールします。次のコマンドを実行してください。

$ sudo apt-get install ubuntu-desktop gnome-session-flashback xrdp xserver-xorg-video-fbturbo fonts-takao language-pack-ja language-pack-gnome-ja ibus-mozc dphys-swapfile

インストールには相当な時間がかかるので、放置してご飯を食べたり、お風呂に入ったり、LibreOfficeの翻訳を確認したりするのがお勧めです。

ここからは怒涛の設定変更があります。まずは/etc/X11/xorg.confを以下のように変更してください。このファイルはデフォルトでは存在しないので、作成してください。

Section "Device"
    Identifier "Raspberry Pi FBDEV"
    Driver "fbturbo"
    Option "fbdev" "/dev/fb0"
    Option "SwapbuffersWait" "true"
EndSection

続いてロケールやタイムゾーンの設定です。次のコマンドを実行してください。

$ echo "Asia/Tokyo" | sudo tee /etc/timezone
$ sudo dpkg-reconfigure -f noninteractive tzdata
$ sudo locale-gen ja_JP.UTF-8
$ sudo dpkg-reconfigure -f noninteractive locales
$ echo "LANG=ja_JP.UTF-8" | sudo tee /etc/default/locale

日本語キーボードを使用している場合は、/etc/default/keyboardの

XKBLAYOUT="us"

を以下のように変更し、

XKBLAYOUT="jp"

次のコマンドを実行してください。

$ sudo dpkg-reconfigure -f noninteractive keyboard-configuration

ネットワークの設定をNetwork Managerで管理する場合は、/etc/network/interfacesの最下行から2行を次のように変更してください。

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp

要するに行頭に#マークを入れ、コメントアウトします。

ここまで設定が完了したら、再起動してください。いよいよGUIでログインします。

GUIログイン

ログインはUbuntuと同じくLightDMで行います。ユーザーの名称が表示されている右側にあるUbuntuのロゴをクリックするとログインするセッションを選択できます。ここでは⁠GNOME Flashback (Metacity)⁠を選択します。

ログイン後、日本語を入力できるようにするために端末を起動して次のコマンドを実行してください。

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'jp'), ('ibus', 'mozc-jp')]"

見てのとおりこれは日本語キーボードを使用している場合です。それ以外の場合は適宜変更してください。

これで最低限使用できる環境が揃いましたが、強くお勧めしたいのは新たにユーザーを作成することです[3]⁠。⁠システム設定][ユーザーアカウント]で新たに作成することができますので、ここで常用するアカウントを作成してください。新しいユーザーでひととおり動作を確認したあとは、⁠ubuntu⁠ユーザーは削除することもお勧めします。

クロスビルド

ここで一旦母艦のUbuntuに戻ってきます。クロスビルドというのは異なるアーキテクチャのバイナリをビルドすることです。こう聞くと難しい感じがしますが、とても簡単にできます。ここでビルドするxrdpはUbuntu 14.10にある0.6.1に日本語キーボード対応パッチを当てています。適当なフォルダーに移動し、次のコマンドを実行してください。たったこれだけでビルドが完了します。

$ sudo apt-get install qemu-user-static pbuilder devscripts
$ dget -ud https://launchpad.net/~ikuya-fruitsbasket/+archive/ubuntu/xrdp/+files/xrdp_0.6.1-2ubuntu1~ppa1.dsc
$ MIRRORSITE=http://jp.archive.ubuntu.com/ports/ pbuilder-dist trusty armhf create
$ MIRRORSITE=http://jp.archive.ubuntu.com/ports/ pbuilder-dist trusty armhf build xrdp_0.6.1-2ubuntu1~ppa1.dsc

生成したパッケージは~/pbuilder/trusty-armhf_result/xrdp_0.6.1-2ubuntu1ppa1_armhf.debにありますので、これを何らかの方法でRaspberry Pi 2に転送してください。scpを使うのが最も簡単ですが、Raspberry Pi 2をシャットダウンしてmicroSDHCカードを引き抜き、母艦で認識させてホームフォルダーにコピーという荒業も使えます。

インストールをコマンドで行う場合は、次のとおりです。

$ sudo dpkg -i xrdp_0.6.1-2ubuntu1~ppa1_armhf.deb

xrdpを使用する

xrdpを真面目に使用する場合は、専用のユーザーを作ると良いです。ログインしているセッションそのままをxrdpで転送することができないため、単一のユーザーの場合、例えばFirefoxなどロックするアプリケーションだと、双方で起動することができません。

また、インプットメソッドを使用する場合[4]は、/etc/xrdp/startwm.shを次のように書き換えてください。

#!/bin/sh

if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi

echo "gnome-session --session=gnome-fallback --disable-acceleration-check">~/.xsession
. /etc/X11/Xsession

新しいユーザーを作成した場合、そのユーザーでも

$ gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'jp'), ('ibus', 'mozc-jp')]"

を実行すれば、普通に日本語入力も行えるはずです。なお、今回FcitxではなくIBusを使用したのは、⁠おそらく)このバグのためにFcitxだと起動しないからです[5]⁠。

おすすめ記事

記事・ニュース一覧