#初めに
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
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
/dev/mmcblk0p1 /boot vfat defaults 0 0
# 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
最後にインストールスクリプトを作成します。
#!/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の威力が分かります。