LINUX.ORG.RU
решено ФорумTalks

Открыл себе открытие. Виртуалка в виртуалке на железных дисках.

 


1

2

Удивительно, как всё сошлось. Только сейчас дошло.

Оказывается, если у меня есть SSD с ESP+Windows и другой SSD с ESP+Linux(ы), то я ж могу тупо сразу две ОС загружать. )

Берём Windows хостом, и пробрасываем железные диски (один SSD с root'ами, второй HDD с home'ами) в VirtualBox. И.... всё! Оно прям сразу берёт и работает!

И чего бы ему, действительно, не работать?
Виртуальный EFI подхватывает /efi/EFI/BOOT/BOOTX64.EFI, который на самом деле systemd-boot (gummiboot). У него в loader/entries прописаны все те же UUID тех же разделов, которые и из железного EFI доступны.

Наверное и в обратную сторону получится, Linux как хост. Только диски наоборот пробрасывать.

Так вот зачем, оказывается, я так делал с двумя ESP на разных дисках в одной машине )
Заодно и третий монитор теперь совсем понятно зачем сегодня купил )

★★★★

Оказывается, если у меня есть SSD с ESP+Windows и другой SSD с ESP+Linux(ы), то я ж могу тупо сразу две ОС загружать.

«На третий день индеец Зоркий Глаз заметил дыру в стене».

Тащемта, с «bare metal» всегда можно было грузиться.

Korchevatel ★★★★★
()
Последнее исправление: Korchevatel (всего исправлений: 1)
Ответ на: комментарий от Korchevatel

Здрасте. С «bare metal» я так уже лет пять, наверное, живу в разных ОС.

Открыл себе возможность загружаться в свои же ОС, стоящие на «bare metal», без перезагрузки самого «bare metal».

Toxo2 ★★★★
() автор топика
Ответ на: комментарий от Toxo2

Открыл себе возможность загружаться в свои же ОС, стоящие на «bare metal», без перезагрузки самого «bare metal».

Об этом и говорю. «Стонадцать» лет как можно установить ОС на диск и грузиться в ВМ.

Korchevatel ★★★★★
()

Линуксу может и пофиг на твои два ESP, а вот Microsoft сказал так не делать - только один, там же где его ОС. И у ASUS UEFI с этим немного крышу сносит.

boowai ★★★★
()

Поздравляю. У меня в рабочем хосте сейчас четыре независимых диска со своими осями. Проксмокс, убунту и две венды. Штатно загружается проксмокс, который загружает убунту и две венды в виртуалках, но можно загрузить хост с любого диска.

Мультисит, ага. Три видяхи в машине. Одна под хост и две для виртуалок. Сокет sTRX4.

targitaj ★★★★★
()
Последнее исправление: targitaj (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid

Да, погорячился. Честной виртуализации внутри виртуализации, наверное, не получится на одном физическом CPU.

Вот контейнеры (docker) работают внутри.

Восторг в основном от того, что оказывается не обязательно насиловать железную машину перезагрузками, чтобы запустить один из шести Линуксов установленных на этом же железе.

Например, вот один из них SUSE Tumbleweed установлен. Последнее время я в него практически не захожу. Но поддерживать в более/менее актуальном состоянии хочу на всякий случай.
Раз в полгода перезагружаюсь в него только чтобы zypper dup его.

После этого открытия - и перегружаться-то не надо )

Всё-таки больше года без обновлений для rolling-release - опасное дело - можно и не распутать. Давеча хотел посмотреть в виртуальный Arch (лень было перезагружаться в настоящий, железный) - так выяснилось что я его не запускал с декабря 2018. И не смог победить накопившиеся обновления. Плюнул, пошел в железный.

boowai

Microsoft сказал так не делать - только один, там же где его ОС

Этого я не слышал и глазами не видел.

Видел глазами:

  • спецификация UEFI предписывает использовать первый попавшийся ESP раздел на каждом диске. Т.е. формально даже 1 esp на 1 диск - нет такого ограничения. Просто работать будет только тот, кто попадётся первым.
  • Windows пошёл ещё дальше - его установщик вообще не даёт возможности выбора esp. Будет использован тот, кто первым попадётся на любом диске. Если попадается подходящий раздел с линуксами и на другом диске - не вопрос, Windows встанет корнем на другой диск, а загрузчик пропишет на найденном. Крайне муторно его потом выковыривать.
  • Fedora и её Anaconda наотрез отказывались видеть в /dev/sdf1 esp. Собственно, с этого всё и началось. Как раз из-за Линуксов, которые так любят, когда всё по умолчанию на /dev/sda - покупал отдельный диск для них.

