6

Я пытаюсь придумать способ замены корневой файловой системы на работающем ПК с помощью сценария 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 и в настоящее время играю - я уверен, что это было сделано раньше, но я искал и не нашел решения!

1 ответ1

4

Смотрите этот ответ на обмен стека. Принятый ответ указывает на эту ссылку, которая объясняет, как использовать pivot_root для создания временной корневой файловой системы в памяти, которая позволяет изменять, изменять размер, заменять или любым другим способом связываться с корневой файловой системой без перезагрузки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .