QEMUはプロセッサエミュレータであり、コンピュータの動作をまるごと仮想化する。そのため、様々なOSをハードディスクやSSDにインストールすることなく、また今使用しているシステム(ホスト側のOS)を再起動する事なく、起動させたり動作させたりできる。またハイパーバイザーとしても動作させる事ができる。
今回は、QEMUを用いてGNU/Linuxを色々と起動させてみようと思う。
事前準備
QEMUをインストールする
QEMU自体を動作させる側のOSをホストOS、QEMUを使いその上で動作させるOSをゲストOSと呼ぶ。まずはmacOSにQEMUをインストールする。今回ホストOSはmacOSを使用し、パッケージマネージャにHomebrewを使う事にする。 brew install qemu
をターミナルで実行すると、QEMUのインストールが始まる。
HDDの代わりとなるファイルを作成する
GNU/Linuxのインストールには色々な方法があるが、最も一般的なものはHDDにインストールする方法だろう。QEMUで起動させるOSを物理HDDにインストールすることもできるとは思う。しかし、それでは物理HDDを購入する等して準備する必要がある。物理HDDを使用する場合、パーティションの操作する時のオペレーションミスによるホスト側へ影響などがあるかもしれないし、複数バージョンのゲストOSを準備するのも難しくなる。QEMUではホスト側のファイルをHDDといったブロックデバイスとして認識し起動させる事ができる。つまりホスト側(今回の場合、macOS)からは、ただのファイルとして扱う事ができる。ファイルで扱えると、パーティション操作ミスのリスクも低減できるし、新しく作ったり削除したりといった管理もしやすくなる。ここではその、HDDの代わりとなるファイルを作成する。ファイルの作成には dd
コマンドを使う。ファイルサイズは格納したいデータの量があれば良い。これにはゲストOS自体のデータサイズが含まれる。今回は小さいOSを使う予定である為、50MiBのファイルを作成する事にした。
Tiny Core Linuxをインストールする
GNU/Linuxには様々なディストリビューションがある。ディストリビューションには、それぞれ特徴があり、それを探求するのも楽しい。今回はQEMUでGNU/Linuxを動作させられることを確認する事が目的であるので、大々的なものは必要ない。だからサイズのとても小さいTiny Core Linuxを使うことにする。
起動イメージをダウンロードする
まずはTiny Core Linuxのインストール用イメージをダウンロードする。今回使うホスト側のコンピュータはInterMacなので、Tiny Core LinuxのCoreのx86_64用のISOファイルをダウンロードする。
OSのような大きなファイルはファイルの破損や改竄に気付けるようにするために、ハッシュ値を計算したファイルも配布されている。それもダウンロードする。
ダウンロードしたファイルはハッシュ値が同じかを確認する。
ハッシュ値が同じ事を確認した。
インストール用イメージを起動する
ホスト側のコンピュータは、x86_64アーキテクチャのチップを使用しているため、ゲスト側もそれと同じものを使うことにする。これは起動時の引数などで変更可能であり、別のアーキテクチャで実行を試すこともできる。その際にはそのアーキテクチャに合う起動イメージが必要になる。
起動するとQEMUのフレームが開く。
インストール
QEMUの画面でプロンプトの入力待ちになったら、インストール作業をする。まずはtce-loadコマンドを使用し、tc-installというインストールスクリプトや必要なコンポーネントをダウンロードする。
tce-load -wil tc-install
ダウンロードが完了したら、インストールスクリプトを実行する。インストールスクリプトでは、何から、何を、どこへインストールするかといったことが質問される。これらにCLIで答えながら進めていく。disk.imgファイルはゲストOSでは恐らく /dev/sda
として認識されているだろう。
sudo tc-isntall.sh
インストールが完了したら、QEMUを停止する。
Tiny Core Linuxを起動する
先ほどと同様にQEMUを起動するが、既にdisk.imgにはTiny Core Linuxがインストールされている。そのため -cdrom
は指定しない。
正しく起動すると tc
ユーザーとしてログインした状態となる。
良い感じだ。
/homeと/optにdisk.imgをマウントする
インストールが完了し、起動ができることは確認した。ただし、この状態では/homeはメモリ上にマウントされているため、再起動するとデータは消えてしまう。これでは使い勝手が良くない為、/homeと/optにdisk.imgをマウントするように設定を変更する。
違いは APPEND
に home=sda1
と opt=sda1
を追加した事だ。再起動すると、/homeと/optに保存したデータは、 disk.img
に書き込まれる。
まとめ
QEMUを使って、ファイルにTiny Core Linuxをインストールし起動できる事を確認した。準備はちょっと手間だが、危険ではないし、失敗してもやり直ししやすくとても良かった。パッケージのインストール等は今回は行わなかった。時間があればそういった事もやってみたいと思った。