В давні часи смартфон бренду Apple мав дуже малу функціональність. Навіть завантажити файл через Safari було неможливо. Популярний тоді Jailbreak дозволяв вирішити ці «дитячі» проблеми. Через це багато хто мріяв встановити звичну операційну систему Windows замість неповноцінної iOS. Минулого року Apple дозволила встановлювати емулятори, через що під виглядом «ігрової платформи» вийшов застосунок UTM SE. Сьогодні подивимось на її можливості для запуску Windows та поговоримо про саму емуляцію.
Емуляція — процес запуску однієї апаратної платформи чи операційної системи всередині іншої. Завдяки цьому досягається запуск застосунків, які були створені всередині одного апаратно-програмного середовища, без потреби мати фізичне обладнання або встановлення другої системи. Наприклад, запуск кількох версій Windows та Linux одночасно.
У звʼязку з великою кількістю випущених архітектур (ARM64, x86_64), процесорів (MIPS для PSP), операційних систем (Windows, Android, iOS, Debian, Ubuntu) необхідно мати можливість їх встановлювати та запускати. Існує аж три варіанти емуляції: Повна емуляція (Full Emulation), Віртуалізація (Virtualisation) та Інтерпретація API (API Emulation).
Під час Повної емуляції відбувається відтворення апаратної архітектури та ОС на програмному рівні. Ви правильно могли здогадатися — здійснюється емуляція роботи процесора, відеокарти, памʼяті, аудіо, пристроїв вводу/виводу тощо. Якщо дуже коротко описати цей процес: спочатку відбувається емуляція апаратної та софтової частини, а вже на їхній основі відбувається запуск програмного коду програм.
Застосунки, що її використовують: DOXBox, QEMU в режимі повної емуляції, PPSSPP, PCSX2 (емуляція Sony PlayStation 2).
Очевидними перевагами та мінусами такого підходу стають:
Для подолання проблеми низької продуктивності розробники застосовують різні «хитрості». У тому ж PPSSPP застосовується JIT-компіляція (Just-In-Time) — блоки машинного коду призначені для CPU PSP перетворюються у код, що розуміє та оброблює CPU користувача. Динамічна перекомпіляція (Dynarec/DBT) розширює можливості JIT завдяки кешуванню повторно запущених блоків коду. Застосовується у таких емуляторах як Dolphin, PCSX2 та RPCS3. Перший застосовується для запуску ігор від GameCube та Wii, а останні два — Sony Playstation 2 та Playstation 3 відповідно.
Скоріше за все, Повну емуляцію зараз майже не зустрінеш, оскільки краще застосувати інші методи емуляції. Вони більше оптимізовані та дозволяють не витрачати значний час на якісь елементарні дії.
Перейдемо до Віртуалізації, яку використовують в таких відомих застосунках, як VirtualBox, VMware Workstation чи Parallels. Ця технологія дозволяє створювати віртуальні копії операційних систем, серверів, дисків або мереж на одному реальному пристрої. Якщо по простому: на одному вашому ПК може бути багато різних конфігурацій різних систем.
При бажанні стати розробником ПЗ, вам доведеться мати декілька чи навіть з десяток віртуальних машин.
Схематично, принцип роботи Віртуалізації виглядає досить просто: користувач запускає одне спеціалізоване програмне забезпечення, яке називається Гіпервізор (Hypervisor), для створення, налаштування та запуску Віртуальних машин (VM, Virtual Machine). Такий «гостьовий ПК», як у випадку з Повною емуляцією, має свою попередньо виділену процесорну, графічну підсистему та памʼять.
Розглянемо переваги та недоліки Віртуалізації. В основному, отримуємо більше плюсів для звичайного та професійного користування. А саме:
В загальному висновку, ці два види емуляції за ці роки настільки сильно обʼєдналися в одне ціле, що важко визначити кордони початку Повної емуляції, а де — Віртуалізації.
Інтерпретація API доповнює попередні два види емуляції. Вона дозволяє перехоплювати виклики від API (Application Programming Interface; Прикладний програмний інтерфейс) з однієї системи, обробити їх у такому вигляді, щоб API другої платформи змогло працювати з ним. Приклади API, які застосовують для розробки ігор: OpenGL, DirectX, Vulcan. А для геймерів на Linux чи mасOS: Wine та CrossOver.
Наведемо зрозумілі переваги та недоліки такого рішення:
Особливо цей метод необхідний для SteamOS, завдяки якій ігри з Windows можна запускати на Linux. Зі зрозумілих причин, такий перехід не може бути швидким у часі: перетворення, тестування, дебаг, знову тести. Виходить таке своєрідне замкнуте коло. Проте, плоди старань увінчалися грандіозним успіхом — пристрої на SteamOS мають кращу продуктивність в іграх, ніж у «рідній» Windows 11. Про збільшений час автономної роботи також забувати не будемо.
Як вже було сказано ще на початку статті, спробуймо встановити ОС Windows 7 та Windows XP. Тестовий смартфон: iPhone 15, в якому стоїть ARM процесор A16 Bionic та 6 ГБ RAM. Але напряму встановити ОС Windows не вдасться з очевидних причин: сама Apple не дозволяє, немає ніяких оригінальних драйверів, обидві версії Windows не підтримують процесори ARM. Тому доведеться емулювати не тільки роботу обох ОС, а ще й апаратної платформи (Intel x86_64).
Для виконання такого непростого завдання використаємо застосунок UTM SE (посилання на AppStore). З опису та відкриття сторінки з вибором ОС побачимо, що можна емулювати не тільки Windows (XP, 7, 10, 11), а й ArchLinux, Debian, Fedora, Kali Linux та Ubuntu. Більшість з них мають підтримку ARM64 систем.
Тільки ніхто не забороняє встановити платформу х86_64 на AARM (Apple ARM). Для початку спробуймо встановити Windows XP, як одну з найвідоміших ОС. Вона вимагає мало памʼяті (для RAM чи ROM) та повинна добре працювати завдяки своєму віку. Знаходимо Windows XP (бажано 32-бітну) на просторах Інтернету (з ключем) у форматі ISO. Потім завантажуємо спеціальний файл з налаштуваннями віртуальної системи від самих розробників. При виборі диску необхідно знайти заздалегідь завантажену ОС з умовною назвою «WindowsXp.iso». Якщо ви качаєте відразу на смартфон, файл знайдете в папці Викачане, вміст якої можете побачити у застосунку Файли.
Якщо все вірно, піде інсталяція Windows XP. На початку, все здається досить добре. Проте з часом, починаєш розуміти один дуже неприємний момент — занадто довго. На смартфоні встановлення ОС зайняло близько 2 годин! Звісно, в ті далекі часи встановлення Windows могло зайняти більше часу. Ось тільки під час цього часу краще не користуватися смартфоном (буде ще довше). Блокувати смартфон також не можна, оскільки під час блокування iOS майже не виділяє ресурси на роботу у фоні. Блокування дисплея або Економію енергії також вимкніть.
Давно не бачились, старий друже BSOD
Після встановлення перед нами повноцінна Windows XP на смартфоні! Чиста система займає приблизно 2 ГБ памʼяті, що й не так багато. Загалом, користуватися сенсорним дисплеєм звично, як тачпадом. Хіба що клавіатурою не зручно користуватися. Для підключення до Інтернету потрібно встановити всі необхідні драйвери для віртуальних адаптерів. Тому потрібно вимкнути нашу нову-стару ОС. Інтернет працює через Bridge, NAT немає.
Всі необхідні драйвери можна отримати двома шляхами: завантажити самостійно з сайту або всередині програми UTM SE. Для другого варіанту необхідно натиснути та тримати віртуальну машину, щоб зʼявилося додаткове меню вибору. В ньому вибираємо Install Windows Guest Tools, а далі чекаємо завантаження та монтування у CD-привід. Якщо в ньому вже щось знаходиться, ви побачите помилку. Тому потрібно знайти цей диск, натиснути Eject та знову натиснути на Install Windows Guest Tools.
Далі ми вмикаємо Windows, шукаємо вмонтований диск та натискаємо на єдиний інсталятор на головному диску. Знову залишаємо смартфон ще на одну годину. Все, вітаю! Все що потрібно встановлено. Тепер можна заходити в Інтернет, застосовуючи WiFi. Через LTE чомусь не працює.
Перевіримо підключення миші та клавіатури до емульованої Windows XP. Для цього до iPhone 15 підʼєднаємо USB-Hub та вставимо наші Іnput пристрої. І так, вони дійсно працюють. Тільки клавіші на клавіатурі не збігаються. Наприклад, на 4 знаходиться Enter.
Проте у Windows XP існує одна велика проблема — повна втрата підтримки не тільки від Microsoft, а ще від великих корпорацій. Браузер Internet Explorer старий настільки, що не підтримує стандарт HTTPS. А завантажити та передати Firefox 52.9 з його підтримкою дуже важко. Ще й невідомо, скільки доведеться його встановлювати.
На жаль, Windows XP більше потрібна для згадування часів молодості. Емулювати її майже немає сенсу. Добре, що можна це зробити. Проте значно краще знайти запчастини та зібрати справжній Ностальгічний ПК.
Перейдемо до Windows 7. Особливо нічим створення віртуальної машини не відрізняється, окрім збільшених вимог до виділеної памʼяті: ROM з 8 ГБ (Windows XP) проти 20 ГБ (Windows 7), RAM з 512 МБ до 2 ГБ. Далі монтуємо диск з Windows та чекаємо встановлення. На цей раз час виявився ще довшим — понад три з половиною години! Але додатково слід встановити драйвери з Windows Guest Tools. На це пішло ще дві години. Миша, клавіатура та інтернет по WiFi працюють.
Windows 7 працює повільніше, ніж Windows XP. З невідомих мені причин, процесор майже завжди тримає 100% завантаженість. Збільшення RAM чи кількості процесорів (з 1 до 4) також відчутної швидкодії не додає. Факторів предостатньо: образ, неправильно налаштована машина, встановлення оновлень Windows тощо.
З цікавого, віртуальне «залізо» не підтримує Hardware Acceleration у Windows 7. Тоді як Windows XP її має. Теоретично, на неї можна встановити ігри тих років та спробувати запустити. Ось тільки щось підказує, що будь-який ПК за менші гроші (SteamDeck не згадуємо) з цим впорається краще.
А що з iPhone 15? Під час проведення усіх емуляцій став зрозумілий один момент — смартфон ставав дуже сильно гарячим. Він настільки сильно нагрівався, що міг перестати заряджатися від розетки з блоком живлення на 5 Вт. Явно спрацьовував захист від температур. Тому якщо є охота спробувати, не заряджайте смартфон під час емуляції. Зарядили до 80% чи 100% та відімкнули зарядний пристрій.
З однієї сторони, емуляція — необхідна річ для навчання в університеті, розробки застосунків чи хмарних обчисленнях. В користувацькому сегменті технологія також необхідна (грати в ігри). Ось тільки смартфони (особливо Apple) відмінні від старих ПК. Тому не дуже сильно пристосовані один до одного. Простіше мати окремий дешевий пристрій, ніж робити один «комбайн» All-in-One.