開発環境の準備

最終更新: 2011/02/10 20:07:28 [| ]  最終更新: 2011/02/10 20:07:28

はじめに

ここでは開発環境としてのUbuntuを導入します。

別掲のディスクイメージ一式さえmini2440にいれて構築してしまえば、その上で全てを開発することも可能ですが、そのイメージを読み書きしたり、場合によってはクロスコンパイルしたりするのに、何かひとつLinuxの環境があった方が便利です。
OpenRTMのテストをしたりするのにも便利なので、一つ用意します。

すでにあればそれで十分だと思いますが、案外ぐちゃぐちゃにしてしまうかもしれないので、専用環境を一つ作るのも良いかもしれません。

かといって、PCを別に用意したりHDDのパーティションを切り直したりすると面倒なので、VMware Playerをつかいます。必要なものは適当な、そこそこパワーのあるWindowsマシン(いまどきの Core-iとか積んでいれば楽勝、マルチコアのが便利)と、数十Gの空きのあるHDDです。


VMware Playerのインストール

VMwareは昔からしれた、仮想環境ソフトで、VMwareそのものは売り物、その後VMwareでつくったイメージを実行だけ出来る(といっても、普通に環境としてつかえる)VMware Playerがでました。
このPlayerを小細工してPlayerだけで仮想環境をただでインストールして使う、という裏技も一部で有名でしたが、なぜか、VMware Player 3.0からはそれ自体で仮想環境を作れるようになっています。
ので、これを使います。
しかも、手軽にサスペンドでき、開発途中のちらかした状態でサスペンドして止めておくことができます。 ただ、ubuntuは手元の環境では時間が変に進む癖が見うけられました。再スタート時には時間を確認しないと、makeなどの日付関係がめちゃくちゃになります。

入手先:
無償ダウンロード

適当に自環境(Win xp,vista,7/32,64bit)にあったものダウンロードしてインストールします(※適当にOKボタンを押して入れました)。 なお、著者の現在の環境はWindows 7 Home Premium 64bit 英語版、DELLなCore i3マシン、です。


Ubuntuインストール

イメージの取得

まず、インストールに必要なイメージをダウンロードします。

入手先: ubuntu Japanese Team
Ubuntu
ここから適宜ダウンロードをたどっていけばいいでしょう。
Download|Ubuntu
32bitと64bitの選択がありますが、32bitを選ぶと無難だと思われます。 これはCDサイズのイメージで、必要なものはあとでネットからばんばん追加インストールする思想のようです。
なお、母環境が64bitのWindowsであっても、32bit版のインストールには問題ありません。
VMwareにインストールする場合は、イメージをCD-Rなどに焼く必要は無く、ただディスクに転がしておきます。

VMwareへのインストール

VMwareにubuntuをインストールします。

要点:

