Google

2013年5月27日月曜日

Raspberry Pi:QEMUとの通信

QEMU上でRaspberianを動作させてる時、なんらかの理由でファイルを中に転送したいというケースがあるかもしれません。
そんな際にWindowsとQEMUで通信する方法をご紹介。

まず、前回インストールしたQEMUのルートディレクトリを見ると、このように、内部にまたqemuというディレクトリがあるのが解ります。


このqemuディレクトリの中に入るとファイルが多々あるので、その中からrun.batというファイルを探します。
決して上の画像にあるrun.batではありませんのでご注意を。


こんな感じで存在するはず。
これをテキストエディタで開きましょう。


初期状態の中身はこうなっているはず。

qemu-system-arm.exe -M versatilepb -cpu arm1176 -hda 2012-07-15-wheezy-raspbian.img -kernel kernel-qemu -m 192 -append "root=/dev/sda2"

この末尾に以下のようなコードを追加します。

 -redir tcp:10022::22

合わせると以下のようになります。

qemu-system-arm.exe -M versatilepb -cpu arm1176 -hda 2012-07-15-wheezy-raspbian.img -kernel kernel-qemu -m 192 -append "root=/dev/sda2" -redir tcp:10022::22

これは何をしているかというと、ポートフォワーディングという処理です。
ローカルの22番ポートを外部の10022番にリダイレクトするという設定を追加していることになります。
素の状態では閉じられてしまっていてファイル転送等の通信ができないので、その対策と考えて下さい。

修正したらそのままセーブして大丈夫です。
しかしこれはバッチファイルなので修正してセーブしても即変化はでません。
前回紹介した方法でインストール先のルートにあるrun.batから起動しましょう。
今編集したrun.batでもどちらでも起動はします。

起動すると、OS設定状況によってはWindowsがファイアウォールの警告を出してくるはずです。
その場合は許可してあげましょう。

こんな感じで出るはずです
起動しても何も変わってはいませんが、ここからエミュレータ上のRaspberianと通信をしてみたいと思います。
通信なのでQEMUが起動しっぱなしで無くてはならない点は留意して下さい。

そしてできるだけ簡単なGUI操作を重視しているので、今回使うのはWinSCP。

WinSCP
http://winscp.net/eng/docs/lang:jp

SCP、SFTP、FTPをGUI操作できる優れたツールで、仕事で幾度と無くお世話になりました。
もし無ければリンクからインストールして下さい。
インストーラ付きで作業も簡単なのでその部分は割愛します。
コマンダー、エクスプローラのどちらかを選べという質問は、個人的には前者を選んでます。

起動すると初期状態はこんな画面。


そしたら右上の新規ボタンを押しましょう。


左の一覧部分のセッションという部分にカーソルが当たり、上記のようになります。
上から順番に指定した値を入れて下さい。

ファイルプロトコル:SCP
ホスト名:127.0.0.1
ポート番号:10022
ユーザ名:pi
パスワード:raspberry

ホストは自分自身で、10022ポートを使用しています。
これは先程のバッチに適用したポート開放部分と一致しなければなりません。
簡単に言うと、自分のPCの10022ポートを、QEMUの22番と繋いでいるが故にこういう指定となるわけです。
ユーザとパスはRaspberianの初期パスと一緒です。
全て入れたらログインボタンを押して下さい。
その際、初回ログイン時のみ、警告が表示されますのでOKをして下さい。

これが経過画面。少し時間が掛かります。
これがログインした画面。
このような画面になれば成功です。
コマンダータイプの場合、左半分は自分のローカルPC、右が接続先です。
上半分はディレクトリで下半分がカレントディレクトリのファイル一覧になります。

要はエクスプローラ宜しくRaspberianの中身をそのままGUIで見ている訳で、piユーザでアクセスできる場所ならどこでも自由自在です。
rootでログインし直せば当然なんでもやり放題。
ファイルの転送も簡単で、D&Dも受け付けてくれます。

これでWindowsから必要なファイルの出し入れがOKになりました。

0 件のコメント:

コメントを投稿