LoginSignup
9
9

More than 3 years have passed since last update.

Raspberry pi 4とArchlinux 64bitとKVMとqemuでWindows10 WOAを動かす

Last updated at Posted at 2020-08-24

初めに

Ubuntu, Raspberry pi OSに続いて、ArchlinuxもRaspberry pi4の64bit対応版が正式リリースされました。ArchlinuxはDIY OSであり、軽量にすることができ、また64bit版はKVMに標準対応しているため、ホストOSとして使ってみるのも良いと思います。今回は、ArchlinxをホストOSとして、ゲストOSにWindows10 WOAを動かしてみました。Raspberry pi 4も8GB RAM版が出るようになり、仮想環境なども面白いかと思います。

参考サイト

必要なもの

  • Raspberry Pi 4 4GB以上
  • 32GB SDカード
  • Linux PC SDカードが書き込めるもの raspberry pi + SDカードリーダでも可
  • Windows PC ( windowsインストールISOファイル作成に使用)
  • VNC viewer 上記windows PCにインストールが便利

インストラクション

今回は、32GBのSDカードにArchlinuxをインストールし、そのうえでKVMサポートのqemuを動かし、ゲストOSのubuntuをインストーラからインストールいたします。

※2020/9/5追記
ArchlinuxをSSD/HDDでUSB bootしたい場合は、以下を参考にしてください。
Archlinux 64bit Raspberry pi 4でUSB bootするまで(MBRディスクのみ)

Arch linuxのインストール

他のRaspberry pi向けディストリビューションと違い、インストーラがありません。OSイメージのtarballを展開してインストールし
ます。まずは、SDカードのパーティションを作ります。ここでは、linux PCを使用します。

まずはArchlinux rpi aarch64のtarballを取得します。

$ wget http://sg.mirror.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz

linux PCにSDカードを認識させると、デバイスが割り当てられます。ここでは、/dev/sdbに割り当てられたとします。まずは、/dev/sdbに以下のパーティションを作成します。パーティションの作成方法はこちらを参考にしてください。ここからはスーパーユーザで実行します。

# fdisk /dev/sdb

次に作成したパーティションをフォーマットします。

# mkfs.vfat /dev/sdb1
# mkfs.ext4 /dev/sdb2

/mntにマウントします。

# mount /dev/sdb2 /mnt
# cd /mnt
# mkdir boot
# mount /dev/sdb1 boot

tarballを/mntに展開します。bsdtarの展開時にpオプションを必ずつけてください。

# cd <tarballをダウンロードしたディレクトリ>
# bsdtar xpf ArchLinuxARM-rpi-aarch64-latest.tar.gz -C /mnt

展開が終わったら、fstabをいじります。

# cd /mnt/etc
# vi fstab
fstab(before)
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
/dev/mmcblk0p1  /boot   vfat    defaults        0       0
fstab(after)
# Static information about the filesystems.
# See fstab(5) for details.

# <file system> <dir> <type> <options> <dump> <pass>
/dev/mmcblk1p1  /boot   vfat    defaults        0       0
/dev/mmcblk1p2  /       ext4    defaults        0       0

特に注意すべきは、デバイス名がmmcblk0ではなくmmcblk1に変えることです。
アンマウントします。

# cd /
# umount /mnt/boot /mnt

これでSDカードの準備ができました。取り出してRaspberry Pi 4にさします。

Windows10 WOAのインストールISOの取得

一旦Raspberry Pi 4は置いておいて、Windows10 WOAのインストールISOを作成します。
ここからはしばらくWindows PCを使用します。まずWindows PCで以下のページにアクセスします。
UUP dump

ここは、これまでのwindows10のバージョンの保管庫のようなところです。案内に従って自分の目的に合うバージョンを選択してください。2020/8/24現在でLatest,ARM64,Japaneseを選択して、出てくるDownload methodの選択肢でDownload and convert to ISOを選択してください。zipファイルがダウンロードされるので、空き容量の多い場所に作業フォルダを作成してzipファイルを展開してください。展開した中のuup_download_windows.cmdファイルを実行します。PowerShellを開いて、作業フォルダに移動し、以下のように実行します。

> .\uup_download_windows.cmd