手順:
  1. VMwarePlayer起動
  2. Create New Virtual Machine (英語版だから英語表記?)
  3. 自動インストールするなら、Wizardで、「Installer disc image file」「ダウンロードしたubuntu ISOイメージを指定」。
    (ubuntu-10.04-desktop-i386.iso)
    適宜それらしい項目を入れると自動的にPlayerが起動してインストールが進む。 ただし、 これをやったら「ログインできないubuntu」が出来た ので、ここではパス。
  4. 「WizardでI will install the operating system later」を選択。
  5. ゲストOSはLinux、Ubuntuを選択。
  6. 仮想マシン名を適宜設定、置き場所には適当なディレクトリを指定(この中にディスクイメージを始めいくつかのファイル、大きいファイルができるので空き容量に注意)。
    (VMwareを他にもつかうなら<たとえばOpenRTMのマルチPC環境を模擬したい>、VMware専用のフォルダをどこかにつくっておくべき)
  7. 最大ディスクサイズを指定。デフォルトの20Gでたぶん問題なし。 いまどきのWindowsなら2Gにイメージを分割する必要もたぶんなし(ファイルシステムによって2Gの壁があるため、移動させたりするときは問題になりうる。が、このイメージだけ移すというケースはさほどないと思われ)。
  8. 確認画面で「Customize Hardware」ボタン。
    変更点:
    メモリを1Gにする(母環境が3,4G積んでいること前提)。
    ネットワークアダプタをBridged(ブリッジ)にする 。標準のNATではなく。
    ※NATにすると、母環境Windowsがブロードバンドルータと同じような扱いになって、外からこのUbuntuにアクセスできなくなると思われる。ブリッジにすると、このubuntu環境が直接LANの口を持っているのと同じように振る舞うので、そのアドレスに対して、外から接続可能になる。DHCP環境の場合は、母環境の他にIPアドレスを要求する。
  9. Finishすると環境ができる。
  10. 出来た環境を試しに起動。選んで、PlayVirtualMachine。
    結果的にOperating System Not Foundする。
    メニューでVM→Power→PowerOffでVmwareの起動画面に戻る。
  11. ISOイメージを接続する。
    Edit virtual machine settingを選択。イメージ作成時のハード設定と同じような画面がでる。
    CD/DVDを選択。Use ISO image fileを選択し、ダウンロードしたイメージ(ubuntu-10.04-desktop-i386.iso)を選択。
  12. イメージ再起動。PlayVirtualMachine。問題なければ、これでubuntuが何か起動して、インストールモードになる。
  13. 適当に言語を選んでInstall Ubuntu。開発環境としては、英語版が無難だとおもう。
    時計の設定、ディスクの設定(VMwareで起動している分には「全部」で問題ないはず)、一人目のユーザ(その他の環境と合わせておいた方が無難)、ユーザ名、パスワード、コンピュータ名を適宜設定。 なお、あとで変えるのが面倒なので適当にはしない。
  14. Advanceとか気にせず、ただインストール実行。
    しばらく待つ。途中なにかをダウンロードするので、ネットワーク接続は必要。
  15. しばらくするとInstalation Complete / Restartなダイアログがでるので再起動する。
  16. たぶん、先ほど入力した名前を含むログイン画面がでるので、ひとまずインストール終了。
    画面右下の電源っぽいアイコンでシャットダウンを選択。→VMwarePlayerの画面に戻る。
  17. ISOイメージはもういらないので、セッティングでPhysicalDriveに戻しておく。
  18. もう一度起動。以下、VMwareの追加オプションをインストールする。
  19. インストール時に設定したユーザでログインする。
    それらしいデスクトップ画面になる。
  20. Update Managerが出てきたら任せてInstallにする。そのとき、パスワードを求められたら、インストール時設定ID(いまログインしているID)のパスワードをいれる。
    基本的に管理者権限が必要なものは、sudoを使用していて、インストール時アカウントがsudoできる権限を持っている。 ある意味、Windowsの第一アカウントがAdministrator互換なのと似たような感じ。
    途中で「Continue without installing GRUB?」出る可能性有り。この場合はチェックを入れてForwardボタンを押さないと進まない。かつ、インストール後、Restartが必要。
  21. ターミナルを開く。上部メニューのApplication→Accessaries→Terminal。
  22. rootに変わる。su+rootのパスワードがポピュラーだが、rootのパスワードは第一ユーザのパスワードと一緒ではない。ので、sudo をつかって /bin/bashを起動。
    kumagai@--:~$ sudo /bin/bash
    [sudo] password for kumagai: [パスワード入力]
    root@--:~#
  23. VMwareの便利セットをいれる。
    VMware側のメニューVM→Install VMware Tools を選択。
    専用のCDが挿入された感じになって、多分、ファイルブラウザが開く。デスクトップにはCDのアイコン。
    VMwareTool〜.tar.gzをどこかにコピーする。例:アイコン右→Copy to→Home。
    なお、デスクトップのディレクトリパスは 「~/Desktop/」。
  24. 展開、インストールする。先ほどのrootにしたターミナルで、
    # ls
    いろいろ VMwareTools-8.1.4-227600.tar.gz
    # tar xvzof VM[TABキー]
    vmware-tools-distrib/
    ざーーーーー
    # cd vmware-tools-distrib/
    # ls
    bin doc etc FILES INSTALL installer lib vmware-install.pl
    # less INSTALL (必要なら)
    # ./vmware-install.pl
    確認があるが基本EnterでOKなはず
    ファイルのコピーの他、カーネルモジュールのコンパイルなどもあって少しかかるが自動で終わる。
    ...... Ejected device ....
    # 
    この時点でVMメニューを見ると、一番下が「Reinstall VMware Tools」に変わっている。
  25. 再起動して動作を確認する。
    変わること:
  26. 念のため、ターミナルで ifconfig してみると、IPアドレスはWindowsがつながっているのと同じところにDHCPした感じになっている。Firefoxなども動くはず。
  27. 以上で、ひとまず終了。
