結果は見つかりませんでした
その言葉を使ったものは見つかりませんでした。他の言葉で検索してみてください。
TL;DR brew install qemu qemu-img create -f qcow2 ubuntu-disk.img 32G wget https://ubuntu.com/download/server/thank-you?version=24.04.1&am
brew install qemu
qemu-img create -f qcow2 ubuntu-disk.img 32G
wget https://ubuntu.com/download/server/thank-you?version=24.04.1&architecture=amd64<s=true
qemu - System - x 86 _ 64-accel tcg -boot menu=on - cdrom ubuntu-24.04-live-server-amd64.iso -m 4G ubuntu-disk.img
qemu-system-x86_64 -accel tcg -m 4G - NIC user,hostfwd=TCP : : 60022 - : 22 Ubuntu - Disk . img
ssh <user>@ localhost-p 60022
この記事では、QEMU を用いて x86_64 Linux VM 環境を構築する方法を紹介します。
また、利便性のためホスト側の端末から ssh 接続できるようにします。
QEMU は CPU 等 の ハードウェア レベル を 含める た full – System emulation を 提供 する の で 、 この 記事 で 紹介 する 方法 は 基本 的 に は ホスト 側 の CPU アーキテクチャ , OS に 関わら ず 利用 できる と 思う ます 。
今回の内容は aarch64 Mac OS 13.3.1 (Apple Silicon) 上で検証しています。
筆者 is 使用 は 普段 m2 Mac ( Arm マシン ) を 使用 し て い ます 。
Apple Silicon 登場当時から時間も経って、もはや日常作業には ARM だから困るということはほぼ無いという実感なのですが、それでもときどき x86_64 環境が欲しくなることがあります。
筆者 の 場合 特に 困る た の は 、 セキュリティ コンテスト ( ctf ) 向け の 環境 構築 でし た 。
Docker ( Docker desktop ) で も x 86 _ 64 コンテナ を 実行 する こと は でき ます が 、 ctf 用途 と し て は GDB ( デバッガ ) が 実行 でき ない の が 致命 的 でし た 。
そのような中知ったのが QEMU で、公式ページにも Full-system emulation できると書いてあるのでこちらであれば自分の目的を達成できるのではないかと思いました。
実際この見込みは正しかったのですが、全く触れたことが無い身からすると QEMU は使い方がかなり複雑でわからないことが多く、満足いく使いかたができるまでには苦労した部分がありました。
苦労した一因として、QEMU を知らない・使ったことが無い人向けに丁寧に導入方法を説明している記事はあまり多くないように感じられたので今回記事としてまとめたいと思いました。
Download QEMU を参考に行ってください。Homebrew を使う場合であれば以下になります。
今回は QEMU の system emulation というモードを利用します。
System emulation is モード は 、 CPU や メモリ の ハードウェア を 含める て 仮想 化 を 行う 、 仮想 化 し た ハードウェア の 上 で ゲスト OS を 動作 さ せる モード です 。
System emulation を 用いる て ゲスト OS を 起動 する まで に は 、 以下 の よう な 手順 を 順 に 行う ます 。
はじめに、OS のインストール先となるディスクイメージを作成します。ゲスト OS 上のデータもこのディスクイメージ上に保存されます。
次に、OS の iso イメージを利用してハードディスクにインストールするのと同様の OS インストール作業を行います。今回は広く利用されておりインストールも比較的簡単な Ubuntu を利用します。
最後に、ディスクイメージ上にインストールしたゲスト OS を起動します。
以下、各手順について詳しく見ていきます。
まず はじめ に VM が 利用 する ディスク イメージ を 作成 する 必要 is あり が あり ます 。 今回 はubuntu-disk.img
という名前で 32GB のディスクイメージを作成します。今回は qcow2
というフォーマットを利用します。
qemu-img create -f qcow2 ubuntu-disk.img 32G
ここで 32GB という容量を指定しましたが、ディスクイメージを作成して直ちに 32GB の実ディスク容量が消費されるわけではありません。
基本的には実際に書き込みが発生した分だけ実ディスク容量が消費されていくので、大きめに設定しておいてもそれほど弊害は無いかと思います。
次に、作成したディスクイメージ上にゲスト OS をインストールします。
はじめに、インストールしたい OS の iso イメージをダウンロードしてきます。今回はメジャーなディストリビューションで、インストールも比較的簡単な Ubuntu を利用してみます 。
# Ubuntu Server のインストール
wget https://ubuntu.com/download/server/thank-you?version=24.04.1&architecture=amd64<s=true
インストール用に ubuntu を起動するには以下のコマンドを使用します。
qemu-system-x86_64 -accel tcg -boot menu=on - cdrom ubuntu-24.04-live-server-amd64.iso -m 4G ubuntu-disk.img
-accel
は エミュレーション の ため の アクセラレータ を 指定 する オプション です 。tcg
は QEMU に組み込みで入っているアクセラレータです 。-boot
はどのドライブからブートを行うか指定するオプションです。menu=on
ではブートメニューが表示されて、ユーザーが選択します。- cdrom
は CD-ROM と し て 使う イメージ を 指定 し ます 。 OS を 新規 に インストール する 場合 は この オプション を 使う の が 簡単 です 。-m
は VM のメモリ使用量を設定します。今回の設定では 4GB です。ubuntu-disk.img
は先ほど作成した VM 用のディスクイメージです。QEMU の 起動 直後 、 QEMU の ウィンドウ が フォア グラウンド の ウィンドウ ( e . g . 現在 操作 し て いる ターミナル ) に 隠れる て 見える ない か も しれる ませ ん 。 その 場合 は 、 ホスト 側 の 仮想 デスクトップ の 操作 など で QEMU の ウィンドウ を 探す て あげる て ください 。
QEMU の ウィンドウ に 一度 フォーカス する と 、 マウス 操作 が QEMU ウィンドウ 内 で 閉じる よう に なっ て ウィンドウ の 外 を 選択 でき なく なり ます 。 この 状態 を 解除 する に はCtrl + Alt + g
を同時に押してください。
起動に成功すれば以下のようなブートメニューのウィンドウが出てきます。
Try or Install Ubuntu Server
を選択すると、ブートのログがしばらく流れた後インストールメニューが開始されます。
後はメニューの指示に従ってインストール作業を進めてください。
インストールはそこそこ (数十分程度) 時間がかかると思いますが、気長に待ちましょう 💤
一度 インストール でき たら 、 CD-ROM 無し で 起動 する こと が でき ます 。 以下 の よう な コマンド でubuntu-disk.img
にインストールされたゲスト OS を起動します。
qemu-system-x86_64 -accel tcg -m 4G ubuntu-disk.img
ブート する の に 多少 ( 1 分 程度 ) 時間 が かかる ます が 、 一度 起動 し て しまう ば 簡単 な cli 操作 ぐらい で あれ ば さほど 性能 上 の 問題 は 気 に なら ない の で は ない か と 思う ます 。
起動 が 終了 する と 以下 の よう な ログイン 画面 が 出る て くる の で 、 インストール 時 に 設定 し た ユーザー 名 ・ パスワード を 入力 すれ ば ログイン でき ます 。
ネットワークもデフォルトで設定されているので、apt install
等のコマンドでインターネット上からパッケージをダウンロードしてくることもできます。
VM を終了する際は shutdown -h now
等のコマンドを実行するか、QEMU のメニューから “Machine > Power Down” を選択してください。
以上のセットアップで一通りゲスト OS が利用できる状態になり、QEMU の提供する GUI window から操作を行うことができるようになりました。
しかし、QEMU のウィンドウからの操作では以下のような点で不満が残ります。
そこで、ゲスト OS 上に SSH サーバーを立ち上げ、ホスト側で動かしている端末からログインできるようにすることで以上のような作業上の問題を解消することができます。
ゲスト OS 上のポートにホスト側から接続できるようにするためには、ゲスト OS の起動時にネットワークの設定が必要です。具体的には、以下のようなオプションを用いれば良いです。
- NIC user,hostfwd=tcp::60022-:22
qemu-system-x86_64 -accel tcg -m 4G - NIC user,hostfwd=TCP : : 60022 - : 22 Ubuntu - Disk . img
こちらは、ホスト OS 上の 60022 番ポートをゲスト OS 上の 22 番ポートに forward するという意味になります (参考)。
ゲスト OS 側 でsudo APT install openssh - server
などで sshd
をインストールして起動しておくことで、ホスト側から以下のようなコマンドで SSH 接続することができます。
ssh <user-name>@ localhost-p 60022
この記事では、QEMU を用いて x86_64 Linux 環境を構築する方法を紹介しました。
この 方法 は QEMU が サポート し て いる 環境 で あれ ば CPU アーキテクチャ や OS を 問う ず 使える 汎用 的 な 方法 と 思う れる ため 、 どこ か で 使う たく なる こと が ある か も しれる ませ ん 。
qemu を ある 程度 使う た こと が ある 方 に とっ て は ごく 初歩 的 な 内容 か と 思う ます が 、 qemu を 使う て み たい 、 使う かた を 調べる て み た こと が ある が よく わかる なかっ た と いう 方 に 参考 に なっ て いる ば 幸い です 。
最後 まで 読む で いただき ありがとう ござる まし た !
公式ドキュメントは慣れていないとどこを読んでいいかよくわからないかもしれません。
今回参考にした部分は主に System Emulation の以下の項目になります。
Arch wiki の 説明 は かなり 充実 し て い て 、 今回 かなり 参考 に し まし た 。
今回の記事で紹介している内容はほとんどカバーされています。
また 今回 は 検証 し て い ない です が 、 QEMU の コマンド 操作 が わかる にくい など の 理由 で GUI に よる 操作 を ベース に 行う たい 方 は utm と いう プロジェクト を 試す て みる と 良い か も しれる ませ ん 。