ARM版Ubuntu Serverのインストールも可能! 小さくてもパワフル、OpenBlocks AX3活用レシピ 4ページ

ARM版Ubuntu Serverを導入してみる

 最近ではその消費電力の低さからARM CPUが注目されており、サーバーでの利用も実験的レベルではあるが進んでいる。これを受けて、Debian GNU/Linux以外でもARMアーキテクチャに対応するLinuxディストリビューションが登場している。その1つがUbuntuだ。Ubuntuでは現在、いくつかのARM系CPU搭載ボードPCに向けたLinuxカーネルおよびinitrdイメージファイルが公開されており、OpenBlocks AX3が採用しているARMADA XP向けのものも用意されている。

 Ubuntuは近年ユーザーを増やしており、Debian GNU/Linuxよりもこちらを使いたい、という人もいるのではないだろうか。そこで、以下ではOpenBlocks AX3にUbuntu Serverをインストールする手順を紹介する。なお、OpenBlocks AX3でのUbuntu Serverの利用はぷらっとホームの正式サポート外となるため注意してほしい。

TFTPサーバーの設定

 ARM版Ubuntu Serverでは、TFTPを使用したネットワークブートを使ってインストーラを起動する。OpenBlocks AX3のブートローダであるU-Bootにはデフォルトでネットワークブート機能が用意されているので、これを利用する。

図20 OpenBlocks AX3のU-Boot
図20 OpenBlocks AX3のU-Boot

 ネットワークブートを行うには、まずTFTPサーバーを用意する必要がある。TFTPサーバーの設定はここでは詳しくは説明しないが、たとえばCent OSでは次のような手順でTFTPサーバーをインストールできる。

# yum install tftp-server
# /sbin/chkconfig tftp on
# /sbin/service xinetd restart

 次に、Ubuntu wikiのインストール方法解説ページからリンクをたどり、ARMADA XP用のカーネルイメージ(uImageファイル)とinitrdイメージ(uInitrdファイル)をダウンロードする。UbuntuのWebサイトから直接ダウンロードしても構わない。

 ダウンロードした2つのファイルをTFTPサーバーの公開ディレクトリにコピーし、TFTPクライアントからファイルをダウンロードできるように設定する。たとえば公開ディレクトリが「/var/lib/tftpboot/」(CentOSでデフォルトの公開ディレクトリ)である場合、次のようにする。

# cp uImage uInitrd /var/lib/tftpboot/

OpenBlocks AX3でネットブートを行う

 TFTPサーバーの準備ができたら、シリアルコンソールに接続した状態でOpenBlocks AX3を起動し、「Hit any key to stop autoboot:」というメッセージが表示されたところで適当なキーを押す。

BootROM 1.15
Booting from NOR flash
DDR3 Training Sequence - DEBUG - 1
DDR3 Training Sequence - DEBUG - 2
 :
 :
USB 0: Host Mode
USB 1: Host Mode
USB 2: Device Mode
Power Off External Interface
Modules Detected:
MMC:   MRVL_MMC: 0
Net:   egiga0 [PRIME], egiga1, egiga2, egiga3
Hit any key to stop autoboot:  0  ←ここで何かキーを押す
Marvell>>

 すると、「Mervell>>」というプロンプトが表示され、ブートシェルを利用できるようになる。続いて「dhcp」コマンドを実行し、DHCP経由でIPアドレスを取得する。

Marvell>> dhcp
BOOTP broadcast 1
*** Unhandled DHCP Option in OFFER/ACK: 44
*** Unhandled DHCP Option in OFFER/ACK: 44
DHCP client bound to address 172.17.4.99

 「tftpboot 0x2000000 <TFTPサーバーのIPアドレス>:/uImage」コマンドを実行し、カーネルイメージをロードする。たとえばTFTPサーバーのIPアドレスが「172.17.4.79」だった場合、次のようになる。

Marvell>> tftpboot 0x2000000 172.17.4.79:/uImage
Using egiga0 device
TFTP from server 172.17.4.79; our IP address is 172.17.4.99
Filename '/uImage'.
Load address: 0x2000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################
done
Bytes transferred = 5194176 (4f41c0 hex)

 また、同様にしてinitrdイメージもロードする。「tftpboot」のあとに続くアドレス(イメージをロードするアドレス)が先と異なるので注意してほしい。

