Я пытаюсь придумать способ замены корневой файловой системы на работающем ПК с помощью сценария bash. Система использует разделенный на MBR диск с ext4 rootfs и разделом подкачки, к сожалению, она не использует LVM / BTRFS или что-нибудь полезное подобное. Он запускает минимальный дистрибутив Debian, используя grub / kernel & initrd / systemd.
Физический доступ к рассматриваемому ПК отсутствует - на нем запущено некоторое программное обеспечение для киосков, с помощью которого можно использовать запатентованный инструмент для отправки на диск тарболла, содержащего двоичные файлы и скрипт обновления оболочки. Я планирую использовать эту систему обновлений, чтобы попытаться заменить rootfs.
Мои идеи в основном сводятся к следующему:
Замените initrd пользовательской версией, которая не переключается на настоящие rootfs, а вместо нее заменяет его (вероятно, используя dd для записи нового образа), а затем перезагружается на новую систему
(Почему-то!) switch_root из действующей системы в какую-то временную файловую систему, затем выполните приведенный выше dd & reboot
Как и выше, но pivot_root инициирует процесс init для нового временного fs и делает выше, или что-то в этом роде ...
Я не знаком с функциональностью pivot_root и switch_root и в настоящее время играю - я уверен, что это было сделано раньше, но я искал и не нашел решения!