Гостевая ОС KVM из раздела

[Edit]

Из справочной страницы GNU make:

Если параметр -f отсутствует, программа make будет искать файлы сборки GNUmakefile, makefile и Makefile в указанном порядке.

Передача аргументов возможна только в том случае, если у вас есть переменная, например, CFLAGS , определенная в вашем Makefile:

CC=gcc
CFLAGS=-g -O -Wall -Werror

all: foo

foo: foo.o
    $(CC) $(CFLAGS) $<

Здесь вы можете переопределить переменную с помощью

$ make CFLAGS="-ggdb -std=c99 -Wall -Werror"
gcc -ggdb -std=c99 -Wall -Werror   -c -o foo.o foo.c
gcc -ggdb -std=c99 -Wall -Werror foo.o

Однако легче отредактировать Makefile.

2
09.02.2019, 20:36
3 ответа

Я пытался запустить один и тот же диск Windows поочередно на оборудовании и внутри виртуальной машины, но всегда терпел неудачу, потому что устройства, представленные внутри виртуальной машины, отличались от фактического оборудования.

Но, опираясь на ваш пункт " какая-то другая идея ", позвольте мне объяснить, как я запускаю Linux и Windows на одной машине.

Windows работает на виртуальной машине KVM, но виртуальная -программа просмотра контролирует одну виртуальную консоль. Когда я переключаюсь на эту консоль, для всего мира это выглядит так, как будто это выделенная машина с Windows. И я могу независимо входить и выходить из Linux и Windows. (И с Cygwin , установленным в Windows, я могу sshмежду ними.)

Вот примерно шаги, которые я предпринял для его настройки. Я скачал.iso от Microsoft и купил лицензию отдельно. Вы можете переустановить существующую лицензию Windows.

sudo vgcreate vg0 /dev/sd...
sudo lvcreate --size 128G --name win10 vg0
sudo virt-install --name Windows --connect qemu:///system --virt-type kvm --disk path=/dev/vg0/win10,format=raw --cdrom '<path>/Win10_1607_English_x64.iso' --network bridge=br0 --video qxl --chanel spicevm,target_type=virtio --graphics spice,listen=0.0.0.0,port=5900 --os-variant win10 --memorybacking nosharepages=true --memory 2048 --vcpus 1

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

Команда virt-installавтоматически вызывает virt-viewerв первый раз, что приводит к запуску программы установки Windows 10. Единственный диск, который он видит, это виртуальный диск, который я создал и поместил в строку команды virt-install-.Затем я загружаю его впоследствии:

virsh --connect qemu:///system start Windows

Это запускает машину, но не просматривает вывод. Чтобы просмотреть вывод, я переключаюсь на неиспользуемую виртуальную консоль, нажимая, например. CTRLALTF6 и введите эту команду. Обратите внимание, что мы запускаем X-приложение(virt-viewer)непосредственно на X-сервере без оконного менеджера.

Переключатель -kпереводит виртуальную -программу просмотра в режим киоска , что эффективно скрывает тот факт, что программа действительно работает на виртуальной машине.

startx /usr/bin/virt-viewer -a -k -r -w -c qemu:///system Windows -- :6  -config CtrlAltBksp.conf -nolisten tcp -novtswitch

Файл CtrlAltBksp.confявляется необязательным. Он позволяет закрыть виртуальную -программу просмотра, нажав CTRLALTBackspace . Он должен быть помещен в /etc/X11/ на хосте или в другом каталоге, о котором xorgзнает. Вот он:

Section "ServerFlags"
        Option "DontZap" "false"
EndSection
Section "InputClass"
        Identifier "CTRL_ALT_BACKSPACE"
        MatchIsKeyboard "on"
        Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

Примечание. :Вам не нужно устанавливать spice и qxl, как это сделал я, но если вы это сделаете, лучше установить инструменты spice .

1
27.01.2020, 22:28

Я запускал несколько операционных систем, установленных для двойной -загрузки со стороны -и -с QEMU, расположенным на дисках, но я не думаю, что когда-либо была установлена ​​одна из них без загрузчика.

Если вы загружаетесь с UEFI, вам нужно будет использовать OVMF для QEMU, что означает, что все стало намного сложнее и выходит за рамки моих знаний.

Попробуйте установить и настроить GRUB в разделе Windows или загрузить загрузочный/установочный носитель Windows с помощью QEMU (, в противном случае Windows съест GRUB )и переустановит его, чтобы вернуть загрузчик Windows. Чтобы установить GRUB, используйте grub-install /dev/sdxY, смонтируйте файловую систему и запустите grub-mkconfig -o /mnt/grub/grub.cfg. Затем скопируйте то, что вам нужно, из существующего файла grub.cfg и отредактируйте его по мере необходимости --. Не стесняйтесь обращаться за помощью в этой теме.

Еще один вариант — изучить возможность простой установки загрузчика в Windows.

Ядерный вариант — это что-то вроде создания файла.img того же размера, что и ваш раздел Windows, с помощью qemu -img, переустановки Windows через QEMU в этот файл и копирования всего после определенного смещения из раздела (, вероятно, сразу после первых 1024 цилиндров или около того )в файл.img с dd.

Очень опасно продолжать использовать существующий GRUB для цепочки -загрузки в Windows, используя все ваши диски с опцией -только для чтения. См. комментарий @telcoM к OP;НЕ ЗАПУСКАЙТЕ ВИРТУАЛЬНУЮ МАШИНУ НА ДИСКЕ, -ИСПОЛЬЗУЕМОМ ХОСТИ! ФАЙЛОВАЯ СИСТЕМА БУДЕТ ПОВРЕЖДЕНА И НЕВОССТАНОВИМА!(ONLY, если он не используется для чтения -только гостем. )Попробуйте qemu-xxxxxxx -drive file=/dev/sdxX,format=raw,readonly.

Тем не менее, QEMU может запускать необработанный диск:

qemu-xxxxxxxx -drive file=/dev/sdxY,format=raw(см. man 1 qemuи найдите диск -для получения дополнительной информации ).

Если у вас нет большого опыта работы с QEMU/KVM,запуск и настройка его непосредственно из командной строки -может быть пугающей и разочаровывающей --рассмотрите интерфейс -для вашего здоровья.

0
27.01.2020, 22:28

Вы можете использоватьdmsetupиз инструментов с опцией--tableдля «создания» , напоминающего ваше /dev/sdaуказавtable file(Поиск «Формат таблицы»).

Вы можете использовать карты -только для чтения (или копии )некоторых разделов, таких как разделEFIBOOTи раздел / вместе с некоторыми zeroцелями для «замены» ваших разделов Linux -на этой карте. Просто убедитесь, что вы включили настоящий раздел Windows (с )в карту таблицы и в нужное место в таблице.

Я использовал это в прошлом для аналогичной попытки, и, скорее всего, это механизм, , который используется под капотом в Linux для создания пользовательских составных блочных устройств.

Убедитесь, что ни один из ваших разделов не монтируется и не используется более чем одной ОС одновременно.

0
27.01.2020, 22:28

Теги

Похожие вопросы