アーカイブ : 2011年 5月 15日

VirtualBoxにMeeGoをインストール

MeeGoってどんなものか知るために、VirtualBoxで動作させてみました。

VirtualBoxで動かすためには、いろいろ手順が必要なようで、

http://wiki.meego.com/MeeGo_1.0_Netbook_VirtualBox を参考にして対応しました。

1. イメージのダウンロード

MeeGoのサイトからMeeGo 1.0 for NetBook 日本語版のイメージをダウンロードします。

http://meego.jp/downloads/index.html

ダウンロードしたら、拡張子をimgからisoに変更します。

2. VirtualBox 仮想マシン作成

仮想マシンの新規作成

OS:Linux バージョン:Fedora を選択します。
新規仮想マシンの作成
新規ハードディスクを作成します。今回は、8G可変サイズのストレージを作成しました。

システム-プロセッサで、「PAE/NXを有効化」にチェックを入れておきます。

ストレージIDEコントローラにダウンロードした、MeeGoのISOイメージを設定します。

3.MeeGoのインストール

仮想マシンの電源をオンして、起動します。 grubの画面が表示されるので、「Boot and Install」選択しEnterキーを押下します。

MeeGoのインストール画面が表示されるので、インストールします。 基本的に、「日本語」を選んだあと、「次へ」をひたすらクリックするだけです。 インストールが完了したら、「閉じる」をクリックして再起動します。

[Boot from local drive]を選択したが、BOOT FAILUREとなった・・・

CDドライブから、ISOイメージを外して再起動してみると起動したが固まってしまいました。

リセットしてすぐgrubを止め、Tabし下記のように変更してシングルユーザーモードで起動してみます。

vmlinuz-2.6.33.3-11.1-netbook ro root=/dev/sda2 quiet vga=current
vmlinuz-2.6.33.3-11.1-netbook ro root=/dev/sda2 vga=current s

シングルモードで起動したので、yumで最新の状態にしてrebootしてみました。

$ yum update -y
$ reboot

reboot して、しばらく待っていると「ようこそ」の画面が起動。

キーボード、タイムゾーンなどを設定して、進んでいくと、 途中で、止まってしまいました。しばらく待っても反応がないので、 仮想マシンをリセットして、再起動しました。ネット検索していると、libglxの置き換えが必要なことがわかりました。

4.libglx.soの置き換え

再度、シングルユーザーモードで起動します。

http://wiki.meego.com/MeeGo_1.0_Netbook_VirtualBox を参考にしてlibglx.soを置き換えます。

libglx.soの置き換えのみで、MeeGoの画面が表示されました。

$ yum install wget
$ wget http://wiki.meego.com/images/Libglx.so.gz
$ gunzip Libglx.so.gz
$ cp Libglx.so /usr/lib/xorg/modules/extensions/libglx.so
$ chmod 755 /usr/lib/xorg/modules/extensions/libglx.so
$ chmod +s /usr/bin/Xorg

再起動すると、MeeGoの画面が表示されました。

beagleboardでSDカードの抜き差しを減らす

beagleboardでAndroidのイメージを変更するたびに、SDカードにイメージをコピーして
起動しなおすのが面倒なので、chrootを使ってイメージを切り替えることにチャレンジしてみました。


1. beagleboardにUbuntuを入れる

http://elinux.org/BeagleBoardUbuntu を参考にしてubuntuのイメージを作成してください。

armのイメージ作成がFedoraでは無理だったので、今回は、VirtualBox にubuntuを入れて対応しました。
ubuntuにインストールに必要なツールを入れる

$ sudo apt-get install qemu
$ sudo apt-get install uboot-mkimage
$ sudo apt-get install rootstock
$ wget http://launchpad.net/project-rootstock/trunk/0.1.99.4/+download/rootstock-0.1.99.4.tar.gz

rootstockは、apt-getでもインストールできたのでが、バグがあるみたいなので
最新のソースをwgetでダウンロードしたものを使用しました。
実際、イメージの作成途中で止まったままになりました。

