読者です 読者をやめる 読者になる 読者になる

宇宙ドーナツ研究会

セキュリティ系お勉強メモ

MACのvirtualbox上でARM用Linuxを動かす話

ここ参照。
KVMを使う(インストール編) « さくらインターネット研究所
QEMU によるシステムのエミュレーション

環境

  • ホストOS
    MAC上で動くVirtual Box 上で動くCentOS 7.3
  • ゲストOS
    – ARM用にビルドしたFedora

FedoraってRHEL系らしい。
FedoraRHELCentOSの関係は、

Fedoraで実験 → 上手くいったらRHELに適用 → CentOSがそれをパクる

という感じらしい。

手順

Linux仮想マシンを扱うには、KVMQEMUが必要。 KVMのページ に書いてるように、 カーネル2.6.23 以降では、kvmはすでに組み込まれてるらしい。 なので、QEMU側のみインストールしてやる。

必要なパッケージをインストールしておく

yum -y install gcc kernel-devel zlib-devel pciutils-devel pciutils-libs gtk2-devel flex bison gettext]

qemuをインストールする。

yumだと色々不自由するらしいので、ソースからビルドする。
QEMUのページ から落としたソースをmakeする。

$ tar -Jxfv 
$ ./configure --target-list=arm-softmmu,x86_64-softmmu
$ make
$ make install

configureでは、arm用とx86_64用のビルドに必要な分だけmakeする設定にしている。 configure –help で、アーキテクチャごとのオプションがわかる。

試しにx86用のOSを動かしてみる

x86_64(amd64)用のFreeBSD https://download.freebsd.org/ftp/snapshots/amd64/amd64/ISO-IMAGES/11.0/

仮想ハードディスクの作成

$ qemu-img create -f qcow2 qemutest.img 10G

仮想ハードディスク生成に使うのは、 qemu-img コマンド。 ここでは、qcow2フォーマットで初期化し10GBの仮想ディスクqemutest.imgを生成。

qcow2 はCopy On Wright が機能するせいか、消費容量は少ないものの、パフォーマンスがかなり落ちる。 10G程度であれば問題無いらしい。

仮想ディスクにOSインストール

bsd-start.sh とかの名前で、OS起動スクリプト作る

#!/bin/sh
qemu-system-x86_64 -hda 仮想ディスク名 -m 1024 -monitor telnet::4444,server,nowait -vnc :0 -daemonize -cdrom イメージ名 -boot d

これで、ゲストOSを操作するための qemuプロンプトが立ち上がるので、インストールを終わらせる。

qemuから仮想マシンをOFF

今の状態だと、cdromからブートする設定になってるので、ディスクブートするように直す。

$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
QEMU 0.12.2 monitor - type 'help' for more infomation
(qemu) q                        ←コマンド入力
Connection closed by foreign host.
  • bsd-start.sh をディスクブート用に書き直して(cdromブートの部分を消した)
#!/bin/sh
qemu-system-x86_64 -hda 仮想ディスク名 -m 1024 -monitor telnet::4444,server,nowait -vnc :0 -daemonize
. ./bsd-start.sh

yum -y install qemu-kvm yum -y install libvirt

  • qemu-kvm centos6以前では、qemuというパッケージ名だったが、CentOS7以降は名前が変わったらしい。 よくわからないけど。

  • libvirt kvmが使うライブラリ群。 大事そうなのでインストール。 よくわからないけど。

ちなみに、qemukvmlibvirtの関係についてはこちら。 【仮想化】KVMとqemuとlibvirtの違い・関係 – ZacoDesign