2010年11月16日
KZM-A9-DualボードでARM Ubuntu 10.10 を動かす(ただし最小システム) rootstock使用。
準備
ARM Ubuntu 10.10はPCのUbuntu 10.10から作成します。Desktop版でなくてサーバ版で十分です。私はVMWareの仮想マシンでUbuntu 10.10のサーバ版を入れました。
以下のコマンドでアップデートしてください。
$ sudo apt-get update $ sudo apt-get upgrade
ARMのUbuntuのルートファイルシステムの作成
以前にも紹介しましたが、rootstockという便利なスクリプトでARM Ubuntuのルートファイルシステムを簡単に作成することができます。
以下は、ホスト名 arm-maverick、ログインアカウント user
そのパスワードが user の場合です。
すぐにsshでログインできるように --seed openssh-serverを指定しておくとよいでしょう。
$ sudo apt-get install rootstock $ time sudo rootstock --fqdn arm-maverick --login user --password user --seed openssh-server real 12m2.456s user 4m2.330s sys 1m16.630s
armel-rootfs-yyyymmddhhmm.tgz が出来上がります。(yyyymmddhhmmはそのときの時刻)
NFSサーバにディレクトリを作ってルートファイルシステムを展開
NFSサーバが192.168.xx.xxで、NFSのディレクトリが /export の場合
$ sudo mount 192.168.xx.xx:/export /mnt $ mkdir -p /mnt/ubuntu_maverick_armel/root $ sudo tar xpvf armel-rootfs-201011141315.tgz -C /mnt/ubuntu_maverick_armel/root
getty用のconfファイルの作成
このままだとsshでログインはできるのですが、シリアルコンソールにloginプロンプトが出ません。シリアルコンソールでgettyを起動するためのconfファイルを作成します。NFSサーバ側で先にこのファイルを作ってしまうと楽です。
コンソールが /dev/ttyS1 の時
/etc/init/tty1.conf をttyS1.confにコピーして、その中のtty1をttyS1に置換。ボーレイトも適切に設定します。
ターゲットの/etc/init/ttyS1.conf
# ttyS1 - getty # # This service maintains a getty on ttyS1 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[2345] stop on runlevel [!2345] respawn exec /sbin/getty -8 115200 ttyS1
2011.11.22 追記
/etc/init/ttyS1.conf の作成はrootstockに --serial ttyS1 をつけると自動でやってくれることを発見しました。つまり、rootstockコマンドを以下のようにして使ってください。
$ sudo rootstock --fqdn arm-ubuntu --login user --password user --seed openssh-server --serial ttyS1
カーネルパラメータでルートファイルシステムをNFSに指定
以下をカーネルパラメータに追加します。
root=/dev/nfs nfsroot=192.168.xx.xx:/export/ubuntu_maverick_armel/root ip=dhcp
私はPARTNER-Jetで直接ターゲットのRAM上にカーネルを転送し、PARTNERのコマンドでカーネルパラメータを指定しています。これをマクロコマンドにして、ルートファイルシステムごとに複数のマクロコマンドを使い分けています。(android用、debian用、ubuntu用などなど)
以上です。これで最小のARM Ubuntu 10.10が起動するので、後は欲しいファイルをapt-get install します。gccやmakeなど一通り入れるときには以下のようにすると一発で入るので便利です。
$ sudo apt-get install build-essential
追記(2011.3.29)
会社のネットワーク環境で外部にアクセスする場合にProxyサーバを経由しなければならないことがあります。この場合はホストのUbuntuでProxyサーバの設定をしてからrootstockを実行してください。
このページが参考になります。