QEMUであそブログ(仮)

QEMUで遊びます。それだけだと、ネタが無くなると思いますので、それ以外にも書くかもしれません。

JavaQemuをインストールしてみます

今回は、GUIQEMUを使用できる「JavaQemu」というツールをインストールしてみます。

JavaQemuをインストールする前に、Javaのランタイムが必要ですが、Oracle Javaは有償化されてしまったので、Oracle OpenJDKをベースに開発された「AdoptOpenJDK」というものをインストールしてみます。

AdoptOpenJDKを下のサイトからダウンロードしてインストールします。

adoptopenjdk.net

ターミナルを開いて、java --version と打ってみると、バージョンが表示されました。

f:id:itlab7:20210301144244p:plain

下のサイトからJavaQemuをダウンロードしてインストール(好きなディレクトリにコピー)します。

sourceforge.net

ダウンロードしたjarファイルを右クリックして、Jar Launcher.app で開きます。

警告が出ますが、怪しいアプリではないと思うし、ウィルススキャンの結果も問題なかったので無視して開きます。

メッセージウィンドウが出てきました。OKを押します。

f:id:itlab7:20210301145809p:plain

起動しました。

f:id:itlab7:20210301150024p:plain

今回はここまでです。

QEMU上の Raspberry Pi で Ubuntu MATE (32bit) (失敗)

今回は、QEMU上の Raspberry Pi 3B で Ubuntu MATE 20.04 (Arm 32bit)を動かしてみます。

Ubuntu MATE (マテ) は、Ubuntu公式の派生品であり、フリーでオープンソースなOSです。

下のサイトからQEMUで使えるイメージ(ubuntu-mate-20.04.1-desktop-armhf+raspi.img.xz)をダウンロードします。

ubuntu-mate.org

~/qemu/UbuntuMATE32 ディレクトリを作成し、ダウンロードしたxzファイルを、~/qemu/UbuntuMATE32 ディレクトリに移動して、展開しました。

f:id:itlab7:20210220092602p:plain

更に、展開したimgファイルの中から、initrd.img, vmlinuz, bcm2836-rpi-2-b.dtb ファイルを取り出します。

f:id:itlab7:20210220094151p:plain

ターミナルを開いて、~/qemu/UbuntuMATE32 ディレクトリに移動し、下のコマンドでimgファイルのフォーマットを変換します。

qemu-img convert -f raw -O qcow2 ubuntu-mate-20.04.1-desktop-armhf+raspi.img ubuntu-mate-20.04.1-desktop-armhf+raspi.qcow2

下のコマンドでイメージのサイズを32GBに変更します。

※qcow2フォーマットは、実際に使用している容量のサイズになります。

qemu-img resize ubuntu-mate-20.04.1-desktop-armhf+raspi.qcow2 32G

下のコマンドでQEMUを起動します。

qemu-system-arm -M raspi2 -kernel vmlinuz -initrd initrd.img -dtb bcm2836-rpi-2-b.dtb -drive if=sd,file=ubuntu-mate-20.04.1-desktop-armhf+raspi.qcow2,format=qcow2 -append "rw console=ttyAMA0 root=/dev/mmcblk0p2 rootwait" -serial mon:stdio

おやつを食べながら、気長に待ちます。

f:id:itlab7:20210220095736p:plain

f:id:itlab7:20210220100825p:plain

起動途中でエラー(Kernel panic)が出て、止まりました。

今回も失敗です。。残念!

QEMU上の Raspberry Pi で Ubuntu MATE (失敗)

今回は、QEMU上の Raspberry Pi 3B で Ubuntu MATE 20.04 (Arm 64bit)を動かしてみます。

Ubuntu MATE (マテ) は、Ubuntu公式の派生品であり、フリーでオープンソースなOSです。

下のサイトからQEMUで使えるイメージ(ubuntu-mate-20.04.1-desktop-arm64+raspi.img.xz)をダウンロードします。

ubuntu-mate.org

~/qemu/UbuntuMATE ディレクトリを作成し、ダウンロードしたxzファイルを、~/qemu/UbuntuMATE ディレクトリに移動して、展開しました。

f:id:itlab7:20210214130358p:plain

更に、展開したimgファイルの中から、initrd.img, vmlinuz, bcm2837-rpi-3-b.dtb ファイルを取り出します。

f:id:itlab7:20210214135115p:plain

ターミナルを開いて、~/qemu/UbuntuMATE ディレクトリに移動し、下のコマンドでimgファイルのフォーマットを変換します。

qemu-img convert -f raw -O qcow2 ubuntu-mate-20.04.1-desktop-arm64+raspi.img ubuntu-mate-20.04.1-desktop-arm64+raspi.qcow2

下のコマンドでイメージのサイズを32GBに変更します。

※qcow2フォーマットは、実際に使用している容量のサイズになります。

qemu-img resize ubuntu-mate-20.04.1-desktop-arm64+raspi.qcow2 32G

下のコマンドでQEMUを起動します。

qemu-system-aarch64 -M raspi3 -kernel vmlinuz -initrd initrd.img -dtb bcm2837-rpi-3-b.dtb -drive if=sd,file=ubuntu-mate-20.04.1-desktop-arm64+raspi.qcow2,format=qcow2 -append "rw console=ttyAMA0 root=/dev/mmcblk0p2 rootwait" -serial mon:stdio

