やっていることは、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