Последние два пункта - по состоянию на 2017 год примерно. Может уже что-то поменялось.

Toxo2 ★★★★
() автор топика
Последнее исправление: Toxo2 (всего исправлений: 1)
Ответ на: комментарий от targitaj

Поздравляю. У меня в рабочем хосте сейчас четыре независимых диска со своими осями.

Серьезное дело.

Я пока всё где-то между «баловство» / «ликбез» / «любопытство».

Последнюю неделю неожиданно приходится работу работать. Поэтому точно нужен Windows. Но и установленные на машине Линуксы бросать не хочется.

Toxo2 ★★★★
() автор топика

Вот если бы ты загрузил венду с SSD1, запустил на ней в виртуалке линукс с SSD2 а потом в линуксе запустил бы виртуалку с вендой с SSD1 - вот это был бы перидимонокль.

А то, что ты сделал, на линуксах ещё со времён досбокса, борща и qemu работает.

Stanson ★★★★★
()
Ответ на: комментарий от Toxo2

Честной виртуализации внутри виртуализации, наверное, не получится на одном физическом CPU.

Почему это? У меня один CPU, и это работает.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Эм... Думал, что это очевидно, но пошёл уточнять у Гугла )

Насколько я понял - должна быть поддержка VMCS Shadowing в самом CPU (vPro,Xeon и вроде Haswell++), плюс само средство виртуализации должно уметь это реализовывать. VirtualBox вряд ли в такие дебри полезет.

В общем, да, спасибо, интересно. Оказывается бывает аппаратная nested virtualization.

--------------

Попробовал в обратную сторону. Arch как хост + железные диски с Windows в госте. Тоже чудесно всё выглядит. Даже, пожалуй чудеснее. VirtualBox конечно же ругается на отсутствие аппаратной виртуализации внутри гостя. Это пока не интересно. Будет нужда - попробую более серьезные средства.

Toxo2 ★★★★
() автор топика
Ответ на: комментарий от Toxo2

VirtualBox вряд ли в такие дебри полезет.

С версии 6.0 умеет. Правда, на CPU от Intel эту галочку нельзя включить в настройках GUI, нужно из командной строки.

VBoxManage.exe modifyvm Linux --nested-hw-virt on

https://imgur.com/DCz0vaq

-- вот так на Windows делать, на Linux так же, но без .exe и не обязательно из директории с самим VBoxManage, если в $PATH есть (на Windows тоже можно в %Path% добавить).

А KVM в Linux этому уже давно научился.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 4)
Ответ на: комментарий от Vsevolod-linuxoid

нужно из командной строки

Да, вы правы. После

vboxmanage modifyvm "LinuxPassthrough" --nested-hw-virt on
действительно VB в госте замечает аппаратную поддержку виртуализации.
Хорошо, пусть будет. Может потом пригодится. Спасибо.

----------

Linux->Windows пока чудеснее, потому что вообще никаких ошибок не вижу.

Windows->Linux оно вроде тоже чудно работает. Если в dmesg на госте не смотреть.
Пока не получается победить lost async page write и прочие failed command: WRITE DMA. Кажется, какой-то фокус с SSD ещё должен быть.

Toxo2 ★★★★
() автор топика
Последнее исправление: Toxo2 (всего исправлений: 1)

Уже лет 10 так обычно ставлю линукс на железо без нюансов, когда какая-то ОС уже есть - пробрасываю хард в виртуалку и ставлю на него, потом ребутаю хост и донастраиваю уже полученную систему.

GPFault ★★
()
Ответ на: комментарий от Vsevolod-linuxoid

С версии 6.0 умеет.

Неделю назад в новом релизе упоминался прогресс:

Устранено зависание при запуске вложенных гостевых систем в режиме SMP на хостах с некоторыми процессорами Intel.

Выпуск VirtualBox 6.1.18 (20.01.2021)

gag ★★★★★
()
Ответ на: комментарий от Toxo2

Если в dmesg на госте не смотреть

Придумал сравнить. )

Вот dmesg ArchLinux с реального железа: https://pastebin.com/hdY6gRng

И ровно этот же Arch, запускается в виртуалке: https://pastebin.com/0dJxuZC1

Они ж... совсем разные )

Прям с первой строчки до последней - сложнее что-то похожее найти, чем разницу )

Toxo2 ★★★★
() автор топика
Ответ на: комментарий от Stanson

