LoginSignup
3
4

More than 1 year has passed since last update.

UbuntuARMの環境をQEMUでx86 Ubuntu上に用意する。

Last updated at Posted at 2022-02-12

初めに

久々のQiita。3本目を書いていこうと思います。皆様いかがお過ごしでしょうか。
さて、今回のは無性にUbuntuARMを使いたくなったからインストールしてみた、ということで書いていこうと思います。
今回はこの記事のパクリスペクトです。こちらで見た内容を自分の中ですっきりさせるためにまとめてみました。
この記事を読むときには、参考サイト様の方も見ていってください。:D

参考サイト様

この記事の内容は以下のGithubリポジトリにまとめてあります。
記事の最後に使用手順をざっくりまとめますので、一度記事に目を通してからご利用ください。

UbuntuARMとは

名前の通りですが、UbuntuのARM版です。今回は18.04.5-aarch64でした。
なお20.04は未検証です。試した方がいらっしゃいましたらコメント欄に書き残していただけると幸いです。

筆者の環境

・Ubuntu20.04-x86_64
・Core2Quad Q9550
・Mem8G

検証用マシンなのでcore2世代の子ですが頑張ってくれてます。
OSはUbuntu 20.04 or 18.04推奨です。

やっと構築に入ろうと思います。

最初に、作業ディレクトリを用意し、入っておきます。
不要になったらディレクトリごと削除すればOKです。

$ cd
$ mkdir UbuntuARM
$ cd UbuntuARM

必要なパッケージのインストールです。

$ sudo apt install qemu-system-arm
$ sudo apt install cloud-image-utils

次に、UbuntuARM(cloud image版)本体のイメージとEFIをwgetでダウンロードします。
UbuntuARM本体は名前が長いのでダウンロードと同時にRenameします。

$ wget -O ubuntuARM.img http://ubuntutym2.u-toyama.ac.jp/cloud-images/releases/18.04/release/ubuntu-18.04-server-cloudimg-arm64.img
$ wget https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd

EFIをイメージ化します。

$ dd if=/dev/zero of=flash0.img bs=1M count=64
$ dd if=QEMU_EFI.fd of=flash0.img conv=notrunc
$ dd if=/dev/zero of=flash1.img bs=1M count=64

GUIの無いサーバー版の為cloudinitが使用可能です。user,password等を設定しましょう。
初回起動時に読み込んで自動的に設定してくれます。
(この二行を書くのに暫く以下のサイトとにらめっこしてました)

$ cat >cloud.txt <<EOF
> #cloud-config
> user: [ユーザー名]
> password: [パスワード]
> chpasswd: { expire: False }
> ssh_pwauth: True
> EOF
$ cloud-localds --disk-format qcow2 cloud.img cloud.txt

さあ、これで準備が整いました。
参考サイト様ではここでimagefileをバックアップしていました。(任意)

$ cp Ubuntu_Image.img Ubuntu_Image.old

起動する

早速起動と行きましょう。
以下のシェルスクリプトをstart.shとして保存してください。
メモリは任意で変更してください。

start.sh
$ qemu-system-aarch64 -m 4096 -smp 4 -cpu cortex-a57 -M virt -nographic \
  -pflash flash0.img \
  -pflash flash1.img \
  -drive if=none,file=ubuntuARM.img,id=hd0 \
  -device virtio-blk-device,drive=hd0 \
  -drive if=none,file=cloud.img,id=clouds \
  -device virtio-blk-device,drive=cloud
$ chmod +x ./start.sh
$ ./start.sh

ターミナル内でCUIでVMが起動します。まれにユーザーネーム入力画面が出た状態で起動プロセスの出力が覆いかぶさってきて画面がごちゃごちゃになることがあります。その時は一度何も入力せずenterを押すと再度ログインのプロンプトが出てきます。

警告: 初回起動は時間がかかることがあります。

本家の記事にはsshに関することが書かれていますが、今回は不要(と書いて面倒と読む)なので省略します。
いかがでしょうか。QemuでUbuntuARMが動いています。
ちなみに、筆者の環境では初回起動直後の状態で370MB程度のディスク使用量、アプデ後に1.6GB程度でした。

Github版について

ここまでの内容を一つのシェルスクリプトにまとめ、手順を簡略化したものを以下のgithubリポジトリにまとめてあります。

ZIPとしてダウンロードするか、git clone後に以下の手順で導入してください。
細心の注意を払って書いていますが、万が一何かあったときの責任はとれませんので、自己責任で使ってみてください。
mkvm.shを起動すると、UbuntuARMのuser名とpasswordを入力するように求められるので、ご希望の内容を入力してください。
導入後は./start.shで実行できます。

cd ARMUbuntuGit
chmod +x mkvm.sh
./mkvm.sh

最後に

QEMUでUbuntuARMだぜうぇいってなったところで自分は気づきました。
「・・・あれ、使い道あんま無くない?」

お読みいただきありがとうございました。

3
4
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
3
4