Привет, Хабр!

Не секрет, что MacOS хоть и достаточно удобная операционная система, но звезд с неба не хватает, если речь заходит о работе с отечественным ПО.

На самом деле все упирается в архитектуру: нативная установка x86 операционных систем на ARM Mac невозможна, а эмуляция ПО таких архитектур требует определенной экспертизы и довольно много времени, чтобы все не только запустилось, но и корректно заработало.

Если вы используете Mac как основной компьютер и заинтересованы в переходе на отечественные IT-решения или администрируете их, вы зашли по адресу.

Я опишу один из способов, как запустить и изучить Astra Linux SE 1.8 на ARM Mac. В результате ОС будет работать полностью автономно и на вашем компьютере.
Пройдем весь путь развертывания ОС, начиная с конфигурации шаблонов виртуальных машин в режиме эмуляции x86, и заканчивая настройкой проброса общей директории между гостевой ОС и MacOS.

Для запуска x86 ОС на Mac я выбрал UTM — бесплатное ПО для виртуализации и эмуляции. В отличие от более популярного, но платного Parallels Desktop, UTM лучше поддерживает эмуляцию x86 для практически любых ОС, в том числе Astra Linux. Он прост в использовании и имеет широкие возможности по настройке конфигурации виртуальных машин.

Отдельно хочу отметить, что для Mac существует ряд альтернатив, которые я собрал для сравнения в таблицу:

Название

Преимущества

Недостатки

Особенности

UTM

Поддерживает множество настроек для кастомизации аппаратной части виртуальных машин.

Не поддерживает 3D-ускорение.

Основан на QEMU, что позволяет эмулировать различные процессоры, включая старые архитектуры. Может запускать Astra Linux, Windows, MacOS и другие ОС, такие как Mac OS 9 и Sun Solaris 9.

Parallels Desktop

Поддерживает тесную интеграцию с ARM Windows вплоть до работы сканера отпечатка пальца в гостевой ОС. Предлагает виртуальную копию CPU и другого оборудования вашего Mac.

Платная лицензия, на ARM Mac ограниченная поддержка x86 (только с Ubuntu).

Предлагает виртуальную копию CPU и другого оборудования вашего Mac.

tart.run

Не требует установки на локальный компьютер. Подходит для пользователей, которым нужна гибкость и мобильность. Не требует установки на локальный компьютер.

Зависимость от интернет-соединения. Платная лицензия с различными тарифными планами.

Позволяет запускать Windows и другие ОС удаленно через облачный сервис.

VMware Player

Имеет мощные функции для управления виртуальными машинами.

Бесплатная версия для личного использования с ограничениями, платные версии для бизнеса.

Ориентирован больше на профессиональных пользователей.

VirtualBox

Бесплатный и открытый исходный код. Легковесный и простой в использовании.

Ограниченная поддержка 3D-графики, Ограниченные возможности для кастомизации.

Часто используется в образовательных и личных целях.

VMware Fusion

Поддерживает как виртуализацию, так и эмуляцию.

Бесплатная версия для личного использования с ограничениями, платные версии для бизнеса.

Имеет мощные функции и интеграцию с экосистемой VMware.

Подготовка к установке

Руководство, описанное далее в этой статье, будет применимо к любому Mac на базе чипов Apple Silicon.

Некоторые параметры, такие как CPU, RAM для виртуальных машин, я выбрал с учетом характеристик конкретно моего компьютера и их стоит корректировать в зависимости от конфигурации вашего.

Название модели

MacBook Pro

Чип

Apple M3 Max

Общее количество ядер

14 (10 производительности и 4 эффективности)

Память

36 ГБ

Установка и настройка UTM

Загружаем установочный пакет UTM с официального сайта.
На момент написания статьи последняя версия имеет номер 4.6.4.
Теперь создаем новую виртуальную машину, куда будет впоследствии установлена ОС Astra Linux SE 1.8.
Для этого нажимаем Cmd+N
В следующем окне нажимаем "Эмулировать":

Далее выбираем "Linux":

Тип загрузочного образа оставляем без изменений (не выбрано), а в разделе выбора ISO-образа выбираем загруженный образ Astra Linux 1.8:

Этап по настройке оборудования оставляем без изменений - это ключевой момент конфигурирования, поэтому его выполним позже целиком:

Размер дискового хранилища можно оставить по умолчанию - 64 ГБ, этого более чем достаточно для наших целей:

Каталог общего доступа пока не настраиваем:

Проверяем правильность настройки, придумываем имя создаваемой ВМ и нажимаем "Сохранить":

Теперь выполняем целиком тонкую настройку ВМ: нажимаем на созданную ВМ ПКМ и выбираем "Изменить":

Начинаем настройку сразу с раздела "Система".

Отдельно отмечу два параметра: "Принудительно включить многоядерность" и "Кэш JIT".
Для первого обязательно нужно установить чекбокс, иначе ВМ в такой конфигурации будет работать очень медленно.
Второй параметр с кэшем не стоит оставлять незаполненным, в противном случае это существенно скажется на производительности ВМ:

Чтобы с легкостью пробрасывать общие директории в гостевую ВМ, переходим в раздел "Общий доступ", меняем значения параметра "Режим совместного доступа к каталогам" на "SPICE WebDAV" и выбираем путь к каталогу, который мы будем использовать в качестве общего. Я выбрал директорию с дистрибутивами, в которой лежат два образа: Astra Linux и Termidesk. После установки ОС мы продолжим настройку проброса каталогов уже в гостевой ОС и завершим настройку общего доступа:

