Установка Apline Linux в QEMU
Содержание
Предисловие
В этом туториале я описываю установку Alpine Linux в двух вариантах: в чистом QEMU из-под Asahi Linux и внутри оболочки UTM из-под macos. UTM под капотом использует всё тот же QEMU, но эта оболочка более дружелюбна к пользователю и является предпочтительным способом эмуляции в macos.
Подготовка эмулятора
Предже чем мы окунёмся в чудесный мир настройки Alpine Linux, нужно определиться, где у нас будут лежать файлы виртуальной машины. Я люблю, когда всё организовано и не воляется как попало. Для утилит разработки я использую директорию ~/Developer/Tools
:
Теперь нужно скачать свежую версию дистрибутива Alpine Linux, на момент написания этого поста 3.19.1:
QEMU (linux/macos)
В первой строке этого скрипта создаётся образ виртуальной машины, куда будет устанавливаться ОС. Рекомендую задать размер не менее 32 ГБ (аргумент 32G), т.к. Platform SDK занимает довольно много места, и если захочется собирать билды под другие версии ОС, то может понадобиться параллельная установка нескольких версий PSDK — тогда и 32 ГБ может оказаться мало.
Во второй строке запускаем эмулятор x86_64 с 4 ядрами и 4 ГБ оперативной памяти. Если у вас мощный компьютер с большим количеством ядер, можно попробовать увеличить выделяемое на эмулятор число, но значительного ускорения времени компиляции ждать не стоит (хотя одного ядра будет мало). Требования к оперативной памяти у сборочной системы не большие, так что 4 ГБ вполне хватает. В любом случае, это настраиваемый параметр, который можно будет подобрать индивидуально. В качестве жесткого диска указываем наш образ, а в в CD-ROM вписываем путь до образа дистрибутива Alpine Linux.
Если вы используете QEMU на macos, то в последнем аргументе запуска -display gtk
нужно вписать -display cocoa
, иначе эмулятор выдаст ошибку.
UTM (только macos)
Интерфейс утилиты интуитивно понятен всем, кто хоть раз пользовался виртуальными машинами (VirtualBox, Parallels, VM Ware и т.п.) Нужно нажать на кнопку создания виртуальной машины и следовать инструкциям. iso-файл с установщиком Alpine Linux используем в качестве CD-ROM, главное не забыть его убрать из настроек после установки. Также на последнем шаге создания виртуалки нужно поставить галочку “Показать настройки виртуальной машины” – там нам нужно зайти на вкладку System и изменить количество ядер CPU, т.к. по-умолчанию будет только одно ядро.
Установка Alpine Linux
После запуска эмулятора появится приглашение авторизации. Вводим имя пользователя root
и входим без пароля. Дальше выполняем команду:
и следуем инструкциям инсталлятора. На вопросы о клавиатуре и раскладке лучше писать us
, т.к. мы не будем особо пользоваться этой ОС и заморачиваться с настройкой раскладок и шрифтов нет большого смысла. Также будем считать, что был создан пользователь builder
(это имя будет использоваться в дальнейших скриптах). Пароль тоже лучше задать, т.к. Linux не любит пользователей без пароля. Часто вводить его не придётся, но лучше не делать его слишком сложным, чтобы случайно не забыть.
После завершения первичной установки инсталлятор попросит перезагрузить систему, но в нашем случае нужно её полность выключить командой halt
, чтобы снова загрузить уже без использования установочного диска.
QEMU
После установки закрываем окно QEMU и запускаем эмулятор уже без ISO-образа:
Как видите, в этой команде появилось несколько дополнительных аргументов:
-daemonize
запускает QEMU в режиме демона, не захватывая терминал.-net nic -net user,hostfwd=tcp::2222-:22
создаёт сетевой интерфейс и настраивает проброс порта 22 в 2222, чтобы избежать конфликта портов SSH.
UTM
Здесь всё гораздо проще: открываем настройки виртуальной машины и удаляем путь к iso-файлу из поля ввода CD-ROM. После этого запускаем виртуалку и убеждаемся, что всё работает.
Удалённый доступ к сборочной системе
Чтобы была возможность работать с эмулятором посредством скриптов, лучше сразу настроить удалённый доступ по SSH. Для этого создадим новый ключ:
При создании ключа лучше оставить пасс-фразу пустой, чтобы скрипт не прерывался на ввод пасс-фразы. Этот ключ будет использоваться только в доверенной среде, так что за его ненадёжность можно не переживать. Перенаправление портов актуально только для QEMU, при использовании UTM доступ осуществляется через виртуальную сеть по имени системы, так что там конфликта портов не будет. Для ещё большего удобства можно добавить в .ssh/config
конфигурацию нашего эмулятора:
2222 builder
~/.ssh/aurora
aurora_builder
Теперь к виртуалке можно подключиться по SSH:
Но на данном этапе наш эмулятор ещё не полностью готов к удалённому выполнению команд, так что продолжаем настройку. Для начала, нужно установить все необходимые пакеты:
# выходим из суперпользователя
Важно не забыть установить sudo
, т.к. без него PSDK не запустится. Просто сделать симлинк на doas
не поможет, увы. Финальный штрих - настройка сервиса sshd
, чтобы иметь возможность удалённой работы:
В файле конфигурации вносим следующие изменения:
yesno
Сохранить файл коонфигурации, выйти из редактора и перезапустить сервис:
Можно попробовать отключиться от эмулятора и подключиться заново, чтобы убедиться, что SSH работает и никаких запросов пароля не происходит.
Дальше можно переходить к установке PSDK.