Marvell>> tftpboot 0x1100000 172.17.4.79:/uInitrd
Using egiga0 device
TFTP from server 172.17.4.79; our IP address is 172.17.4.99
Filename '/uInitrd'.
Load address: 0x1100000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###########
done
Bytes transferred = 4930820 (4b3d04 hex)

 カーネルのブート引数は「bootargs」変数で指定する。setenvコマンドを使って、この変数にブート引数を設定する。

Marvell>> setenv bootargs "console=ttyS0,115200 earlyprintk=ttyS0 pm_disable"

 最後にbootmコマンドでカーネルをブートする。

Marvell>> bootm 0x2000000 0x1100000

 これでUbuntu Serverのインストーラが起動するはずだ(図20)。あとは画面に従って操作を進めて行けば良い。Ubuntu Serverのインストールプロセスはx86/x86_64版Ubuntu Serverとほぼ同じだ。

図21 Ubuntu Serverのインストーラ
図21 Ubuntu Serverのインストーラ

 ディスクのパーティションについては、ディスク全体を使用する設定を選択しておけば良いだろう(図21)。

図22 ディスクのパーティションについては、ディスク全体を使用する設定を選択した
図22 ディスクのパーティションについては、ディスク全体を使用する設定を選択した

 Ubuntuではセキュリティアップデートを自動的にインストールするかどうかを指定する画面では、Canonicalが提供する監視サービス「Landscape」を選択することも可能だ(図22)。

図23 Canonicalが提供する監視サービス「Landscape」を用いた管理も設定可能だ
図23 Canonicalが提供する監視サービス「Landscape」を用いた管理も設定可能だ

 インストールが完了すると、「Finish the installation」と表示される(図23)。筆者の環境では、インストールの開始からこの画面が表示されるまで、およそ40分ほどかかっていた。

図24 インストールが完了すると、再起動が促される
図24 インストールが完了すると、再起動が促される

 インストールの完了後は、ブートシェルにアクセスしてインストールしたカーネルを起動するように設定を変更する必要がある。インストールの完了後再起動を行い、ブート画面の「Hit any key to stop autoboot:」でキーを押し、ブートシェルに再度アクセスする。プロンプトが表示されたら、次のようにコマンドを実行する。

Marvell>> setenv bootcmd "ide reset;ext2load ide 0:1 0x2000000 uImage;ext2load ide 0:1 0x1100000 uInitrd;setenv bootargs console=ttyS0,115200 earlyprintk=ttyS0 root=/dev/sda2 ro pm_disable;bootm 0x2000000 0x1100000"
Marvell>> save
Saving Environment to Flash...
. done
Un-Protected 1 sectors
. done
Un-Protected 1 sectors
Erasing Flash...
. done
Erased 1 sectors
Writing to Flash... .0.done
. done
Protected 1 sectors
. done
Protected 1 sectors
Marvell>> reset

 初めの「setenv bootcmd」行は、カーネルの読み込み手順をを指定するものだ。次に「save」コマンドを実行して設定をフラッシュROMに保存し、「reset」コマンドで再起動を行っている。

 再起動が完了すると、問題がなければシリアルコンソールにUbuntuのブート画面が表示され、ログインプロンプトが表示されるはずだ(図24)。

図25 Ubuntuのログインプロンプト
図25 Ubuntuのログインプロンプト

 ARM版Ubuntu Serverも、x86/x86_64版のUbuntu Serverと同様の手順で利用が可能だ。apt-getを使ったパッケージの更新やインストールも行える。

さまざまに活用できるOpenBlocks AX3

 OpenBlocks AX3はコンパクトかつ低消費電力ながら、さまざまに利用できる処理性能を持っているのが特徴だ。そのため、たとえばルーターとして使うにしても、VPNやWebサーバー、ファイルサーバーといった付加機能を同時に1台で運用できる。ファンレスであるため、小規模オフィスや自宅オフィスでも使いやすい。

 また、Ubuntu Serverではクラスタ/プライベートクラウド関連の機能が充実しているため、OpenBlocks AX3をクラウドのインフラとして使用するのも面白いかもしれない。OpenBlocks AX3はこれ以外にも多くの用途が考えられる、非常に柔軟なサーバーマシンであるといえよう。

ぷらっとホーム
http://www.plathome.co.jp/

OpenBlocks
http://openblocks.plathome.co.jp/