UCS - коллекция мануалов

Практика - критерий истины...

Инструменты пользователя

Инструменты сайта


linux:build_qubes

Сборка Qubes OS с нуля

Существует полностью автоматизированная система сборки для Qubes, которая загружает, создает и упаковывает все компоненты Qubes OS и в итоге выдает готовые к установке ISO-образы.

Общие принципы создания

Чтобы использовать его, следует использовать дистрибутив на основе rpm, например Fedora :-) , в котором следует обеспечить наличие следующих пакетов:

  • sudo
  • gpg
  • git
  • createrepo
  • rpm-build
  • make
  • wget
  • rpmdevtools
  • python-sh
  • dialog
  • rpm-sign
  • dpkg-dev
  • debootstrap
  • PyYAML

Их можно установить командой:

sudo dnf install gpg git createrepo rpm-build make wget rpmdevtools python-sh dialog rpm-sign dpkg-dev debootstrap PyYAML

Система сборки создает рабочую среду в chroot, поэтому на хост-системе не требуются другие пакеты. Все файлы, созданные и используюмые системой сборки, содержатся в каталоге qubes-builder. Полная сборка требует 25 ГБ свободного места, поэтому имейте это в виду, когда будете решать, где разместить данный каталог.

Система сборки настраивается с помощью файла builder.conf - нужно скопировать предоставленный по умолчанию builder.conf и изменить его по мере необходимости, например так:

cp example-configs/qubes-os-master.conf builder.conf
nano builder.conf

Данный файл имеет следующее содержание:

| builder.conf
# edit the builder.conf file and set the following variables:
NO_SIGN=1

Еще одно полезное требование состоит в том, что «sudo root» должен работать без каких-либо подсказок, который по умолчанию используется для большинства дистрибутивов (например, «sudo bash» предоставляет вам корневую оболочку без запроса пароля). Это важно, поскольку разработчику необходимо несколько раз переключиться на root, а затем вернуться к непривилегированному пользователю несколько раз в процессе сборки.

Кроме того, если создание с подписью включено (NO_SIGN не задано), необходимо отредактировать файл ~/.rpmmacro, чтобы он указывал на ключ GPG, используемый для подписания пакета, например:

nano ~/.rpmmacro
| .rpmmacro
%_signature gpg
%_gpg_path /home/user_name/.gnupg
%_gpg_name AC1BF9B3  # <-- Key ID used for signing

Также рекомендуется использовать пустую кодовую фразу для закрытого ключа, используемого для подписания. Вопреки распространенному мнению, это не влияет на безопасность вашего ключа или источников - если кто-то скомпрометировал вашу систему, то безопасность все равно нарушена, использовали вы дополнительную кодовую фразу для ключа или нет.

Итак, чтобы создать Qubes, вы должны:

  • импортировать мастер-ключ Qubes:
gpg --recv-keys 0xDDFA1A3E36879494
  • Идентифицировать его как доверенный, более подробно можно прочитать здесь
wget https://keys.qubes-os.org/keys/qubes-developers-keys.asc
gpg --import qubes-developers-keys.asc 
git clone git://github.com/QubesOS/qubes-builder.git qubes-builder 
cd qubes-builder
  • Верифицировать клонированный каталог:
git tag -v `git describe`
  • Скопировать builder.conf в рабочий каталог:
cp example-configs/qubes-os-master.conf builder.conf

и привести его содержание к виду:

nano builder.conf
| builder.conf
# edit the builder.conf file and set the following variables:
# NO_SIGN="1"
  • Загрузить все компоненты:
make get-sources
  • Собрать Qubes rpms (это займет несколько часов):
make qubes
  • И затем собрать Qubes ISO-образ:
make iso

И должен создаться новенький ISO.

Вы также можете создать каждый компонент отдельно. Например. скомпилировать только графический интерфейс виртуализации агента/демона:

make gui-daemon

Вы можете получить полный список команд из хелпа make. Для расширенного использования и подготовки источников Qubes Builder взгляните на каталог doc на странице QubesBuilder или QubesBuilderDetails.

Создание индивидуальной сборки Qubes OS

Ручная модификация источников

Если вы хотите каким-то образом изменить источники, вот некоторые основные шаги:

  • Загрузите qubes-builder, как описано выше (если вы хотите использовать ветви marmarek, вы также должны загрузить qubes-builder из своего репозитория - заменить «QubesOS» на «marmarek» в команде выше git clone)
  • Измените builder.conf (все тот же, что и выше), некоторые полезные дополнения:
    • Вы также можете установить GIT_PREFIX=«marmarek/qubes-» для использования репозитория Йоанны Рутковской вместо «mainstream» - он содержит более новые (но менее проверенные) версии пакетов.
  • Загрузка немодифицированных источников:
make get-sources
  • На этом шаге внесите свои изменения.
  • Команда сборки Qubes make qubes - это просто мета-цель, которая выстроит все необходимые компоненты в правильном порядке. Список компонентов настраивается в builder.conf. Вы также можете проверить текущее значение в make help или используя make build-info.
  • get-sources уже сделано, так что продолжайте со следующего. Вы можете пропустить sign-all, если вы отключили подписку.
make vmm-xen core-admin linux-kernel gui-daemon template desktop-linux-kde installer-qubes-os manager linux-dom0-updates
  • Создать установочный образ:
make iso

Управление ключами проверки кода

QubesBuilder по умолчанию проверяет подписанные теги на каждый загруженный код. Открытые ключи, используемые для этого, хранятся в keyrings/git. По умолчанию ключи разработчика Qubes импортируются автоматически, но если вам нужны дополнительные ключи (например, ваши собственные), вы можете добавить их, используя:

GNUPGHOME=$PWD/keyrings/git gpg --import /path/to/key.asc
GNUPGHOME=$PWD/keyrings/git gpg --edit-key ID_OF_JUST_IMPORTED_KEY

Здесь используйте команду «trust», чтобы глобально установить ключ или в конечном итоге свои доверенные ключи для QubesBuilder. Все ключи разработчика Qubes подписываются мастер-ключом цифровой подписи Qubes Master (который устанавливается в конечном счете как доверенный ключ), поэтому им автоматически доверяет QubesBuilder.

Если вы являетесь владельцем ключа «Master» и хотите отменить такую подпись, используйте команду редактирования gpg-ключей revsig и обновите ключ в qubes-developers-keys.asc - но ключ больше не будет доверенным (если только он не установлен вручную).


Luciferus 2017/07/18 02:58

linux/build_qubes.txt · Последнее изменение: Luciferus