2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ARM CPU用Debian QEMUイメージの作成

Last updated at Posted at 2020-11-03

最新のARM用Debianインストーラー を使ってQEMU用イメージを作成しようとしたら、インストーラーが途中でエラーで止まって続行不可能だった(2020年10月)ので、QEMU用イメージファイルを作成するシェルスクリプトを https://github.com/emojifreak/qemu-arm-image-builder に作りました。使い方を簡単に紹介します。

インテルPC上で作成する場合、Debian標準インストーラーよりも遥かに高速に作成します。その訳は完全なハードウェアエミュレーションではなく qemu-user-static によるユーザーモードエミュレーションを用いるからです。ホストOSは Ubuntu や Debian など Debian系Linuxを仮定します。Devuan をインストールするスクリプトも同じ場所にあります。

ダウンロードと設定

github にあるシェルスクリプトをウェブブラウザか git clone https://github.com/emojifreak/qemu-arm-image-builder.git で保存します。その内の

build-arm-debian-qemu-image.sh
# !/bin/sh

SUITE=buster # or bullseye sid
ARCH=arm64 # or armhf or armel
IMGFILE=/var/tmp/debian-${SUITE}-${ARCH}.img
LOOPDEV=`losetup -f`
GIGABYTES=10 # total size in GB
SWAPGB=1 # swap size in GB
ROOTFS=btrfs # or ext4
MMVARIANT=apt # or required, important, or standard
NETWORK=systemd-networkd # or ifupdown, network-manager, none
YOURHOSTNAME=arm-guest
KERNEL_CMDLINE='net.ifnames=0 consoleblank=0 rw'
GRUB_TIMEOUT=0
MIRROR=http://deb.debian.org/debian
INITUDEVPKG=systemd-sysv,udev # or sysvinit-core,udev
KEYRINGPKG=debian-archive-keyring

apt-get -q -y --no-install-recommends install binfmt-support qemu-user-static qemu-efi-arm qemu-efi-aarch64 mmdebstrap qemu-system-arm

. ./common-part.sh

の中の以下のシェル変数をカスタマイズします。

  • SUITE はインストールするDebianのリリース名です。buster の他に bullseye, sid が有効です。リリース名が buster 以外のときには python2.7 を削除しようとするのでもし stretch 以前の古いリリースをインストールしたい場合は common-part.sh 末尾で python2.7-minimalを削除している行をコメントアウトして下さい。
  • ARCH はARM CPUの種類で64bitなら arm64、32bitならarmhfを選びます。
  • MMVARIANT はインストールするパッケージの範囲で apt < required < important < standard の順に範囲が広がります。よくわからなければ standard を選ぶのが無難です。
  • NETWORK はネットワーク設定に用いるDebianサービスです。後でデスクトップ環境をインストールするなら network-manager が無難でしょう。

apt-get -q -y --no-install-recommends install binfmt-support qemu-user-static qemu-efi-arm qemu-efi-aarch64 mmdebstrap qemu-system-arm の行はシェルスクリプトの実行に必要なパッケージをインストールしていますが、一度インストールしたらコメントアウトして問題ありません。

シェルスクリプトの実行

sudo sh build-arm-debian-qemu-image.sh とするとQEMU用イメージファイルの作成が始まりますが、しばらくすると以下のようにロケールやタイムゾーンの設定が質問されます。

ロケールの設定

以下の画面ではロケールを質問されています。例では ja_JP.UTF-8 を選んでいます。
スクリーンショット 2020-11-04 03-32-34.png
次ににシステムの標準ロケールに ja_JP.UTF-8 を選んでいます。
スクリーンショット 2020-11-04 03-33-00.png

時間帯の設定

次に時間帯を聞かれるので Asia → Tokyo と選びます。
スクリーンショット 2020-11-04 03-33-54.png

キーボードの選択

次にキーボード配列の選択を聞かれます。最初の項目はPC-105を選びます。
スクリーンショット 2020-11-04 03-34-34.png
次に英語ばかりしか選択肢が出ない以下の画面では Other を選びます。
スクリーンショット 2020-11-04 03-34-48.png
その後は2回続けて Japanese を選びます。
スクリーンショット 2020-11-04 03-35-13.png
スクリーンショット 2020-11-04 03-35-33.png
その後は好きなように選びます。

rootパスワードの設定

次に以下の画面でrootパスワードを聞かれるので好きなように設定します。
スクリーンショット 2020-11-04 03-35-49.png
一般ユーザーは何も作成されないので、必要ならrootでログインした後にadduser などで作成します。

起動用コマンドのお知らせ

最後に作成したQEMUイメージを起動するために必要なコマンドの説明が表示されます。下記スクリーンショットのハイライトした部分です。これはホストCPUとゲストCPUの組み合わせで色々変わります。
スクリーンショット 2020-11-04 03-37-37.png

デスクトップ環境のインストール

もしデスクトップ環境が必要なら起動後にrootでログインして apt-get install tasksel; tasksel として以下の tasksel を起動し、好きなデスクトップ環境を選択します。
スクリーンショット 2020-11-04 03-45-46.png

virt-manager を用いた起動

スクリプト最後に通知されるコマンドで起動しても構いませんが、よりユーザーフレンドリーな virt-manager を用いる手順を紹介します。

virt-manager のインストール

apt-get --install-recommends install virt-manager でインストールします。

対象ARM CPUの選択

作成したイメージファイルを /var/lib/libvirt/images に移動したあとにvirt-manager を起動するとエミュレーションするCPUの選択画面になります。64bit ARMならaarch64、32bit ARMなら armv7l を選択します。armv7lを選ぶ場合 https://github.com/virt-manager/virt-manager/issues/174 にあるパッチを手動であてる必要があるかも知れません。また「既存のディスクイメージをインポート」を選択します。

スクリーンショット 2020-11-04 03-40-04.png

イメージファイルの選択

次の画面では作成したイメージファイルを選択します。またOSを適切に選択します。そのあとはデフォルト選択肢を選べば普通に起動できます。

スクリーンショット 2020-11-04 03-41-28.png

2
2
0

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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?