Linux, 工作, 生活, 家人

ARM, Ubuntu

aarch64/ARM64 virt-install 啟動方法

雖然 ubuntu 有好用的 uvttool-libvirt 可以管理 cloud image , 但是似乎在 aarch64/ARM64 的平台上會有問題,
參數傳進去的時候似乎都會叫起來 VGA (cirrus), 但是 QEMU aarch64 上不支援 VGA (至少我用的不支援)
替代方案就是用 Virt Manager

安裝

$ sudo apt install virt-manager

跑一個簡單的 aarch64 image

$ sudo virt-install --name ubuntu-aarch64 --ram 2048 --arch aarch64 --boot uefi \
--disk /home/test/ubuntu.img,device=disk,bus=virtio \
--boot machine=virt,kernel=trusty-kernel,kernel_args="console=ttyAMA0 root=/dev/vda1 rw kgdboc=ttyAMA0,115200" \
--network bridge:virbr0 \
--os-type=linux \
--nographics \
--noautoconsole

ubuntu.img 是預先準備好的 ubuntu cloud image, 16.04 才可以支援比較多的 ARM64 平台.
14.04 支援的就少很多.

以上的參數比較重要的是 –noautoconsole, 這樣執行時就不會等在那邊, 會自動啟動.

–noautoconsole will install vm to libvirt without connect to console

—- 2017/03/10 —-
也可以用 virt-install + netboot install

先建立 image

$ qemu-img create -f qcow2 ./name.qcow2 30G 

再執行 virt-install , 目前測過 14.04 和 16.04 , 只有 16.04 成功, 猜想是 ports 那邊少了什麼東西

$ sudo virt-install --name ubuntu-aarch64 --ram 4096 --vcpus 4 --arch aarch64 \
        --boot uefi \
        --disk /home/richliu/disk.qcow2,device=disk,bus=virtio \
        --network bridge:virbr0 \
        --os-type=linux \
        --nographics \
        --location 'http://ports.ubuntu.com/dists/xenial/main/installer-arm64/'

這個參數可以順利安裝完, 然後再啟動系統就好

—- 2017/04/26 —-
如果是要裝 ARM64 Trusty-Update 的 Netboot kernel . 要動一下小技巧
1) 先在 host VM 上安裝 apache2
2) 到 /var/www/html 上 mirror http://ports.ubuntu.com/dists/trusty-updates/main/installer-arm64/current/images/ 下的
* MANIFEST
* MANIFEST.udebs
* xenial-generic/netboot =>

目錄要照著放, 所以會是

$ cd /var/www/html
$ mkdir -p dists/trusty-updates/main/installer-arm64/current/images/
$ cd dists/trusty-updates/main/installer-arm64/current/images/
$ lftp http://ports.ubuntu.com/dists/trusty-updates/main/installer-arm64/current/images/
[download blah blah]
$ mv xenial-generic/netboot .

然後 –location 指到 http://[ARM64 Server IP] 這樣就可以了, ex:

virt-install --name ubuntu-aarch64 --ram 8192 --vcpus 4 --arch aarch64 \
--boot uefi \
--disk /root/disk.qcow2,device=disk,bus=virtio \
--network bridge:virbr0,model=virtio \
--os-type=linux \
--nographics \
--location http://10.102.81.16/dists/trusty-updates/main/installer-arm64

對了, 這邊的 model=virtio 是強迫 network interface 不要用 vhost, 而是用 virtio

$ virsh start ubuntu-aarch64
$ virsh connect ubuntu-aarch64

ref.
KVM Guest virt-install examples with virtio drivers
Installing Virtual Machines with virt-install, plus copy pastable distro install one-liners

發佈留言