複アーキ環境をシュッと使えるシェルスクリプトを書いた
リバースエンジニアリングであったりシェルコード開発であったりで、複数のアーキテクチャのバイナリが動作する環境が必要になることがある。
その環境構築と使い勝手をいいかんじにしてくれるシェルスクリプトを書いた。qcow2イメージの取り回しをよくする。
install.shとssh_config.sh、launch.shという3つのファイルがあって、名前通りinstall.shがインストールを、ssh_config.shがsshのconfigの追加を、launch.shがVMの起動を行う。launch.shを使うことで以下のようにqcow2イメージを起動できる。この例ではmipsbeのVMを立ち上げている。sshでログインしてmipsbeの環境を使える。
$ ./launch.sh mipsbe When it will be ready, just connect (credentials: root/root): ssh root@localhost -p2222 Launching Mipsbe machine
qcow2イメージ毎にポートを変えているが、これはSSHのWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
を避けるためである。
QEMUの起動時に-net nic -net user,hostfwd=tcp::2222-:22
を指定することで、ポートフォワーディングの設定をやり、ポートをイメージ毎に変えている。
qemu-system-mipsel -M malta -kernel ~/qcow/mipsle/vmlinux-3.2.0-4-4kc-malta -hda ~/qcow/mipsle/debian_wheezy_mipsel_standard.qcow -append "root=/dev/sda1 console=tty0" -net nic -net user,hostfwd=tcp::2222-:22
ssh_config.shであらかじめconfigを追加しておくので、ssh アーキ名
でVMに接続できる。
#!/bin/bash echo ' Host mipsle HostName localhost User root Port 2222 Host mipsbe HostName localhost User root Port 2223 Host armle HostName localhost User root Port 2224 Host aarch64 HostName localhost User root Port 2225 ' >> ~/.ssh/config echo 'Add VM host to SSH config'
これで複アーキ環境をシュッと使えるようになって便利になった。