2. Азы работы с QEMU. Пример установки операционной системы на виртуальный диск в режиме UEFIВсе бы ничего, да только ранее установленная нами в виртуальную машину Windows живет в так называемом режиме Legacy. А вот что делать, если хочется UEFI? Ubuntu богата разнообразием пакетов в своих репозиториях, и нам на помощь приходит пакет под названием ovmf:
sudo apt install ovmf
Скачается архив весом 1,1 Мб, распакуется в 4,2 Мб места на диске. Все. Все необходимое для обеспечения запуска операционных систем в режиме эмуляции UEFI у нас есть. Давайте же, не отходя от кассы, протестируем данную возможность.
Для примера выполним установку операционной системы Ubuntu 18.04 в режиме UEFI на виртуальную машину. Усложним себе жизнь желанием выполнить ручную разметку. Обойдемся без отдельного swap и не будем выносить
себе мозг /home на отдельный раздел, - выполним лишь создание esp-раздела и корневого раздела и пройдем весь процесс установки от начала и до конца. Постараюсь описать процесс в таких же подробностях, как это сделано было ранее по тексту для Windows 10. Приступим.
Нам понадобятся:
1. iso-образ дистрибутива операционной системы Ubuntu. Брать можно откуда угодно и любую версию. В рамках эксперимента я возьму актуальную на данный момент времени LTS-версию Ubuntu 18.04.2
отсюда (размер ISO-образа 1,9 Гб). Скачиваем себе этот ISO-образ в каталог /Загрузки текущего пользователя. Таким образом, после окончания данной операции будем иметь файл ~/Загрузки/ubuntu-18.04.2-desktop-amd64.iso
2. Не менее 10 Гб свободного места на диске. Для полноценной работы ОС следует пропорционально увеличить этот размер с учетом добавления тех пакетов, которые Вам потребуются для работы, но нам для теста хватит данного пространства за глаза (сразу после установки оказывается занятым 6,7 Гб дискового пространства в корневом разделе).
Процесс установкиШаг 1. Создадим виртуальную файловую систему. Физически, как и в предыдущем случае, она будет представлять собой большой файл (10 Гб), и создаем мы её абсолютно так же, как это делалось ранее по тексту:
qemu-img create /media/username/MyDrive/myUbuntuUEFI.img 10G
После выполнения этой команды виртуальный диск создан.
Шаг 2. Выполняем запуск виртуальной машины, с нашим свежесозданным виртуальным жестким диском myUbuntuUEF.img и виртуальным же cd-rom, в который вставлен ISO-образ Ubuntu 18.04.2, указываем дополнительным параметром -bios наш ovmf для обеспечения работы QEMU в режиме UEFI:
sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -bios /usr/share/ovmf/OVMF.fd -hda /media/username/MyDrive/myUbuntuUEFI.img -cdrom $HOME/Загрузки/ubuntu-18.04.2-desktop-amd64.iso
Обратите внимание как при этом видоизменилось окно запуска QEMU. Теперь мы видим логотип производителя UEFI. Прям по-настоящему. К тому же, если на этом логотипе нажать F2 - будет меню настроек UEFI. Совсем как на настоящей машине. Своеобразное, конечно, но все же меню...
Оттуда же можно выбрать с чего именно грузиться, - если есть такая необходимость.
После запуска GRUB2 выбираем "Try Ubuntu without install", - систему грузим в живом режиме:
В качестве задачи мы себе поставили разметку диска в ручном режиме - ею и будем заниматься. Нажимаем кнопку меню "Все приложения", в поиске вбиваем gparted, открываем программу GParted:
Видим свой неразмеченный диск на 10 Гб. Больше не видим ничего. На диске пока нет разметки. Создаем. Выбираем пункт меню Device -> Create Partition Table...
В качестве типа разметки выбираем GPT. Мы все-таки под UEFI диск размечаем... Нажимаем Apply:
Выделяем в основном окне неразмеченную область (unallocated), выбираем пункт меню Partition -> New:
Создаем в неразмеченной области ESP-раздел (тот самый, где будут храниться бинарные конфиги EFI для того, чтобы UEFI мог их оттуда подтянуть и выполнить загрузку). Файловая система fat32. Размер 100 Мб. Для удобства заполняем поля Partition name и Label текстом ESP (далее будет понятно что это за раздел и для чего он предназначен). Нажимаем кнопку "Add":
Вновь выделяем в основном окне неразмеченную область (unallocated), выбираем пункт меню Partition -> New:
В оставшемся пространстве (в нашем случае 10139 Мб) создаем раздел ext4, который будет являть собой корень файловой системы. Называем его Root. Нажимаем кнопку "Add":
В меню идем к пункту Edit -> Applay All Operations:
Нажимаем кнопку "Applay" в ответ на появившееся предупреждение о том, что редактирование разделов несет в себе потенциальный риск, - мы можем потерять данные (в нашем случае мы размечали пустой диск и терять на нем попросту нечего):
Появится полоса прогресса, GParted будет показывать нам ход выполнения операций. После успешного завершения всех операций нажимаем на кнопку "Close":
Далее в основном окне GParted выбираем раздел, который мы назвали ESP, кликаем по нему правой клавишей мышки, в контекстном меню ищем пункт Manage flags. В появившемся списке следует поставить галочку напротив ESP. После этого окно Gparted можно закрывать. Теперь переходим к установке системы. На рабочем столе запускаем ярлык установщика:
Появляется окно, на котором в списке слева следует сразу выбрать желаемый язык. Нас интересует русский:
Подтверждаем русскую раскладку клавиатуры путем нажатия на кнопку "Продолжить":
Задаем параметры установки: хотим выполнить обычную установку, загрузить все обновления во время установки и установить проприетарные кодеки и прочее third-party software... Отмечаем галочками нужные пункты и нажимаем "Продолжить":
Тип установки. Поскольку мы уже потратили время на разметку через GParted, то в данном случае выбираем "Другой вариант", - будем сами пояснять установщику что же мы хотим получить на выходе. Нажимаем "Продолжить":
Выбираем из списка первый из доступных нам разделов /dev/sda1. Нажимаем кнопку "Изменить":
В выпадаюшем списке "Использовать как" выбираем значение "Системный раздел EFI". Нажимаем кнопку "Ок":
Выбираем в списке раздел /dev/sda2. Снова нажимаем кнопку "Изменить":
В выпадающем списке "Использовать как" выбираем "Журналируемая файловая система Ext4". Точку монтирования задаем "/" (это root-раздел!). Форматирование не задействуем - у нас там и так пусто.
Бегло окидываем взглядом наш список: у /dev/sda1 тип efi, у /dev/sda2 тип ext4, а точка монтирования /. Все устраивает. Нажимаем "Установить сейчас":
Тоска-печаль! Файловая система не была помечена для форматирования, - заявляет нам установщик. Мысленно благодарим его за чуткость по отношению к себе, и нажимаем "Продолжить":
Установщик задаст еще один вопрос, предупредив, что все изменения собирается записать на диск sda. Диск sda для него - это наш файл-образ, который мы ранее по тексту создали. Не хай пишет! Для него и создавалось... Жмем "Продолжить":
Просят задать локацию. Я хоть и не в Москве, но меня Moscow вполне себе устраивает. Если Вам нужен иной часовой пояс - вводите свое значение, установщик будет подыскивать подходящее в базе и предлагать Вам. Оставляю Moscow, нажимаю "Продолжить":
Задаем имя пользователя, имя машины, логин пользователя и пароль учетной записи. Можно выставить вход в систему автоматически. Но в силу привычки я уже достаточно давно оставляю вход по вводу пароля:
Пошла установка:
После завершения всех операций Вам будет показано уведомление:
В данном случае удобнее и правильнее для нас, при работе с виртуальной машиной, нажать в нем кнопку "Продолжить знакомоство". Причина проста: будем именно что выключать виртуальную машину, а не перезагружать ее. Нам же нужно еще запустить ее без cdrom, дабы не химичить с загрузчиками, ибо boot-меню в качестве параметра QEMU мы не вызывали:
Выключаем машину. В правом верхнем углу рабочего стола видим значок выключения. Нажимаем по нему. Видим такое вот меню:
В этом меню выбираем снова значок выключения, и получаем на экране выбор из трех вариантов:
Выбираем в последнем Power Off. Виртуальная машина попытается отключиться и покажет нам такой вот экран:
В некоторых случаях на этом экране процесс замирает, ожидая реакции от пользователя. А пользователь замирает, ожидая реакции от процесса... Дабы разорвать этот порочный круг, вот два варианта что сделать чтобы корректно выключить виртуальную машину в данном случае:
1. Нажать комбинацию клавиш Ctrl+Alt+T. Изображенное выше окно превратится в консоль, пробежит несколько строчек, и окно QEMU закроется
2. Просто закрыть окно QEMU. В сущности, в данном случае нашей виртуальной системе мы не повредим - мы уже завершили установку, и виртуальный диск на данном этапе уже отмонтирован.
Теперь мы имеем настроенный образ диска с установленной на нем операционной системой Ubuntu 18.04.2 в режиме UEFI. Для запуска вводим в терминал:
sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -bios /usr/share/ovmf/OVMF.fd -hda /media/username/MyDrive/myUbuntuUEFI.img
Системой можно пользоваться. К примеру, можно установить в ней тот же QEMU
Рекурсия, как она есть...
Это очень краткий обзор, показывающий основы работы с QEMU в Ubuntu.
Кратко по типовым вопросам, которые возникают при использовании:
А) Как работать с каталогами, ведь виртуальная машина не видит мои файлы, которые у меня на ПК?
Есть такая беда. И по сути так оно даже как-то правильнее. Вместе с тем, если есть желание смотреть некие файлы - создайте какой-нибудь буферный каталог, и объявите его для виртуальной машины ее локальным диском:
mkdir $HOME/MyLocalDriveD #имя любое можно задать
Вызов qemu (ранее по тексту установленная windows):
sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -hda /media/username/MyDrive/myWindows.img -hdb fat:$HOME/MyLocalDriveD
Пойдет загрузка виртуальной машины. После загрузки Вы найдете в системе Windows еще один жесткий диск, на котором лежит содержимое каталога $HOME/MyLocalDriveD. Вы можете использовать эти файлы как угодно - удалять их, модернизировать их и т.п. Правда следует оговорить определенные
скользкие моменты:
1. Изменения в файловой системе, внесенные из виртуальной windows не будут видны в буферном каталоге из Вашей исходной системы Ubuntu до тех пор, пока Вы из linux его не перемонтируете. В простейшем случае это делается перезагрузкой. Если же каталог расположить на другом диске (не там, где у Вас корневой раздел) - то эта проблема обходится (другие разделы можно отмонтировать и смонтировать заново, если никакая работа с ними в это время не ведется - с той же флешкой этот маневр прокатывает).
2. В период работы виртуальной машины добавлять или изменять или переименовывать какие-либо файлы в этом каталоге $HOME/MyLocalDriveD будет нельзя. Не потому что система не даст - а потому что файлы можно повредить. Опасно это. И исход не предсказуем: то ли сохранятся изменения, внесенные из windows (гостевая система), то ли сохранятся изменения, внесенные из Ubuntu (хост-система), то ли и вовсе файлы будут повреждены.
Б) Есть ли вариант работать с флешкой?
Он есть. Сперва следует определить каким диском у нас стала флешка после вставки в порт в системе linux (делается ДО запуска виртуальной машины - просто отдать ей USB-порт в пользование нельзя). Для этого выполняем:
mount | grep /sd
после чего вставляем флешку, она у нас в системе автоматически монтируется, и мы снова выполняем
mount | grep /sd
Ищем "десять отличий" вывода второго выполнения от вывода первого. Находим некое устройство (например, /dev/sdd), которое у нас не встречалось в выводе первой команды, но появилось в выводе второй. Как только нашли - это и есть наша флешка. Можно на нее что-нибудь скинуть, что нам нужно в виртуальной машине. Теперь запускаем саму виртуальную машину, но "цепляем" к ней флешку в виде отдельного диска:
sudo qemu-system-x86_64 -m 2048 -enable-kvm -vga virtio -hda /media/username/MyDrive/myWindows.img -hdb /dev/sdd
После загрузки видим в системе свою флешку отдельным диском, и можем с ней работать. Вплоть до форматирования - что угодно с ней можно делать оттуда. Сохраняем на нее файлы, которые нам нужны, и выключаем виртуальную машину (здесь оговорюсь, что выключать следует всякий раз через завершение работы; здесь как с обычным компьютером, - если просто отрубить питание, установленная в виртуальной машине система может сломаться, и придется либо ее восстанавливать, либо выполнять установку заново). Как только виртуальная машина выключилась, и окно эмулятора закрылось - выполняем переподключение флешки (достаточно отмонтировать - смонтировать заново, в физическом извлечении нет необходимости). После того, как мы ее перемонтировали - на ней будут отображены все изменения, которые вносились в эмуляторе.