Инсталлируем Linux на MacOS при помощи QEMU

В этой статье я хочу рассказать и показать как создать  и запускать виртуальную машину с Ubuntu 20l.10 при помощи QEMU на MacOs (BigSur).


Что такое QEMU

Quick EMUlator (QEMU) это эмулятор "железа" с открытым исходным кодом (лицензия GPLv2), который для ускорения работы виртуальных машин может использовать различные акселераторы. На Linux это KVM, который встроен в ядро операционной системы, На  MacOS - это HVF. На сайте QEMU утверждается, что производительность виртуальных машин на основе QEMU близка к производительности таких машин на физическом железе. Давате проверим :).

Если тексту с картинками вы предпочитаете видео, то вот мой обзор QEMU на YouTube.


Устанавливаем QEMU

Установить QEMU на MacOS можно разными способами. У меня стоит Homebrew, с его помощью я и установил QEMU 

brew install qemu

Проверить, установлен ли QEMU можно запросив версию программы. 

qemu-system-x86_64 –version 

Если установка закончилась успешно, то вы получите что-то вроде такого сообщения.

Дополнительное приседание на Big Sur

Идем дальше. Для корректной работы QEMU на Big Sur его надо  вначале "пропатчить".Для этого создайте файл entitlements.xml с таким вот содержимым

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

    <key>com.apple.security.hypervisor</key>

    <true/>

</dict>

</plist>


Далее надо подписать qemu-system-x86_64 этим файлом

codesign -s - --entitlements entitlements.xml --force /usr/local/bin/qemu-system-x86_64

Теперь qemu-system-x86_64 готова для работы на Big Sur


Создание виртуальной машины с Ubuntu 20.10

Теперь переходим к созданию виртуальной машины для Ubuntu. Для инсталляции Ubuntu на виртуальную машину потребуется ее дистрибутив в формате ISO,  который можно скачать с официального сайта. Предположим, что он у нас находится в директории qemu-ubunut20. Все последующие команды я буду выполнять из этой директории. 

Далее для инсталляции Ubuntu нам потребуется создать файл диска виртуальной машины, где Ubuntu будет установлена. Я буду использовать формат QCOW2 и создам файл на 15 Гб. Он не будет занимать сразу 15 Гб, он изначально будет значительно меньше однако его предел - 15 Гб. Это значение можно будет изменить позже. Для создания файла диска воспользуемся командой

qemu-img create -f qcow2 ubuntu-20.10-desktop-amd64.qcow2 15G


Установка Ubuntu

Как только файл диска готов можно запустить виртуальную машину с подключённым QCOW2 диском и ISO-образом Ubuntu вот такой вот командой

qemu-system-x86_64 \

    -machine type=q35,accel=hvf \

    -smp 2 \

    -hda ubuntu-20.10-desktop-amd64.qcow2 \

    -cdrom ./ubuntu-20.10-desktop-amd64.iso \

    -m 4G \

    -vga virtio \

    -usb \

    -device usb-tablet \

    -display default,show-cursor=on

Давайте разберем параметры этой команды

  • machine - Эмулируемая машина и тип акселератора. q35 - это один из последних типов машин, а HVF - это акселератор для MacOS.
  • smp - Число процессоров для виртуальной машины
  • m - Размер оперативной памяти для виртуальной машины
  • hda - Ссылка на файл диска
  • cdrom - Ссылка на ISO-файл
  • vga - Графическая карта
  • usb - Разрешает доступ к  USB-порту
  • device - Добавляем "usb-tablet" как устройство ввода, иначе мышь может не заработать :)
  • display -  Включаем отображение курсора мыши на экране. Отключено по умолчанию.

После загрузки виртуальной машины запустится инсталлятор Ubuntu. 

По окончанию инсталляции Ubuntu система предложит перезагрузиться. Вместо этого лучше закройте терминал с QEMU по Ctrl+C на MacOS. 


Запуск Ubuntu

Теперь для запуска виртуальной машины нам больше не нужен файл ISO-образа Ubuntu. По этому немного модифицируем команду запуска виртуальной машины, убрав из нее параметр cdrom. Команда для запуска достаточно объёмная, советую скопировать ее в sh-файл и хранить его в том же директории где и  файл виртуальной машины. Так будет удобнее запускать. Для этого создаем файл скрипта командой 

touch run.sh

Копируем содержимое в файл run.sh

qemu-system-x86_64 \

    -machine type=q35,accel=hvf \

    -smp 2 \

    -hda ubuntu-20.10-desktop-amd64.qcow2 \

    -m 4G \

    -vga virtio \

    -usb \

    -device usb-tablet \

    -display default,show-cursor=on


Далее надо сделать файл скрипта исполняемым

sudo chmod +x run.sh

Теперь можно запустить скрипт для старта виртуальной машины

./run.sh



Комментарии

Анонимный написал(а)…
Добрый день.Подскажите, а сеть работает ?
max написал(а)…
Добрый день , подскажите пожалуйста как сделать чтобы в гостевой ОС был звук?

Популярные сообщения из этого блога

Команды docker save/load, docker export/import – в чем отличие, как и когда ими пользоваться

Как узнать, кто заблокировал файл или папку

Как "заглянуть" внутрь запущенного докер-контейнера