以上で、概ね、この先の開発をする環境の基礎ができます。


SDカードリーダライタの確保

mini2440のファイルシステムを載せるSDカードの読み書きをするため、Ubuntuからアクセスできるリーダライタが必要です。逆にこれが確保できないと、その先に進めない必須項目です。

おそらく単純なUSB接続のリーダライタがあれば十分なはずです。
用意:

2GのSDカードはインストールにも使うので、確保しておいた方が良いでしょう(1GでもOKですが&ここのチェックだけならサイズは問わず)。

まず、VMwareのUbuntuに認識させます。

  1. 母環境のWindowsに接続する。最近のPCだと最初から内蔵していたりする(いま使っているDELLがそう)。
  2. デバイスマネージャを表示し、ディスクのところを表示させておく。(初回のみで十分)
  3. VMwareを起動する。(起動してあっても大丈夫と思いうが)
  4. Ubuntuの動いている状態でVMwareメニューの VM→Removable Devicesの下の方に、それらしいデバイスがないかを探す。
    (DELL内蔵、外付けしたIntel印のリーダライタとも、○○USB Mass Storage Device と出た。なお、他に外付けHDDなどを使用している場合は、予め取り外しておくことを推奨。間違って操作しないように)
  5. その項目を選択すると、「Connect(Disconnect from host)」という項目があるので選択する。
    すると開いておいたデバイスマネージャから、デバイスが消える(VMware側に確保された)。
  6. 母環境に返す場合は、「Disconnect(Connect to host)」。
  7. VMware側に繋いだ状態で、dmesgコマンドをターミナルで実行すると、
    sd 6:0:0:0: [sdb] Attached SCSI removal disk
    
    のような出力が見られる。
  8. (念のためまっさらの)SDカードをリーダライタに挿入する。
    おそらく、デスクトップにそれらしいアイコンが出るとともに、File Browserが開く。
  9. dmesgコマンドを実行すると sd 6:0:0:0: [sdb] 3842048 512-byte logical blocks: (1.93GB/1.83GiB) : sdb: sdb1 のような出力が残っている(sdのあとは適宜アルファベット、以後読み替え。サイズもカード次第)。
  10. 直接アクセス出来ることを確認する。
    $ sudo fdisk /dev/sdb  ※注意 直上で確認したsd? 
    パスワード
    WARNING 気にしない
    Command (m for help): [pを入力]
    Disk /dev/sdb: 1967 MB, 1967128576 bytes   ※同じ2GのSDでもメーカに
    57 heads, 56 sectors/track. 1203 cylinders ※よってここの数値は違うことあり
      :
       Device Boot  Start    End    Blocks  Id  System
    /dev/sdb1           1   1204   1920955+  6  FAT16
    
    Command: [qを入力]
    
    というような結果が得られればOK。だいたい、SDカードは単一パーティションFAT16などでフォーマットされている。
  11. 抜くときは、デスクトップのアイコンで、右クリックメニュー→Eject。アイコン、ブラウザともに消えれば問題なし。
以上が出来ることを確認しておく必要があります。 逆に、出来ない場合は、別のリーダライタを試してみてください。

必要なもののインストール

開発環境に必要なものをインストールします。
Ubuntuが(初期インストールしていないけど)提供しているものはパッケージとして apt-get コマンドでインストールできます。一方、Ubuntu本来のものでないものは、種々のインストールが必要です。

パッケージのインストール

基本的に、apt-getコマンドを使います。
例:

