読者です 読者をやめる 読者になる 読者になる

Fedora 16 64bit に Tizen SDK のインストール -- 準備

参考

やっていることは、Fedora 16(64bit)上に debootstrap で Ubuntu 11.04(32bit) 環境を構築して 32bit にしか対応していないSDKを無理やり動かしているだけだったりする模様。

取り敢えず、下記コマンドでchroot用のワークディレクトリを作成

$ sudo mkdir -p /srv/os

debootstrapをFedoraにインストール

$ sudo yum debootstrap

/srv/osに移動して、下記コマンドでUbuntuのベース環境を作る

$ cd /srv/os
$ sudo debootstrap --arch=i386 oneiric ubuntu-oneiric1104-i386

homeディレクトリとかマウントする。*1

$ sudo mount /dev --bind ubuntu-oneiric1104-i386/dev
$ sudo mount /dev/shm --bind ubuntu-oneiric1104-i386/dev/shm
$ sudo mount /dev/pts --bind ubuntu-oneiric1104-i386/dev/pts
$ sudo mount /sys --bind ubuntu-oneiric1104-i386/sys
$ sudo mount /proc --bind ubuntu-oneiric1104-i386/proc
$ sudo mount /home --bind ubuntu-oneiric1104-i386/home
$ sudo mount /tmp --bind ubuntu-oneiric1104-i386/tmp

これだと umount したい時に面倒だったので、Mer Platform SDKを参考に適当にスクリプトを書きました。 *2
パスの通ったディレクトリに置いて、755をあげて使うとちょっと便利です。。
(umount用はこちら。一回実行しただけだとゴミが残ったりするので、mountコマンドで/srv/os/xxxが全部umountされるまで実行してください。何とかしたかったのですが諦めました・・・)

Ubuntu配下に/proc/mountsのシンボリックリンクを貼る.

$ cd /srv/os
$ sudo ln -s /proc/mounts ubuntu-oneiric1104-i386/etc/mtab

できた環境にchrootする。

$ cd /srv/os
$ sudo chroot ubuntu-oneiric1104-i386 setarch i386 /bin/bash

正常に出来れば、shellがroot(#)になるはず。ここでFedora(64bit)からUbuntu(32bit)に制御が移る。

root@hostname:/#

の様にshellが表示されれば、ベースのUbuntu環境は出来ているはず。ここまで来ればしめたものとドヤ顔して細かい設定に移ります。

後で邪魔臭かったので、取り敢えずrootに適当にパスワードを設定します。

# passwd
# useradd moguriso
# passwd moguriso

ついでにユーザも作りました。ユーザー名(moguriso)は任意です。パスワードは一応設定しておくほうがいいと思います。
ユーザのIDをFedora側とあわせておかないと、homeディレクトリのpermission関係がぐちゃぐちゃになって困るので注意、、、

sudoを頻繁に使うので、sudoerの設定もします。

# visudo

viで開くので、⇓の様に一文追加します。

moguriso ALL=(ALL) NOPASSWD: ALL

面倒なので、パスワードなしでsudo出来るようにしています。
常時パスワードを入れる様にしたい場合は、"NOPASSWD:"*3までを消して下さい。

ここまで出来たら、一度 [Ctrl + D]またはexitコマンドでUbuntuから抜けてFedoraに戻ります。戻ったら、先程作成したユーザでUbuntuに入り直すために次のコマンドを叩きます。

sudo chroot /srv/os/ubuntu-oneiric1104-i386 setarch i386 su -s /bin/bash -l moguriso

useraddのやり方がいい加減だったせいでshellがshになってました。。
これも面倒だったので、/etc/passwdを直接編集してshをbashにしました。。

ユーザー名をFedoraと共通にして、かつユーザIDが同じになっていればhomeディレクトリはFedoraと共通になっているはずです。

これだとFedoraで使っているのかUbuntuで使っているのかよく判らないので、またもMerを参考にshellの頭に接頭辞を追加します。
具体的には、/src/os/ubuntu-oneiric1104-i386/の直下に、bash-setupという名前でファイルを作成します。中身は⇓

[[ -e /etc/profile ]] && . /etc/profile

if [[ -e ~/.bashrc ]] ; then
   . ~/.bashrc
elif [[ -e ~/.bash_profile ]] ; then
   . ~/.bash_profile
elif [[ -e ~/.bash_login ]] ; then
   . ~/.bash_login
elif [[ -e ~/.profile ]] ; then
   . ~/.profile
fi

[[ -e ~/.ubuntu.profile ]] && . ~/.ubuntu.profile

Fedora側の/home/ユーザ名/ディレクトリに .ubuntu.profileを作成します。中身は⇓

PS1="Ubuntu $PS1"

最後にchrootする際のコマンドを下記の様に修正します。

sudo chroot /srv/os/ubuntu-oneiric1104-i386 setarch i386 su -s /bin/bash -l moguris -- -c "exec bash --init-file /bash-setup -i"

ログインシェルが⇓のようになれば成功です。

Ubuntu moguris@geozero:~$

取り敢えず、Fedora 16からマウントして実行出来るUbuntuが出来ました。

Tizen SDKまで到達出来なかった。。。Orz

*1:bashのforの使い方がよく判らないので手打ち。。。orz

*2:2012/6/1版だとmic createで失敗するので修正版に差し替えました。

*3:":"コロンを含みます