法楽日記

デジタル散策記&マインド探訪記

Ubuntu 18 on xhyve on MacOS X failed again

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カーネル遊びは難しそうです…


リンク集