Я боролся с qemu и virt-install, но безуспешно, и теперь я полностью застрял с бесполезным сообщением об ошибке, которое не приводит меня ни к чему.
ПЕРВОЕ, некоторая необходимая конфигурация системы:
Базовая операционная система — Ubuntu Server 20.04 LTS. Без среды рабочего стола. Операционная система виртуальной машины — Ubuntu Server 18.04 LTS. Без среды рабочего стола.
У меня есть LVM объемом 60 ГБ, /dragonode
который я собираюсь использовать в качестве основного тома хранения для этой виртуальной машины:
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-адреспрямо со страницы руководства для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/ - Я загрузил установочный ISO-образ непосредственно из Ubuntu и попытался указать на него с помощью
--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)
Я настолько не в состоянии решить эту проблему самостоятельно, что мне отчаянно нужна помощь, чтобы запустить виртуальную машину.
Настройка виртуальной машины, которую я собираюсь реализовать:
- ВМ на пути
/dragonode/dragonode.qcow2
- ОС виртуальной машины: Ubuntu 18.04 LTS, без графики
- Привяжите виртуальный сетевой интерфейс виртуальной машины к
br0
- Предоставьте IP-адрес 192.168.1.144, чтобы я мог немедленно подключиться к нему по ssh
- Остальное должно быть понятно из оригинальной команды.
решение1
Я использую толькоРаздел руководства Ubuntu Server по virt-installв качестве справки. Также, графика необходима для выполнения фактической установки, которая может быть через VNC. Используя метод ISO, с уже загруженным iso и в текущем каталоге, вот предлагаемая команда (предполагается, что она может получить IP-адрес от DHCP хостовой сети):
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