Последнее, что нужно сделать — в разделе "Дисплей" для параметра "Эмулируемая видеокарта" установить значение "virtio-vga". Опыт показал, что это лучший выбор как по стабильности системы, так и по адекватности работе ресайзинга окна с гостевой ВМ:

На этом настройка шаблона ВМ завершена.

Установка Astra Linux SE 1.8 в UTM

Теперь запускаем созданную ВМ, видим приветственный экран и начало загрузки окружения Astra Linux:

Так выглядит загрузка ЦП на этапе работы инсталлятора при выделенных 8 ядрах ЦПУ для данной ВМ:

После загрузки Live образа ОС сразу переходим к установке, выбираем базовый уровень защищенности и принимаем лицензию:

На этапе "Компоненты установки" полезно сразу добавить компонент "Средства удаленного подключения SSH":

Затем называем и защищаем паролем учетную запись администратора:

Осталось дождаться завершения установки ОС:

Нагрузка хоста на протяжении всей установки сохранялась стабильно на таком уровне:

При такой нагрузке я могу полноценно продолжать работу в MacOS, не ощущая дефицита производительности.После завершения установки выключаем ВМ, открываем настройки и очищаем путь до инсталлятора ОС:

Запускаем ВМ, выполняем вход в систему:

На рабочем столе нажимаем сочетание клавиш Option + T (Аналог Alt + T для гостевой ОС) и получаем терминал:

Стоит заметить, что буфер обмена между MacOS и Astra Linux будет работать без дополнительных манипуляций, поэтому вставлять текст, скопированный на хосте, можно сразу в терминал гостей ВМ командой Ctrl + Shift + V.
Затем открываем файл sources.list удобным редактором, например Vim:

sudo vim /etc/apt/sources.list

В нем нужно раскомментировать все репозитории, в результате файл должен иметь следующий вид:

Обновляем пакеты:

sudo apt update
sudo apt dist-upgrade -y

После этого завершаем настройку общего доступа к каталогам:

sudo apt install spice-vdagent spice-webdavd davfs2

Во время установки пакетов появится окно настройки davfs2, где нужно обязательно разрешить монитирование ресурсов непривилегированным пользователям:

Затем выключаем ВМ:

sudo shutdown now

и проверяем, что в параметрах ВМ раздела Общий доступ настройка "Режим совместного доступа к каталогам" не слетела и по-прежнему "SPICE WebDAV":

Запускаем ВМ и в терминале проверяем доступность общей директории:

curl http://127.0.0.1:9843/

В консоли должно быть указано содержимое общего каталога:

Мы видим, что два образа диска, которые я поместил в папку с дистрибутивами, успешно отображаются.
Теперь монтируем общий каталог в систему:

sudo mkdir /mnt/shared
sudo mount -t davfs -o noexec http://127.0.0.1:9843/ /mnt/shared/

В терминале появится предложение ввести имя пользователя и пароль для аутентификации. Оставляем оба этих параметра пустыми:

sudo bash -c 'cat >> /etc/davfs2/secrets << EOF
/mnt/shared anyuser anypass
EOF'

Настраиваем fstab для автоматического монтирования при запуске:

sudo bash -c 'cat >> /etc/fstab << EOF
http://127.0.0.1:9843/ /mnt/shared davfs _netdev,user 0 0
EOF'

Перезапускаем ВМ:

sudo shutdown -r now

И видим, что автоматическое монтирование выполняется и после перезапуска:

На этом базовая подготовка завершена. Система установлена, настроена и обновлена.Очень удобно и просто можно создавать клоны операционной системы для разного рода экспериментов: для этого в главном окне UTM кликаем ПКМ по нашей конфигурации и выбираем "Клонировать":

Оптимизация и дополнительные настройки

Несмотря на то что при использовании такой инсталляции ей было выделено больше половины ресурсов железа хоста, я не ощутил дефицита производительности в MacOS: здесь важно не переусердствовать и обращать внимание на количество ядер "производительности", потому что, как показывает опыт, жертва ядер "эффективности" заметного прироста для гостевой ВМ не даст, но окажет негативное влияние на стабильность работы хоста. 
Описанное в статье руководство открывает действительно большие возможности для экспериментов: российские операционные системы на сегодняшний день мало изучены на подобных стендах.

Обобщая рекомендации по CPU: при проведении экспериментов точно не стоит выделять гостевой ВМ больше 80% от ресурсов вашего хоста, иначе это приведет к общей деградации производительности.
Впрочем, простор для творчества остается очень широким.

Для мониторинга нагрузки я использовал встроенные инструменты MacOS - Мониторинг системы.

В случае, если вы планируете работать с ВМ через терминал Mac по SSH, я рекомендую в параметрах ВМ удалить устройство Дисплей. В результате ВМ будет запускаться так, как будто вы не используете видеоустройство, но доступность по SSH при этом сохранится.

Заключение

Инсталляция, которую мы получили, позволяет проверять почти любой сценарий использования ОС Astra Linux, в том числе в качестве платформы для развертывания прикладного ПО.

Конечно, эмуляция x86 архитектуры значительно уступает по производительности нативному режиму работы. Но цель этой статьи заключается в том, чтобы дать возможность (даже в такой специфической для x86 среде) изучить и попробовать полноценное работающее решение локально на своем компьютере и с минимальными затратами по ресурсам.

Ресурсы и документация

Ссылки для загрузки/запроса дистрибутивов: