ユーザーモードqemu+chrootの環境改善
会社のブログに書いたKMC Staff Blog:QEMUのもうひとつの使い方: ユーザーモードエミュレーションとbinfmtとchrootの組み合わせの続き。
マニアックになりすぎかもと思ったのでこっちに書きました。
不便に思ったところが少し改善できました。
/procをmountする
単にchrootしただけだと/procディレクトリは空です。このままだとbashのタブ補完がエラーになったりして不便です。
もちろんpsコマンドはエラーになる。
# ps Error: /proc must be mounted To mount /proc at boot you need an /etc/fstab line like: /proc /proc proc defaults In the meantime, run "mount /proc /proc -t proc" #
ここではたと気がついた。chrootする前にmountしておけばいいのでは?
$ sudo mount /proc /export/debian_lenny_armel/root/proc -t proc $ sudo chroot /export/debian_lenny_armel/root /bin/bash # ls /proc 1 19631 20 29580 30116 45 8 mdstat 10 19634 20432 29602 30131 48 9 meminfo 1064 19640 21 29779 30132 49 904 misc ...
成功!
ネットワークの名前を解決できないがとりあえず/etc/hostsに書けばOK
apt-getを実行すると途中でだんまりになる。wgetもダメ。
でも sftp 192.168.xx.xx は大丈夫だった。
さては名前が引けないのではと思って
# nslookup qemu: Unsupported syscall: 250 errno2result.c:111: unable to convert errno to isc_result: 38: Function not implemented socket.c:3463: epoll_create failed: Function not implemented (null): isc_socketmgr_create: unexpected error #
やっぱり。qemuにunsupported syscallと怒られた。
とりあえず原始的に/etc/hostsに直接書いてみた。
/etc/apt/source.lstに出てくるものを別のマシンでnslookupで調べて、その結果を/etc/hostsに追加。
133.87.45.30 ftp.jp.debian.org 149.20.20.6 security.debian.org 86.59.118.153 volatile.debian.org
これで apt-get updateとやったらみごと成功。
apt-get build-dep や apt-get source もできるので当面はこれで十分。
案外快適に使えてます。
qemuのunsupported syscallの件はそのうちソースを見てみることにしよう。
(2010.2.27追記)
/dev の足りないデバイスを追加
/dev/pty* が無かった。以下のようにして作成。
# cd /dev # /sbin/MAKEDEV generic
数分かかった。
ハングしたのかと思って^Cしそうになったが、 別の端末でps axしたら進行しているのがわかった。
straceは使えない
ptraceシステムコールがunsupportedのようだ。
# strace ls qemu: Unsupported syscall: 26 strace: ptrace(PTRACE_TRACEME, ...): Function not implemented