По варианту раз. а если сеть ляжет (питание рубанется) по во время загрузки, нет, нет! По варианту 2 та же песня. Нужно действовать транзакционо. Иметь на борту две версии программы, старую и новую. и в зависимости от условия стартовать. Но как написать бинарник работающий без привязки физическому адресу