先週に引き続き、$99の超小型コンピューター、SheevaPlugの使い方を見ていきましょう。今週紹介する作業を終えると、「sshでログインして日常的に利用できる」状態になります。
Ubuntuファイルシステムのインストール
SheevaPlugでUbuntuを利用するには、Ubuntuの普通のインストール方法とは異なる手法でインストールを行う必要があります。具体的には、「前回紹介したNFS Root環境を用いて、NANDに直接JFFS2形式のディスクイメージを書き込む」という手順を踏みます[1]。
NFS Rootでの起動
前回の手順でNFS Root環境をセットアップし、uBootに「boot」コマンドを投入すると、以下のような形でrootプロンプトを得ることができるはずです[2]。
Ubuntu(ubuntu-9.0.5.Release.jffs2)の書き込み
前回設定したNFSサーバー上に、uImageファイルとルートファイルシステムを配置します。以下は「母艦」側で行う操作です。
まずuImageから準備しましょう。uImageファイルはtftpからのブートに用いたものと同じもの(uImage.sheeva.040309)を用います。コマンドの実行例は、前回同様にNFS領域として「/extra/sheevaplug」を利用していることを仮定しています[3]。
次にルートファイルシステムです。SheevaPlug Software & Design Informationにある「File System」アーカイブをダウンロードしてください。展開すると、ルートファイルシステムのイメージファイル「ubuntu-9.0.5.Release.jffs2」が得られますので、これもNFS Root上に配置します。
母艦側でここまでの操作が完了したら、SheevaPlugのプロンプトで以下の操作を行います。
まず、uImageファイルとJFFS2ファイルが存在することを確認し、「No such file or directory」などといった表示が出ないことを確認してください。
ファイルの存在が確認できたら、次の操作でmtdデバイスの一覧を確認します。mtd0・mtd1・mtd2の3つの領域に分かれいて、mtd1がuImage、mtd2がrootfsとなっているはずです。
確認が済んだら、まずflash_eraseallコマンドでNANDフラッシュの初期化を行ってから、uImageとルートファイルシステムを書き込みます。
- uImageの書き込み
- ルートファイルシステムの書き込み
さらに、ルートファイルシステムが正しく書き込めたかどうか確認してみましょう。マウントポイントとして/mnt1を作成し、そこに先ほど書き込んだ/dev/mtd2をマウントしてみます。JFFS2はマウント時にファイルシステム全体を走査するため、10~20秒程度の待ち時間があるはずです。
問題なくマウントできることを確認したら、この領域をアンマウントし、NFS Root環境を終了します。これでNAND領域へのUbuntuのインストールは完了です。
NANDからのブート
ここまででNAND領域にカーネル(uImage)とルートファイルシステムを導入できたので、あとはNANDからの起動を行うだけです。……ですが、その前に、uBootのアップデートを行っておきましょう。
uBootのアップデート
SheevaPlugのNANDに格納されたuBootは、本体の出荷時期によっていくつかのバージョンがあるようです。最新版は4月9日版で、uBootの起動時に以下のような出力が得られるものです。これ以外に、4月2日版・3月19日版が存在するようです。これらの古いuBootにはいくつかの問題がありますので、お使いのものが該当する場合はアップデートを行ってください[4]。
アップデートのために、まず「U-Boot」アーカイブをダウンロードして、母艦のtftp領域に「u-boot-rd88f6281Sheevaplug_400db_nand.bin」を配置します。
NFS Rootから起動するように設定したSheevaPlug[5]のuBoot上で、以下のコマンドを実行します。確認プロンプトが表示されますので「y」で答えてください。
uBootがアップデートされると、直前に設定した各種変数の値(saveenvで保存した値)は失われます。新しいuBootが反映されるか確認するため、念のため一度筐体の電源を抜き、再起動しておいた方がよいでしょう。
NANDからの起動
Ubuntuのインストールが完了し、uBootのアップデートも完了したら、uBootに次のように入力し、NANDにあるuImageから起動するように指定します。
あとは、「boot」を入力すれば、Ubuntuが起動するはずです[6]。コンソールにログインプロンプトが表示されたら(起動しきるまでにそれなりの時間がかかりますので、じっくり待ってください)、ユーザー名「root」、パスワードに「nosoup4u」を入力することでログインできるはずです。
インストール後の初期設定
ここまでで(あるいは、ロットによっては出荷時から)Ubuntuのファイルシステムを導入し、正しくシステムが起動する状態になっています。この状態のSheevaPlugは、ほぼ通常のUbuntu Serverと同じ手順で扱える状態です。が、ルートファイルシステムとして利用できる容量が少ないことと、(開発者キットなので)設定がこなれていないことから、日常的な操作を行うにはさらに設定を行う必要があります。
ここからは、初期設定の手順を紹介します。
時計合わせ・タイムゾーンの設定
設定の最初に、時刻合わせを行いましょう。SheevaPlugの出荷時点では内蔵クロックに2009/01で始まる日付が投入されており、日付の再設定を行うまでは日時がズレたままになってしまうはずです[7]。
時計合わせのための設定は、二段階に分けて行います。はじめに、uBoot側でdateコマンドを用い、RTCの日付を大まかに合わせます。
dateコマンドのフォーマットは、「MMDDhhmmyy」です。たとえば、2009年5月2日 12:34であれば、「0502123409」となります。ただし、ここで設定する時刻は、UTCにしておく方が無難です。日本時間から9時間引いた値をセットしてください。実際の時間が2009年5月2日 12:34ならUTCでは03:34ですので、セットすべきは「0502033409」です。ここでセットする時刻は、「大まかなもの」(日常生活で支障のない程度に「合っている」時計の時刻)で構いません。
この状態でSheevaPlugをブートし、Ubuntu上でNTPパッケージを導入し、ntpqコマンドで動作を確認します。
これによりntpdが起動時に実行され、「きちんとした」時刻がセットされるようになります。ただしこのままではUTCのまま(日本時間から9時間ずれたまま)ですので、以下のコマンドでタイムゾーンを日本にセットしてください。
メニューが表示されますので、Asia => Tokyo と選択することで、タイムゾーンが日本にセットされます。例のように、「Current default timezone: 'Asia/Tokyo'」が出力されることを確認してください。
rootパスワードの変更
SheevaPlugのデフォルトファイルシステムのrootパスワードは、前述の通り「nosoup4u」です。このまま利用するのは問題ですので、パスワードを変更しておいてください。
初期ユーザーの作成
デフォルトではrootユーザーしか存在しないので、adduserコマンドで新規にユーザーを作成してください。以下では「test」というユーザーを作成していますが、利用したいユーザー名に置き換えて実行してください。
また、このユーザーではsudoを実行できませんので、vigrコマンドで作成したユーザーを"sudo"ユーザーグループに追加し、さらにvisudoコマンドを実行し、sudoersファイルに「%sudo ALL=(ALL) ALL」を追加してください。これで追加したユーザーでsudoを利用できるはずです。
resolv.confの変更
SeehvaPlugのデフォルトでは、自身をDNSレゾルバとして利用するようになっています。これは効率が良くありませんので、お使いの環境のDNSサーバーを指定するように設定しておきましょう。/etc/resolv.confを編集し、「namaserver 192.168.254.1」などと指定してください。この例はDNSサーバーが192.168.254.1に存在することを仮定しています。
IPアドレスの変更
SheevaPlugは、デフォルトではDHCPクライアントとして設定されています。サーバー的に利用するにはこれも望ましいものではありませんので、固定IPアドレス設定を行いましょう。/etc/network/interfacesのうち、以下の部分がDHCPクライアントとしての設定です。
たとえば以下のように設定します。この設定は、SheevaPlugのIPアドレスを192.168.254.20、デフォルトゲートウェイを192.168.254.1と仮定しています。
ホスト名と/etc/hostsの変更
デフォルトでは、ホスト名が"debian"になっています。/etc/hostnameを修正し、別の名前にした方が混乱が少ないでしょう(少なくとも"ubuntu"にした方が安全でしょう)。
また、デフォルトの/etc/hostsは、「自ホスト名が"debian"になっている」「ports.ubuntu.comが91.189.88.36に決め打ちされている」(注7)等、幾つかの問題があります。/etc/hostsでも自ホスト名を変更し、「91.189.88.36 ports.ubuntu.com」行はコメントアウトした方がよいでしょう。
ロケールの生成
SheevaPlug用のルートファイルシステムには、限られたパッケージしか導入されていません。また、ロケールも最小限しか設定されていません。ソフトウェアの利用上、問題になる可能性があるため、以下のようにしてja_JP.UTF-8ロケールを生成しておく方がよいでしょう。