Bug 41731

Summary: расширить возможности vm для работы с устройствами
Product: Sisyphus Reporter: Anton Farygin <rider>
Component: rpm-build-vmAssignee: Vitaly Chikunov <vt>
Status: NEW --- QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P5 CC: andy, rider, vt
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Anton Farygin 2022-01-18 12:33:41 MSK
Я попробовал прикрутить vm-run для unit тестов btrfs и в целом много что работает, но есть некоторые моменты, которые не получается проверять при запуске виртуальной машины без возможности записи в корневую файловую систему.

Например, из-за отсутствия запущенного udev в vm не работает dmsetup для thin-pool.

Или из-за невозможности выполнять mknod в произвольном каталоге - тест на создание файловой системы с устройствами из каталого.

Есть предложение подумать в сторону запуска vm с overlayfs, когда у псевдо-рута vm появляется возможность выполнять запись в overlay, а не в смонтированную в vm файловую систему.

Возможно, overlay нужен только для тех каталогов, которые недоступны для записи пользователю builder из hasher.
Comment 1 Andrew Vasilyev 2022-01-18 16:11:51 MSK
+1
В crun и ravada некоторые тесты тоже не проходят из-за невозможности писать в корневую FS.
Comment 2 Anton Farygin 2022-01-18 16:41:21 MSK
Иногда мне помогает запуск fakeroot внутри vm, но, к сожалению, настоящие устройства и файлы через это не делаются.
Comment 3 Vitaly Chikunov 2022-01-18 16:48:44 MSK
Это btrfs-progs? Как лучше воспроизвести тесты если я захочу поэкспериментировать?
Comment 4 Anton Farygin 2022-01-18 23:17:14 MSK
Я отправил задание #293721 с btrfs-progs с включенными тестами.
Эту же версию выложил к себе в git:
https://git.altlinux.org/people/rider/packages/?p=btrfs-progs.git;a=commit;h=b8554864a4784cbe7ab193287c6b7e42e9fa0fdf

В specfile удаляются тесты, которые не проходят.

Можно запустить сборку в hasher, потом прервать, зайти внутрь чрута, собрать как rpmbuild -bc btrfs-progs.spec

Потом перейти в ~/RPM/BUILD/btrfs-progs-5.16/tests/

И запустить, например:
vm-run --sbin --udevd TEST=001\* ./convert-tests.sh
или
vm-run --sbin --udevd TEST=009\* ./mkfs-tests.sh
Comment 5 Anton Farygin 2022-01-18 23:50:06 MSK
с udevd я разобрался, параметр --udevd у vm-run решает проблемы с двумя тестами, которым нужен работающий udev (с dmsetup).

https://git.altlinux.org/tasks/293721/logs/events.2.1.log - тут на x86_64 и aarch64 уже собралось нормально, но отключены те тесты, которым нужна запись на раздел специфичных файлов устройств.

На i586 упало ядро, на ppc64 упал тест, но скорее всего тоже где-то в ядре, надо разбираться.
Comment 6 Vitaly Chikunov 2022-01-19 00:10:41 MSK
Спасибо, попробую.