Hasher/vm-run: различия между версиями
Vt (обсуждение | вклад) Нет описания правки |
Vt (обсуждение | вклад) |
||
Строка 24: | Строка 24: | ||
=== Включение kvm === | === Включение kvm === | ||
Для ускорения работы тестов полезно настроить kvm в hasher | Для ускорения работы тестов полезно настроить kvm в hasher. Поддержка kvm есть на всех основых архитектурах. | ||
'''A''': Помимо того, что в системе должен быть загружен соответствующий вашей архитектуре kvm модуль (например, kvm-intel), необходимо ещё выполнить следующие '''два''' [https://lists.altlinux.org/pipermail/devel/2019-October/208630.html условия]: | |||
* В {{path|/etc/hasher-priv/system}} нужно добавить <tt>/dev/kvm</tt> в <tt>allowed_devices=</tt>, например: | |||
allowed_mountpoints=/proc,/dev/pts,/dev/shm | |||
allowed_devices=/dev/kvm | |||
* В {{path|~/.hasher/config}} добавить <tt>/dev/kvm</tt> в <tt>known_mountpoints=</tt>, например: | |||
known_mountpoints=/proc,/dev/pts,/dev/kvm | |||
* Если нужно зайти в <tt>hasher</tt> интерактивно, то добавляется '''третье''' условие — при запуске <tt>hsh-shell</tt> нужно передать <tt>/dev/kvm</tt> в ключ <code>--mountpoints=</code>, пример: | |||
$ hsh-shell --mountpoints=/proc,/dev/kvm | |||
{{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}} |
Версия от 18:11, 23 апреля 2022
Иногда для запуска тестов в секции %check требуются рутовые привилегии, чтоб обойти это ограничение есть пакет rpm-build-vm (анонс), который позволяет запустить произвольную команду под qemu с псевдо-рутовыми привилегиями.
Он работает по аналогии с virtme, eudyptula-boot, vido и т.д. — бутится Linux ядро, где корень файловой системы (то есть содержимое hasher) предоставлен внутрь qemu по протоколу 9p, а init запускает вашу команду. Нужно учитывать, что хоть внутри виртуализации у вас будут рутовые привилегии, но снаружи будет обычный юзер builder. Если для тестов надо создавать файлы под рутом, то можно использовать tmpfs или создать ext4 образ в файле и примонтировать его куда требуется. Код возврата вашей команды вернется из vm-run.
Справка по возможностям: vm-run --help.
Пример, что добавить в spec для обычного user space пакета (не ядра и не модуля ядра) для запуска make check под рутом:
BuildRequires: rpm-build-vm ... %check vm-run make check
Установка rpm-build-vm автоматически доставляет ядро kernel-image-un-def в hasher, что будет излишне при сборке ядра или ядерного модуля, поэтому есть пакет rpm-build-vm-run, который не имеет зависимостей к ядру. Пример использования для ядра или модуля:
BuildRequires: rpm-build-vm-run ... %check vm-run "команды запуска тестов..."
Если тяжелые тесты имеет смысл запускать только под KVM и не запускать под эмуляцией, то следует использовать опцию --kvm=cond, она работает более надежно чем проверка [ -w /dev/kvm ]. В случае, если поддержка KVM не будет обнаружена vm-run --kvm=cond не запустит команду, но завершится успешно:
%check vm-run --kvm=cond make check
Включение kvm
Для ускорения работы тестов полезно настроить kvm в hasher. Поддержка kvm есть на всех основых архитектурах.
A: Помимо того, что в системе должен быть загружен соответствующий вашей архитектуре kvm модуль (например, kvm-intel), необходимо ещё выполнить следующие два условия:
- В /etc/hasher-priv/system нужно добавить /dev/kvm в allowed_devices=, например:
allowed_mountpoints=/proc,/dev/pts,/dev/shm allowed_devices=/dev/kvm
- В ~/.hasher/config добавить /dev/kvm в known_mountpoints=, например:
known_mountpoints=/proc,/dev/pts,/dev/kvm
- Если нужно зайти в hasher интерактивно, то добавляется третье условие — при запуске hsh-shell нужно передать /dev/kvm в ключ
--mountpoints=
, пример:
$ hsh-shell --mountpoints=/proc,/dev/kvm