Инсталлируем 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
Комментарии