Как я задолбался с тяжелыми виртуалками в кафе и написал свой портативный Ubuntu-лаунчер на Python

Привет, Последнее время мне часто приходится кодить и тестировать скрипты «на весу» сидя в кафе или перемещаясь с ноутбуком по делам. И каждый раз разворачивать громоздкие гипервизоры вроде VirtualBox, которые жрут гигабайты дискового пространства и требуют ковыряния в BIOS/UEFI ради виртуализации, становилось настоящей болью.

Хотелось чего-то простого: чтобы папка с изолированным Linux-окружением лежала прямо на флешке, а для запуска хватало одного клика. Готовых удобных и легких решений под Windows я не нашел, поэтому решил написать свой велосипед. Погнал рассказывать, что из этого получилось и как это устроено под капотом.

арихитектура и стек За основу проекта я взял два мощных инструмента:

  1. QEMU - как надежный и шустрый эмулятор, способный крутить полноценную Ubuntu без лишнего мусора в системе.
  2. PYTHON - как клей, который объединяет всё это в единый интерфейс.

Для графической оболочки я использовал библиотеку customtinker, чтобы интерфейс выглядел современно, темно и стильно (в стиле крутых терминальных утилит), а не как поделка из 2000-х на стандартном tinker.

как это работет изнутри Вся магия упакована в единый исполняемый файл main.exe (плюс папка с QEMU и виртуальным диском .qcow2).

никах консольных окон: Когда пользователь нажимает кнопку «Launch», скрипт на Python берет на себя всю грязную работу - он запускает процессы через subprocess, но при этом полностью глушит и скрывает всплывающие черные окна консоли QEMU.

ускорение WHPX: Чтобы эмулятор не тормозил, программа автоматически задействует Windows Hypervisor Platform (WHPX), позволяя виртуальной машине работать на аппаратном уровне процессора.

В итоге получается чистая портативность: закинул всю папку на переносной диск или флешку, воткнул в любой чужой ноутбук под Windows, дважды кликнул на main.py - и через несколько секунд у тебя полноценный рабочий стол Ubuntu.

Открытый исходный код Проект полностью открытый (Open-Source). Если вам интересно посмотреть, как организована структура кода, или хочется покритиковать мои решения, милости прошу в репозиторий: 👉 GitHub: [https://github.com/Teeth-ai/UbuntuLauncher](https://github.com/Teeth-ai/UbuntuLauncher)

Буду рад здоровой критике в комментариях!

11