rootstockをインストールに合わせて依存関係のあるツールも一緒に入れる必要があったのですが、
調べるのが面倒だったので使わないけどあえて、apt-getでもrootstockをインストールしています。
PATHをwgetで取得した方を先に通すようにして使っています。
依存関係のあるパッケージは、qemu-extra-** とかだったような…

イメージを作成します。openssh-serverは必要なので必ず入れて下さい。その他は、お好きにしてください。

$ sudo ./rootstock --fqdn omap --login  --password   --imagesize 4G --seed  wget,nano,linux-firmware,wireless-tools,usbutils,xserver-xorg-core,xinit,xterm,wpasupplicant,openssh-server  --dist maverick --serial ttyS2 --components "main universe multiverse"  --kernel-image  http://rcn-ee.net/deb/maverick/v2.6.35.9-l8/linux-image-2.6.35.9-l8_1.0maverick_armel.deb

しばらく待つと下記のファイルが作成されます。

armel-rootfs-201101030333.tgz
initrd.img-2.6.35.9-l8
vmlinuz-2.6.35.9-l8

次にuImage,uInitrdの作成をします。

$ mkimage -A arm -O linux -T kernel -C none -a 0x80008000 -e 0x80008000 -n "Linux" -d ./vmlinuz-* ./uImage
$ mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n initramfs -d ./initrd.img-* ./uInitrd

実際には、使わないので作成しなくても良いと思いますが、動作確認用に作成しました。

SDカードへuImage, uInitrd をコピーしてネットワークへの接続、sshでのログインが確認できました。


2. カーネルをAndroidのカーネルに置き換える

ubuntuのカーネルをandroidのカーネルに置き換えます。
※カーネルのバージョンがあっていないけど、気にせずに置き換えます。
今回は、USB-LANアダプタ、無線LANアダプタを使いたいのでコンフィグを有効にしておきます。

$ANDROIDをandroidのソースのルートディレクトリとして説明します。
$ANDROID以下のkernelのディレクトリに移動します

Androidのkernelのディレクトリに移動します。

$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- uImage clean
$ make ARCH=arm  CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-  defconfig  menuconfig

コンフィグで下記の設定を有効にする。
これは、必要なものを環境に合わせて設定して下さい。

[Device Drivers]->[Network device support]->[USB Network Adapters]
ASIX AX88xxx Based USB 2.0 Ethernet Adapters をチェック

[Device Drivers]->[Network device support]->[Wireless LAN]->
->[Wireless LAN (IEEE 802.11)]->[Ralink driver support]
Ralink rt2800 (USB) support をチェック

[*]で、built-in を選択しておく。

$ make ARCH=arm CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- uImage modules

SDカードのデータを、できあがった uImageに置き換える。uInitrd は、削除してください。


3. Androidのイメージを転送する

SDカードをbeagleboardに挿入して起動すれば、linuxが起動するはず。

NICが見えているか確認します。起動時のログで、認識していることがわかるけど、いろいろ確認してみる

$ dmesg
$ ifconfig -a

eth0が見えていたので、DHCPでIP取得してみる。

$ sudo dhclient eth0

たぶん、IP取れると思います。取れなかったら各自で解決して下さい。
ホストマシンから、sshでログインしてみる。

$ ssh <username>@<IPaddress>

ログインできることを確認できたので、ホストマシンから、
beagleboardにAndroidのイメージを転送してみる

$ cd $ANDROID/vendor/sola/omap3/image/beagleboard
$ scp -r android <username>@<IPaddress>:/home/<username>

4. Androidを起動する

beagleboard にログインして、ホームディレクトリに先ほどコピーしたandroidディレクトリがあることを確認
chroot で、android ディレクトリをルートディレクトリに設定します。

$ sudo chroot /home/<username>/android /init

androidが起動しました。でもなんか不安定な感じが・・・