今日は、QEMUの中のFreeBSDと、ホストOSであるWindowsとの間で、ファイルの受け渡しができるようにします。
そのために、FreeBSDに、Apache2をインストールします。WebDAVの機能は、Apache2には標準で備わっています。
■ Apache2のインストール
QEMUのFreeBSDを起動させ、前回やったように、PuTTYでログインして、SSHポートフォワーディングができるようにしておきます。
Apache2のバイナリ・パッケージは、このへんにあります。
ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/
i386/packages-5-stable/www/apache-2.0.54.tbz
suでrootになったあと、pkg_addでインストールします。
freebsd# pkg_add ftp://ftp2.jp.freebsd.org/
pub/FreeBSD/ports/i386/
packages-5-stable/www/apache-2.0.54.tbz
Fetching ftp://ftp2.jp.freebsd.org/pub/FreeBSD/
ports/i386/packages-5-stable/www/apache-2.0.54.tbz...
例によって、ダウンロードしたファイルがぶっ壊れていることが多いようですが、根気よく、何度か繰り返せば、なんとかインストールできるでしょう。
fetchがおかしいんじゃないかとも思うのですが。
freebsd# fetch ftp://ftp2.jp.freebsd.org/pub/FreeBSD/ports/
i386/packages-5-stable/All/expat-1.95.8_1.tbz
expat-1.95.8_1.tbz 95% of 133 kB 338 kBps
fetch: expat-1.95.8_1.tbz appears to be truncated: 130799/136517 bytes
くぅ~~~~なんでだよ・・・
■ Apache2の設定
/etc/rc.confに、以下の1行を追加。
apache2_enable="YES"
/usr/local/etc/apache2/httpd.conf を編集する。
ServerName freebsd.qemu.local:80
コメントアウトされている、以下の2行を有効にする。
LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
おしまいのほうに、こんなかんじで追加。
DavLockDB /var/tmp/apache/DavLock
Alias /dav "/home/dav/"
<Directory /home/dav>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
</Directory>
<Location /dav>
DAV On
Options FollowSymLinks Indexes
AuthType Basic
AuthName "WebDAV"
AuthUserFile /usr/local/etc/apache2/webdav.passwd
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
require valid-user
</Limit>
</Location>
■DavLockデータベースファイル用のディレクトリの作成
freebsd# mkdir /var/tmp/apache
freebsd# chown www:www /var/tmp/apache
■WevDAVのファイル置き場を作成
freebsd# mkdir /home/dav
freebsd# chown www:www /home/dav
■/etc/hostsの編集
ここでは、以前、ホスト名を「freebsd.qemu.local」としていました。これを、/etc/hostsに登録しておきます。
10.0.2.15 freebsd.qemu.local
■認証で使うユーザーの登録
htpasswdコマンドで、パスワードファイルの新規作成と、ユーザー登録を行います。
パスワードファイルを新規作成するときだけ「-c」を指定し、既存ファイルに追加するときは「-c」はつけてはいけません。
パスワードファイルを新規作成し、ユーザーnhhを追加する例
freebsd# htpasswd -c /usr/local/etc/apache2/webdav.passwd nhh
New password:
Re-type new password:
Adding password for user nhh
■Apacheの起動
freebsd# /usr/local/etc/rc.d/apache2.sh start
Starting apache2.
httpdが起動しているのを、確認します。
freebsd# ps ax | grep ttp
1103 ?? Ss 0:00.29 /usr/local/sbin/httpd
1104 ?? S 0:00.04 /usr/local/sbin/httpd
1105 ?? S 0:00.04 /usr/local/sbin/httpd
1106 ?? S 0:00.04 /usr/local/sbin/httpd
1107 ?? S 0:00.04 /usr/local/sbin/httpd
1108 ?? S 0:00.04 /usr/local/sbin/httpd
1110 p0 R+ 0:00.08 grep ttp
起動していない場合は、エラーログ/var/log/httpd-error.logを見て、問題点を修正します。
Proxyサーバの設定を修正します。localhostへは、proxyなしでアクセスするようにします。どうせなので~/.cshrcにも書いておきましょうか。
freebsd# setenv no_proxy localhost
動作確認をします。
freebsd# w3m http://localhost/
■ QEMUに-redirを追加する
ホストOSから、ゲストOS(FreeBD)内のApacheにアクセスできるようにするために、qemu-freebsd.batを書き換えて、-redir tcp:10080::80を追加します。
START qemu.exe -L . -m 128 -hda freebsd.img -enable-audio -localtime -redir tcp:10022::22 -redir tcp:10080::80
設定を反映させるために、一度、FreeBSDをshutdown -p nowして、QEMUを起動しなおします。
■ Windowsから動作確認
Windows側で、ブラウザで「http://localhost:10080/」にアクセスします。
うまくいかない場合のチェックポイント
・FreeBSD上で、httpdが起動しているか?
・/var/log/httpd-error.logを確認
・/etc/rc.confを確認
・dmesg -aでapache2が起動しているかを確認
・QEMUの-redirが指定されているかを確認
さらに、認証によるアクセス制限が機能しているかを確認するために、「http://localhost:10080/dav/」にブラウザでアクセスしてみます。パスワードを尋ねるダイアログボックスが表示されるはずです。
これには、さきほどhtpasswdコマンドで登録したユーザーの名前とパスワードを入力します。
■ Windowsで「ネットワークプレースの追加」を実行
「マイネットワーク」の中にある「ネットワークプレースの追加」をダブルクリックします。ネットワークプレースの場所には、QEMUの中のFreeBSDで動いているWebDAVサービスをさす「http://127.0.0.1:10080/dav/」を入力します。
ユーザー名とパスワードをたずねてくるので、先ほどと同じものを入力します。うまくいかない場合は、
Windows2000でWebDAVが使えない問題
を参照して、解決してください。WindowsXP(たぶんSP2以降)でも、別のことが原因で、うまくいかない場合があります。
うまくいけば、こういうダイアログが表示されます。
このあと、なぜか、もう一度、認証が要求されます。
空っぽのフォルダが表示されます。
このフォルダに対して、ファイルのコピーなどが普通に行えます。このフォルダを通じて、FreeBSDとWindowsとの間で、ファイルの受け渡しができるわけです。
■ファイル名の文字化け
ところが、このフォルダ内で、日本語のファイル名をつかったりすると、文字化けしてしまうことがあります。
たとえばフォルダを新規作成します。
一見うまくいってるかのように見えますが、F5キーを押して、最新の情報へ更新すると、見事に文字化けしています。実は、環境によっては、化けたり化けなかったりするので、とっても気持ち悪いのですが・・・
日本語のファイル名を使わなければ、とくに問題はないのですが、気持ち悪いので、
次回、この文字化け問題を解決します。
0 件のコメント:
コメントを投稿