MacOS X 10.14.2 (Mojave) 上で xhyve を利用して Ubuntu 18 を動かしたいのですが、まだ成功していません。一旦作業を終わらせるにあたり、これまでの作業を記録しておきます。
xhyve を Github から入手
xhyve を https://github.com/machyve/xhyve の記述に従って入手しました。
$ git clone https://github.com/machyve/xhyve.git
$ cd xhyve
$ xcodebuild
しかし下記のように起動できなかったので、build 結果を削除しました。
$ ./build/Release/xhyve -h
Killed: 9
$ sudo ./build/Release/xhyve -h
Killed: 9
$ xcodebuild clean
改めて単に「make」したところ起動に成功しました。以下ではこの xhyve を利用して作業します。
$ make
$ ./build/xhyve -h
Ubuntu 18 のインストール(失敗)
今回はサーバー用の Ubuntu 18.04.1 LTS をインストールしました。
今後の作業の参考用に、手順を shell script の形で記録します。path 等は環境依存、状況依存です。
(1) インストール用の ISO イメージから Linux カーネルと initrd ファイルを取り出しました。
#!/bin/sh # See "xhyve - Lightweight Virtualization on OS X Based on bhyve" # by Michael Steil on 2015-06-09 # at https://www.pagetable.com/?p=831 OSWORK_DIR=".." ISOIMAGE="$OSWORK_DIR/isoimages/ubuntu-18.04.1-server-amd64.iso" TMPIMAGE="ubuntu18-tmpvolume.iso" MOUNT_PATH="/Volumes/Ubuntu-Server 18" BOOT_DIR="boot" dd if=/dev/zero bs=2k count=1 of="$TMPIMAGE" dd if="$ISOIMAGE" bs=2k skip=1 >> "$TMPIMAGE" hdiutil attach "$TMPIMAGE" mkdir "$BOOT_DIR" cp -p "$MOUNT_PATH/install/vmlinuz" "$BOOT_DIR" cp -p "$MOUNT_PATH/install/initrd.gz" "$BOOT_DIR" umount "$MOUNT_PATH" rm "$TMPIMAGE"
(2) インストール先のディスク・イメージを作成しました。
#!/bin/sh STORAGE="storage.img" SIZE="32g" mkfile -n "$SIZE" "$STORAGE"
(3) このディスク・イメージに Ubuntu 18 のインストールを試みます。
#!/bin/sh -x OSWORK_DIR=".." XHYVE="$OSWORK_DIR/xhyve/build/xhyve" ISOIMAGE="$OSWORK_DIR/isoimages/ubuntu-18.04.1-server-amd64.iso" STORAGE="storage.img" KERNEL="boot/vmlinuz" INITRD="boot/initrd.gz" CMDLINE="earlyprintk=serial console=ttyS0 acpi=off" $XHYVE \ -A \ -m 2G \ -c 2 \ -s 0:0,hostbridge \ -s 2:0,virtio-net \ -s 3:0,ahci-cd,"$ISOIMAGE" \ -s 4:0,virtio-blk,"$STORAGE" \ -s 31,lpc \ -l com1,stdio \ -f kexec,"$KERNEL","$INITRD","$CMDLINE"
カーネルの起動に若干時間がかかりますが(おそらくタイムアウト待ち)、インストーラーは立ち上がります。しかし途中で下記画面が表示されて、Ubuntu 18 をインストールすることができませんでした。
┌───────────────────┤ [!!] Detect and mount CD-ROM ├────────────────────┐ │ │ │ Your installation CD-ROM couldn't be mounted. This probably means │ │ that the CD-ROM was not in the drive. If so you can insert it and try │ │ again. │ │ │ │ Retry mounting the CD-ROM? │ │ │ │ <Yes> <No> │ │ │ └───────────────────────────────────────────────────────────────────────┘
CD-ROM 周りで、Ubuntu 18 の Linux カーネルと xhyve の相性が悪いものと思われます。
カーネルの configuration を変更することで問題回避できる範囲だとよいのですが…。あるいは、xhyve 側で簡単に問題回避できる範囲だとよいのですが…。
これが解決できないと、Linux on xhyve on MacOS X でカーネル遊びは難しそうです…
リンク集
- xhyve
- Hypervisor Framework (Apple)
- FreeBSD 12.0R on xhyve on MacOS X (法楽日記, 2019-01-04)
- Ubuntu 16 on xhyve on MacOS X (法楽日記, 2019-01-04)