Вот один из примеров для контейнеров OpenVZ/LXC:
https://github.com/mowwom/OvzReinstall/tree/main
А вот для KVM:
https://github.com/bohanyang/debi
Существует два подхода: либо из-под ОС изолируется окружение, останавливаются все демоны, блокируется запись в существующие файловые системы, запускается временная ОС из tmpfs, и все действия по переустановке производятся через неё, либо из-под ОС подготавливается запуск инсталлятора другой ОС после перезагрузки, и после перезагрузки происходит автоматическая переустановка.