Hasher/vm-run: различия между версиями
Vt (обсуждение | вклад) м (Форматирование) |
Vt (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
Иногда для запуска тестов в секции %check требуются рутовые привилегии, чтоб обойти это ограничение есть [https://lists.altlinux.org/pipermail/devel/2019-October/208635.html пакет '''rpm-build-vm''' (анонс)], который позволяет запустить произвольную команду под <tt>qemu</tt> с псевдо-рутовыми привилегиями | Иногда для запуска тестов в секции %check требуются рутовые привилегии, чтоб обойти это ограничение есть [https://lists.altlinux.org/pipermail/devel/2019-October/208635.html пакет '''rpm-build-vm''' (анонс)], который позволяет запустить произвольную команду под <tt>qemu</tt> с псевдо-рутовыми привилегиями. | ||
Пример, что | Он работает по аналогии с [https://lwn.net/Articles/584620/ <tt>virtme</tt>], <tt>eudyptula-boot</tt>, <tt>vido</tt> и т.д. — бутится Linux ядро, где корень файловой системы (то есть содержимое hasher) предоставлен внутрь <tt>qemu</tt> по протоколу 9p, а init запускает вашу команду. Нужно учитывать, что хоть внутри виртуализации у вас будут рутовые привилегии, но снаружи будет обычный юзер builder. Если для тестов надо создавать файлы под рутом, то можно использовать tmpfs или создать ext4 образ в файле и примонтировать его куда требуется. Код возврата вашей команды вернется из <tt>vm-run</tt>. | ||
Пример, что добавить в spec для обычного user space пакета (не ядра и не модуля ядра) для запуска <tt>make check</tt> под рутом: | |||
BuildRequires: rpm-build-vm | BuildRequires: rpm-build-vm | ||
Строка 8: | Строка 10: | ||
vm-run make check | vm-run make check | ||
Установка <tt>rpm-build-vm</tt> автоматически доставляет ядро <tt>kernel-image-un-def</tt> в hasher, что | Установка <tt>rpm-build-vm</tt> автоматически доставляет ядро <tt>kernel-image-un-def</tt> в hasher, что будет излишне при сборке ядра или ядерного модуля, поэтому есть пакет <tt>rpm-build-vm-run</tt>, который не имеет зависимостей к ядру. Пример использования для ядра или модуля: | ||
BuildRequires: rpm-build-vm-run | BuildRequires: rpm-build-vm-run | ||
Строка 14: | Строка 16: | ||
%check | %check | ||
vm-run "''команды запуска тестов...''" | vm-run "''команды запуска тестов...''" | ||
Справка по остальным возможностям: <tt>vm-run --help</tt>. | |||
=== Включение kvm === | === Включение kvm === |
Версия от 02:15, 3 апреля 2021
Иногда для запуска тестов в секции %check требуются рутовые привилегии, чтоб обойти это ограничение есть пакет rpm-build-vm (анонс), который позволяет запустить произвольную команду под qemu с псевдо-рутовыми привилегиями.
Он работает по аналогии с virtme, eudyptula-boot, vido и т.д. — бутится Linux ядро, где корень файловой системы (то есть содержимое hasher) предоставлен внутрь qemu по протоколу 9p, а init запускает вашу команду. Нужно учитывать, что хоть внутри виртуализации у вас будут рутовые привилегии, но снаружи будет обычный юзер builder. Если для тестов надо создавать файлы под рутом, то можно использовать tmpfs или создать ext4 образ в файле и примонтировать его куда требуется. Код возврата вашей команды вернется из vm-run.
Пример, что добавить в 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 "команды запуска тестов..."
Справка по остальным возможностям: vm-run --help.
Включение kvm
Для ускорения работы тестов полезно настроить kvm в hasher. См. Hasher/FAQ: Как запустить в хэшере qemu с поддержкой kvm. Поддержка kvm есть на всех основых архитектурах, кроме armh.