突然消失するかもしれないブログ

”とつきえブログ”

XenARM事始め

2008年6月にSamsung社によってARM用のXenのソースコードが公開されたというのでひとまずソースコードを手に入れるところから始めてみます。

○Xen on ARMの公式HP
http://wiki.xensource.com/xenwiki/XenARM

こちらからユーザーズマニュアルをゲットしてきます。

ユーザーズマニュアルによると、

  1. ARM版のXen上で動作する、ARM版の準仮想化対応のLinuxカーネルはまだ存在しないはずなので、現バージョンのXenARMで試せるのは、mini-osというLinuxではない簡易OSが起動できるようです。
  2. ターゲットボードは、Freescale i.MX21ADSボードらしいので、玄箱Proで動かそうとしてもそのままでは動きそうにありません。

とりあえず、今回は、玄箱Pro上でビルドすることを目標として作業を進めます。

○ソースコードの入手方法は、Wikiに書いてあります。

How To Get, Build and Run Secure Xen on ARM

Our code has been merged upstream into xen-unstable.hg. However, there will always be work in the ARM-specific tree that hasn’t been merged, so most users should stick with the Mercurial trees listed here:

cvsやsubversion、gitなら知っているのですが、Mercurialというソースコードの管理システムを使用しているようです。

またクロスコンパイル環境を想定しているようなので、玄箱Pro上ならセルフコンパイルができるはずです。

ですので、Debianなら、以下を実行して、まず、Mercurialのパッケージをインストールします。他にも足りないものがあれば適宜必要なパッケージをインストールします。

apt-get install mercurial
apt-get install bison

その後、適当なフォルダを掘って、そこにリポジトリのcloneを作成します。

hg clone http://xenbits.xensource.com/ext/arm/xen-unstable.hg

これで、リポジトリのcloneが作成されて、ソースコード一式が取得されます。

ただし、x86環境で事前にビルドしたと思われるオブジェクト(.o)ファイルが含まれているので、ビルドする前にオブジェクトを削除します。(make cleanでは削除されない?)

makeを実行すれば、削除したオブジェクト(.o)が自動的に生成されるので心配いりません。

find . –name “*.o” –print –exec rm {} \;

玄箱Pro上でセルフコンパイルをするので、Config.mkを編集します。デフォルトではクロスコンパイラを呼び出すようになっているので、以下のようにコメントアウトして、セルフコンパイラを呼び出すように指定します。

#
# Cross Tool chain configuration
#
#CROSS_COMPILE  = /opt/arm-linux-4.1.1/bin/arm-linux-
#CROSS_COMPILE  = /opt/arm-linux-3.4.4/bin/arm-linux-

つぎに、コンフィグを実行します。

とりあえず、設定は全てデフォルトにして、実行を終了します。これでコンフィグファイルが生成されます。

make menuconfig

これで、XenARMのビルドを実行します。

make

ビルド時間は玄箱Proで10分かからず、コンパイルエラーも出ませんでした。

多分だめでしょうけど、起動実験はまた明日。u-bootから起動するようです。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。