f:id:itlab7:20210214150901p:plain

起動途中でエラーが出て、止まりました。

今回は、失敗です。。残念!

QEMUでDebian

今日は、QEMUを使って、debian OS(armhf版)を動かしてみます。

下のサイトから、debian_wheezy_armhf_standard.qcow2 以外のファイルをダウンロードします。

people.debian.org

ダウンロードしたファイルは、~/qemu/debian ディレクトリに置きました。

f:id:itlab7:20210103133323p:plain

ターミナルを開いて、下のコマンドでdebianディレクトリに移動します。

cd ~/qemu/debian

下のコマンドで、ディスクイメージのサイズを32GBに変更します。

qemu-img resize debian_wheezy_armhf_desktop.qcow2 32G

下のコマンドでqemuを起動します。

qemu-system-arm -M vexpress-a9 -smp 2 -m 1024 -kernel vmlinuz-3.2.0-4-vexpress -initrd initrd.img-3.2.0-4-vexpress -drive if=sd,file=debian_wheezy_armhf_desktop.qcow2 -append "root=/dev/mmcblk0p2"

少し時間がかかりますが、ログイン画面が出てきました。

ユーザIDとパスワードは、user を入力します。

f:id:itlab7:20210103134553p:plain

少し時間がかかりますが、ログインできました。

f:id:itlab7:20210103140156p:plain

以上です。

QEMUでRaspberry Pi

今日は、QEMUでRaspbianというOSを動かしてみようと思います。

Raspbianは、Raspberry Pi (ラズベリーパイ)用のオープンソースのOSで、現在は、「Raspberry Pi OS」という名前に変わっているようです。

それでは、下のページからDownloadボタンを押して、QEMU用のイメージファイル(qemu_no image.zip)をダウンロードします。

for Windows と書かれていますが、Mac用のQEMUでも動くと思います。

sourceforge.net

ダウンロードが終わると、自動的に中身が展開されました。

ディレクトリ名は、qemuからRaspbian に変更しました。

f:id:itlab7:20201231113143p:plain

ホームディレクトリに qemu というディレクトリを作成して、その中にRaspbianディレクトリを移動します。

〇〇.exe, 〇〇.dll はWindows用なので、消しておきます。

f:id:itlab7:20201231113750p:plain

下のFTPサイトから、2012-07-15-wheezy-raspbian.zip をダウンロードします。

ftp.jaist.ac.jp

ダウンロードが終わると、自動的に中身が展開されました。

Raspbianディレクトリに移動しておきます。

f:id:itlab7:20201231123710p:plain

ターミナルを開いて、下のコマンドでRaspbianディレクトリに移動します。

cd ~/qemu/Raspbian

そして、下のコマンドでQEMUを起動します。CPUには、ARM系の物を指定します。

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

下のウィンドウが出てきますが、今回はマイクは使いませんので、どちらでもいいです。

f:id:itlab7:20210101151808p:plain

下の画面で色々設定できるようです。

Tabキー、右キー、EnterでFinishします。

f:id:itlab7:20210101152649p:plain

コマンドプロンプトになります。

下のコマンドで、さっきの設定画面を出すことができます。

sudo raspi-config

下のコマンドで、GUIを開始します。

startx

GUIが出てきました。

Pythonやターミナルなどが使えます。

ホストPCにマウスを戻すには、CTRL+ALT+G(Macでは、control+option+G)を押します。

f:id:itlab7:20210101153532p:plain

右下の電源ボタンからログアウトできます。

f:id:itlab7:20210101160038p:plain

ログアウトすると、コマンドプロンプトになるので、下のコマンドでシャットダウンします。

sudo shutdown -h now

System halted. と表示されたら、×ボタンでQEMUを終了します。

もう一度、下のコマンドでQEMUを起動します。

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

今度は、ユーザ名とパスワードを求められます。

ユーザ名に pi 、パスワードにraspberry を入力してログインします。

f:id:itlab7:20210101154927p:plain

ログインできました。startxコマンドでまたGUIを開始することもできます。

f:id:itlab7:20210101155204p:plain

今回は以上です。

QEMUのインストール

QEMUを使うと、PC上に別の仮想のPCを作って動かすことができます。

CPUからemulationしますので、Intel系のCPUのPC上でArm系のCPUの仮想PCを動かすこともできます。

今回は、MacIntel系のCPU)上にQEMUをインストールします。

参考ページ↓

www.qemu.org

Homebrewが必要ですので、インストールしていない場合は、下のページからインストールしといてください。

brew.sh

ターミナルを開いて、下のコマンドを実行します。

brew install qemu

しばらくすると、終わりました。

f:id:itlab7:20201230093641p:plain

/usr/local/Cellar/qemu/5.1.0/bin にインストールされていました。今回は、バージョン5.1.0がインストールされたようです。

下のコマンドでPATHを追加しておきます。

echo 'export PATH="/usr/local/Cellar/qemu/5.1.0/bin:$PATH"' >> ~/.zshrc

一旦、ターミナルを閉じて、開きなおします。

下のコマンドでバージョンを確認してみます。

qemu-system-arm --version

バージョンが表示されました。

f:id:itlab7:20201230100132p:plain

今回は以上です。