私は qemu と virt-install と格闘しましたが、何の役にも立たず、まったく役に立たないエラー メッセージが表示されて、まったく行き詰まってしまいました。
まず、必要なシステム構成:
ベースメタル オペレーティング システムは Ubuntu Server 20.04 LTS です。デスクトップ環境はありません。VM オペレーティング システムは Ubuntu Server 18.04 LTS です。デスクトップ環境はありません。
/dragonode
この仮想マシンのプライマリ ストレージ ボリュームとして使用する予定の60 GB LVM があります。
calyodelphi@dragonweyr:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
[loop partitions omitted]
nvme0n1 259:0 0 477G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1G 0 part /boot
└─nvme0n1p3 259:3 0 475.4G 0 part
├─ubuntu--vg-ubuntu--lv 253:0 0 50G 0 lvm /
├─ubuntu--vg-dragonode--lv 253:1 0 60G 0 lvm /dragonode
└─ubuntu--vg-dragonhoard--lv 253:2 0 365.4G 0 lvm /dragonhoard
システムのメタル インターフェイスとして機能するブリッジを netplan で正常に構成しました。
calyodelphi@dragonweyr:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eno2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000
link/ether f8:75:a4:b5:ca:ba brd ff:ff:ff:ff:ff:ff
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether 94:e6:f7:36:91:d8 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether f8:75:a4:b5:ca:ba brd ff:ff:ff:ff:ff:ff
さて、私がまとめたコマンドと問題は次のとおりです。
calyodelphi@dragonweyr:~$ virt-install --name dragonode --ram=2048 --disk path=/dragonode/dragonode.qcow2,size=50,format=qcow2 --vcpus 1 --os-type linux --os-variant ubuntu18.04 --graphics none --network bridge:br0 --location 'http://archive.ubuntu.com/ubuntu/dists/bionic/main/binary-amd64/' --extra-args "console=tty0 console=ttyS0,115200n8 ip=192.168.1.144::192.168.1.1:255.255.255.0:dragonode.home:eth0:none"
ERROR Error validating install location: Could not find an installable distribution at 'http://archive.ubuntu.com/ubuntu/dists/bionic/main/binary-amd64/'
The location must be the root directory of an install tree.
See virt-install man page for various distro examples.
このコマンドのほとんどは、主にこのガイド少しだけ追加情報がありますこの例集(具体的にはリンク先のセクション)この役に立つRedHatドキュメント、また最初の記事の著者と直接メッセージを交換しました。
ただし、上記のコマンドを実行すると、役に立たない一般的なエラーが表示されます。
イライラさせられるのは、そのURLがのmanページから直接virt-install
引数定義では--location
:
-l, --location OPTIONS
Distribution tree installation source. virt-install can recognize certain distribution trees and fetches a bootable kernel/initrd pair to
launch the install.
--location allows things like --extra-args for kernel arguments, and using --initrd-inject. If you want to use those options with CDROM media,
you can pass the ISO to --location as well which works for some, but not all, CDROM media.
The "LOCATION" can take one of the following forms:
https://host/path
An HTTP server location containing an installable distribution image.
ftp://host/path
An FTP server location containing an installable distribution image.
ISO Probe the ISO and extract files using 'isoinfo'
DIRECTORY
Path to a local directory containing an installable distribution image. Note that the directory will not be accessible by the guest after
initial boot, so the OS installer will need another way to access the rest of the install media.
Some distro specific url samples:
Fedora/Red Hat Based
https://download.fedoraproject.org/pub/fedora/linux/releases/29/Server/x86_64/os
Debian
https://ftp.us.debian.org/debian/dists/stable/main/installer-amd64/
Ubuntu
https://us.archive.ubuntu.com/ubuntu/dists/wily/main/installer-amd64/
Suse
https://download.opensuse.org/pub/opensuse/distribution/leap/42.3/repo/oss/
Additionally, --location can take 'kernel' and 'initrd' sub options. These paths relative to the specified location URL/ISO that allow
selecting specific files for kernel/initrd within the install tree. This can be useful if virt-install/ libosinfo doesn't know where to find
the kernel in the specified --location.
For example, if you have an ISO that libosinfo doesn't know about called my-unknown.iso, with a kernel at 'kernel/fookernel' and initrd at
'kernel/fooinitrd', you can make this work with:
--location my-unknown.iso,kernel=kernel/fookernel,initrd=kernel/fooinitrd
問題のあるコマンドの複数のバリエーションを試しました:
- 異なる
--location
URLには以下が含まれますhttps://cloud-images.ubuntu.com/bionic/そしてhttp://ftp.at.debian.org/debian/dists/stable/main/installer-amd64/ - Ubuntuから直接インストールISOをダウンロードし、それをポイントしようとしました
--location
- 完全な画像を使用しようとしました(具体的には:https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img)
これらはすべて、以前に同じエラーに遭遇したことがあり、どのように解決したか思い出せない友人からの提案です。
ISOの試みは、これらの最後の数行をもたらした。思われた最初の成功のように:
mount: mounting /root/cdrom/casper/extras/modules.squashfs-generic on /root/lib/modules failed: No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
[a few more of these]
run-init: current directory on the same filesystem as the root: error 0
Target filesystem doesn't have requested /sbin/init.
[more run-init errors]
No init found. Try passing init= bootarg.
BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.3) built-in shell (ash)
Enter 'help' for a list of built-in commands.
(initramfs)
これを解決するには私の能力をはるかに超えているため、VM を実行するための支援が切実に必要です。
私が実現しようとしている VM セットアップ:
- パス上の VM
/dragonode/dragonode.qcow2
- VM OS: Ubuntu 18.04 LTS、グラフィックなし
- VMの仮想ネットワークインターフェースをバインドする
br0
- IPアドレス192.168.1.144をプロビジョニングして、すぐにSSH接続できるようにします。
- 残りは元のコマンドで説明不要です
答え1
私はUbuntu Serverguide の virt-install セクション参考として。また、実際のインストールを実行するにはグラフィックスが必要ですが、これは VNC 経由で実行できます。ISO 方式を使用する場合、iso が既にダウンロードされ、現在のディレクトリにある場合、次のコマンドが推奨されます (ホスト ネットワーク DHCP から IP アドレスを取得できることを前提としています)。
virt-install --name dragonode --ram 2048 \
--disk path=/dragonode/dragonode.img,bus=virtio,size=50 \
-c ubuntu-18.04.6-live-server-amd64.iso \
--network bridge=br0,model=virtio \
--video=vmvga --graphics vnc,listen=0.0.0.0 --noautoconsole -v --vcpus=1