Мне только что удалось запустить сетевую загрузку RasPberry Pi (это здорово, что я свободен от SD-карты). Я работал с сетевой загрузкой раньше, но только для создания образов, а не с полнофункциональной удаленной файловой системой. Поскольку я сейчас имею дело с двумя отдельными системами, которые представляют состояние pi (pi с его ram, cpu-регистрами и т. П. И сервером, который содержит файловую систему). Я думал, что любой из них будет довольно плохим, поскольку он оставит файловую систему в потенциально небезопасном состоянии (как если бы только что отключили питание).

Итак, я начал задаваться вопросом, есть ли какой-нибудь удобный способ выключить сервер хранения, но сначала вызвать отключение пи? Я знаю, что могу запустить ssh и запустить скрипт завершения работы, но я думал, что у меня уже есть доступ к корневой файловой системе. Могут ли быть внесены изменения, которые приведут к немедленному корректному завершению работы? Я рассмотрел добавление задания в cron, но это не было бы немедленным или делало что-то неприятное с системным файлом, но вряд ли это было бы изящно. Этот вопрос носит в основном гипотетический характер, поскольку уже существует множество возможных вариантов завершения работы, но мне было интересно узнать о подходе чисто файловой системы, использующем только базовую установку rasbian.

1 ответ1

0

Прежде всего: не делайте этого - то, что следует, является чисто академическим упражнением.

Теперь: мы должны понимать разницу между метаданными файловой системы и данными файла. Изменение первого при монтировании файловой системы приведет к повреждению, но изменение данных файла - это другое. Так что это будет работать (хотя пока не очень хорошая идея)

  • Записать файл флага в файловую систему на Pi. Это должно быть достаточно долго, чтобы убедиться, что его содержимое хранится в отдельном блоке, а не в inode.
  • Создайте задание cron на Пи, которое
    • сбрасывает кеш (чтобы действительно прочитать файл)
    • читает файл
    • использует содержимое файла, чтобы принять решение о завершении работы
  • Найти этот блок на сервере хранения
  • Чтобы выключить Pi, измените этот блок на контент, который заставляет Pi инициировать выключение при следующем задании cron (убедитесь, что контент - это то, что вы ожидали раньше!).

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