実行に1時間ほどかかります。終了すると、同じフォルダにISOファイルができています。あとは、あとでRaspberry Pi 4にscpなどで転送すればWindows PCでの作業は終了します。

Raspberry Pi 4の環境設定

やっとRaspberry Pi 4の設定に入ります。作成したSDカードをRaspberry Pi 4に装着して電源を入れると、Archlinuxが立ち上がり、ログインプロンプトが出ます。
login: alarm
passwd: alarm
でログインしてください。
しばらくはルートの作業になるので、ルートになってください。まだsudoもありません。

$ su -

ルートのパスワードはrootになっています。
まずはpacmanイネーブルです。

# pacman-key --init
# pacman-key --populate archlinuxarm
# pacman-key --refresh-keys

最後のコマンドはエラーになる場合もありますが、大丈夫なようです。
システムをアップデートします。

# pacman -Syu

ロケール等設定します。

# vi /etc/locale.gen

ja_JP.UTF-8 UTF-8
の行の#を取り除き、有効化します。

# locale-gen
# vi /etc/locale.conf

LANG=ja_JP.UTF-8
に変更します。

# localectl set-locale LANG=ja_JP.UTF-8

タイムゾーンの設定をします。

# timedatectl set-timezone Asia/Tokyo
# timedatectl status

確認します。
ローカルタイムに設定します。

# timedatectl set-local-rtc true

次に作業ユーザを追加します。ここではpiにします。

# useradd -m -s /bin/bash pi
# passwd pi

sudoをインストールします。

# pacman -S sudo
# visudo

%wheel ALL=(ALL) ALL
の行をコメント#を外す
wheelグループに追加

# usermod -aG wheel pi

これで基本設定は終了です。ログアウトしてpiで入り直します。

ここからはpiのユーザで作業をします。
まずKVMが立ち上がっていることを確認します。

$ dmesg | egrep -i kvm
[    2.923459] kvm [1]: IPA Size Limit: 44bits
[    2.924778] kvm [1]: vgic interrupt IRQ1
[    2.925005] kvm [1]: Hyp mode initialized successfully

wgetとqemuをインストールします。

$ sudo pacman -S qemu wget

確認をします。

$ qemu-system-aarch64 --version
QEMU emulator version 5.1.0
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers

ここからはworkディレクトリで作業をします。

$ mkdir work
$ cd work

まずはWindows PCで作成したWindowsインストールISOファイルを転送してきて、win10.isoというファイル名でworkに入れます。
次にefiとディスクドライバのファイルをダウンロードします。

$ wget http://45.76.81.249/Pinebook64/pinebook-pro/QEMU_EFI.img
$ wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.173-2/virtio-win-0.1.173.iso

次にインストール先のディスクイメージを作成します。

$ qemu-img create -f qcow2 disk.img 20G

最後にインストールスクリプトを作成します。

install.sh
#!/bin/bash
export QEMU_AUDIO_DRV=pa

qemu-system-aarch64 \
-cpu host \
-enable-kvm \
-M virt-2.12 \
-smp 2 \
-m 2G \
-bios QEMU_EFI.img \
-device ramfb \
-device ich9-usb-ehci1 \
-device usb-kbd \
-device usb-mouse \
-device usb-storage,drive=windows \
-drive if=none,id=windows,media=cdrom,file=win10.iso \
-device usb-storage,drive=drivers \
-drive if=none,id=drivers,media=cdrom,file=virtio-win-0.1.173.iso \
-device virtio-blk,drive=system -vnc :1 \
-drive if=none,id=system,format=qcow2,file=disk.img

実行してください。

$ chmod +x install.sh
$ ./install.sh

起動したらすぐ、VNC viewerw起動し、
<Raspberry Pi 4アドレス>:1
にアクセスしてください。BIOS画面が立ち上がっているはずです。
すぐに何かキーを押すとインストールが開始します。
あとは、Windows10のインストールに従っていけばよいのですが、インストール場所の指定の時にインストール先が無いので、面食らいます。その場合は、

ドライバの読み込み→参照→ドライブD:ARM64\w10→次へ

でディスクが見えるようになり、ディスクを選択して、新規(E)を押すとディスクパーティションが切られて、インストール先ができます。

以上、なかなか長い道のりですが、一度試してみてください。思ったよりサクサク動いて、KVMの威力が分かります。

9
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9