$ emacs
The program 'emacs' can be found in the following packages:
* emacs23
*   :
Try sudo apt-get install 
$ sudo apt-get install emacs23
[sudo] password for kumagai: [パスワード] 
※同じ端末での2回目以降は、聞かれないことが多い。
ざーーー
Do you want to continue [Y/n] :Enter
ざーーー(ダウンロードおよびインストールスクリプト)
$ emacs   今度は起動する
なお、パッケージのインストールは自動的に依存関係をチェックして、「他にも必要なのでディスクをさらに食うけどいいですか?」質問が頻繁にでます。Enterで進みます。
なお、すでに入っているときはその旨表示しておわりです。

以下、途中で多分必要になるパッケージ

$ sudo apt-get install git-core
$ sudo apt-get install debootstrap
$ sudo apt-get install openssh-server
$ sudo apt-get install libncurse5-dev  (カーネルconfigするとき)

ダウンロードしておくべきファイル

以下のファイルが必要です。 Friendry ARM:Downloads:

Windows用のファイルは適宜、Windows側でインストールが必要です。 クロスコンパイラはUbuntu上でダウンロードするか、Windowsでダウンロードの上、Ubuntu側にコピーして下さい。

クロスコンパイラのインストール

まず、上記 arm-linux-gcc-4.3.2.tgz を確保します。 これを「rootで」「/」に展開します。
基本的に/usr/local/arm/4.3.2/ 以下にのみ展開されるようなので、環境への影響は少ないと思いますが、すでにクロス開発環境を持っている場合は上書きに要注意です。

$ tar tvzof arm-linux-gcc-4.3.2.tgz
....  usr/local/arm/4.3.2/ ...
$ cd /
$ sudo tar xvzopf [置き場所パス]/arm-linux-gcc-4.3.2.tgz
[sudo] password for ユーザ
$ ls /usr/local/arm/4.3.2/
arm-none-linux-gnueabi  bin  lib  libexec  share
$

次にパスを通します。~/.bashrcに適宜

export PATH=$PATH:/usr/loca/arm/4.3.2/bin
を追加して、展開したbinにパスを通します。

確認は、新しく端末を開き直して、

$ arm-linux-gcc
arm-none-linux-gnueabi-gcc: no input files
$
と、バイナリが実行できればいいでしょう。 なお、arm-linux-gcc他は gnueabi へのシンボリックリンクになっています。


VMware使用時のOpenRTMの注意点

VMwareは開発環境としてのみならず、RTMの実験環境としても便利です。
RTMは複数のコンピュータの上で稼働するコンポーネントを、複数のネームサーバから引っ張ってきて、RTCLink(SystemEditor)上でつないで動かすことができますが、その実験を1台のPCの上で済ますことができます。
ただし、VMwareをインストールしたWindowsには罠があります。

まず一点目。OpenRTMはその注意点として、
「複数のNIC(ネットワーク口)がある場合は、コンポーネントでcorba.endpoint: を使って使用アドレスを強制する」
ことが必要であるとされています。 内部で使う分には動きそうでも、外部と接続しようとするとつながらないということが起こりえます。
(ネームサーバはIFがあるだけポートを開くようで、あまり問題にならない)。

一般的なPCの環境ではNICが複数ある例はさほどなく(ノートPCで有線口があると持っていたりしますが、だいたいどちらも同じLANにつながるので問題になりにくい)、普段は意識する必要はあまりなさそうです。

ところが、WMwareをインストールしたあと、Windowsのネットワーク接続を見ると、vmnet1,vmnet8といった、内部接続用の口が自動的にできます。 おそらく、ブリッジではない、NAT型の接続をする場合などに使うものだと思うのですが、ipconfigするとちゃんとIPアドレスをもっているので、「複数のNICがある」状態になってしまっています。

そのため、WMwareをインストールしたPCで、RTコンポーネントを動かす場合、rtc.confで corba.endpoint: でアドレスを指定することは必須です。
一見、ネームサーバにも表示が出ますし、同一PC内でのコンポーネント接続はできるので問題なさそうですが、外部のコンポーネントと接続すると極めて不可解な状態(SystemEditorから制御できるのに線がつながらない)になるので、要注意です。

なお、このvmnetは使わないし、といって強制削除してもすぐにVMwareが復活させてしまいました。


環境のTIPS



熊谷正朗 [→連絡]
東北学院大学 工学部 機械知能工学科 RDE
[| ]