Я бы поставил под сомнение масштаб и то, что вы пытаетесь достичь здесь, и, возможно, предложу вам разбить его на набор четко определенных стратегий тестирования с четкими целями.
Например, я не вижу никакой причины, по которой вы хотите устанавливать целую ОС, среду разработки и т. Д. Каждый раз, когда запускаете модульные тесты. Это должно быть то, что отдельные разработчики делают в коротких итерационных циклах в своих собственных средах разработки.
Принимая во внимание, что что-то вроде тестирования развертывания (где может иметь смысл протестировать полную установку пользователем вашего встроенного приложения и хост-ОС с нуля) будет выполняться реже и потребует совершенно другого набора инструментов, чем те, которые вам понадобятся модульное тестирование.
На самом деле все дело в том, чтобы отделить то, что вы пытаетесь достичь, и то, как вы пытаетесь провести тестирование на любой стадии жизненного цикла разработки, и построить конкретные автономные процессы тестирования в соответствии с этими сценариями. Это, вероятно, предпочтительнее, чем чрезмерная архитектура чего-то, что делает «все» в одном рабочем процессе.