это тоже реально сделать с помощью Volume Shadow и снапшота (так как Volume Shadow - read only)

Rost ★★★★★
()
Последнее исправление: Rost (всего исправлений: 2)
Ответ на: комментарий от Toxo2

В общем, это что-то непобедимое, похоже, в VirtualBox.

В интернетах информации по поводу «failed command: READ FPDMA QUEUED» в VB много аж десятилетней давности. Решений нет.

Строго говоря vboxmanage internalcommands createrawvmdk help совершенно честно предупреждает:

WARNING: This is a development tool and shall only be used to analyse
         problems. It is completely unsupported and will change in
         incompatible ways without warning.

Не понял почему оно для любых дисков, хоть HDD, хоть SSD выдаёт

ddb.geometry.cylinders="16383"
ddb.geometry.heads="16"
ddb.geometry.sectors="63"
Просто закомментировал вообще эти строчки для SSD в его vmdk - ничего не поменялось. Ровно так же загружается и радует, пока в dmesg не посмотришь.

Ладно, на следующих выходных попробую с HyperV поиграть в эту игру.
Что-то страшновато от «incompatible ways without warning» с этим пробросом в VB.

Toxo2 ★★★★
() автор топика
Ответ на: комментарий от Toxo2

на следующих выходных попробую с HyperV

Не дотерпел до выходных.

Вроде заработало. С графикой вроде похуже, зато с дисками явно получше.

Из шести Линуксов на железном диске завелась сразу в полном объеме только Ubuntu с Gnome. Совсем ни одной кнопки не пришлось нажимать - как заводилась на железе, так и в HV завелась.

Для Arch пришлось руками дописать модули (hv_storvsc и т.д.) для initrd в mkinitcpio.conf и графику для XOrg установить отдельно. Теперь тоже загружается хоть real, хоть virtual. Красота.

И, наверное, надо предупредить людей - у меня-то ума не хватило догадаться, что Windows расценит свой запуск в VB как изменения оборудования и сбросит активацию ) Два дня пугала. Я аж диск с честно купленным 8.1 в коробке и её ключом нашёл на чердаке. Но не успел ввести - она сама переактивировалсь на третий день почему-то.

Toxo2 ★★★★
() автор топика
Ответ на: комментарий от targitaj

targitaj, а можно ещё ликбез?

Как я понял Proxmox это KVM. Ему не нужна поддержка SR-IOV на матплате? Или на вашей машине она есть?

Так-то все установленные на SSD Линуксы в итоге заработали. Некоторым (Void и Fedora), помимо вшивания драйверов в initrd, ещё и xorg.conf пришлось прописать Section Device и Section Screen для fbdev.

Но захотелось большего - хотел пробросить им и свою видеокарту AMD RX550, а Windows бы остался на встройке от Core i5. Но тут выясняется, что у меня материнская плата (!) не позволяет это сделать.

Для HyperV нужен DDA (Discrete Device Assignment), а ему нужен SR-IOV (Single Root Input/Output Virtualization) - а тут затык на затыке: и плата нужна особая, как я понял, и, говорят, в Windows10 это вообще невозможно.

KVM как-то умеет выковыривать устройства из материнской платы её не спрашивая? Или там всё-таки какая-то эмуляция виртуализации с прослойками абстракций?

Toxo2 ★★★★
() автор топика
Последнее исправление: Toxo2 (всего исправлений: 3)
Ответ на: комментарий от Toxo2

Вдруг ещё кому интересно.

1) Нашел машину с поддержкой SR-IOV (ASUS PRIME B450M-A с AMD Ryzen 5 PRO 4650G). Тоже вот повод понервничать. Нигде в документах не упоминается, что у неё оно есть. Пока в UEFI на зайдешь и глазами не увидишь. HyperV её признал, как подходящую. Да только именно мою RX550 не захотел пробрасывать. Не отвязывается она от PCI, как я понял.

2) Пара хороших ссылок на эту тему:
https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide...
https://www.reddit.com/r/Amd/comments/bmhje8/gpu_passthrough_working_great_on...

3) Забавно - Solus Linux в принципе не поддерживает запуск под HyperV. Прям так в его .config к ядру и написано ) Даже модулей нет )

Пока в раздумьях - надоела мне эта игра, или всё-таки попробовать с KVM? Керосин на исходе, честно говоря. Судя по тем ссылкам на reddit - это прям сильно надо хотеть.

Toxo2 ★★★★
() автор топика
Последнее исправление: Toxo2 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.