Isso é uma grande variedade de sistemas operacionais para cobrir, então minha sugestão geral seria instalar scripts "init" para cada SO que chame um script de "fase 2" mantido por você. Este script de "fase 2" verifica a existência de um script de pós-atualização; se existir, ele o executa e, em seguida, o exclui. Seu script de "atualização de fase 1" instalaria este script de pós-atualização quando estiver pronto e antes da reinicialização.