Я работаю над проектом, в котором обновление до Raspberry PI выполняется по протоколу HTTP, а Raspberry PI не будет доступен напрямую (нельзя просто поменять местами карты).
Я хотел бы настроить раздел следующим образом:
- Раздел 1- / boot (содержит ядра для обоих разделов)
- Раздел 2- / (раздел восстановления)
- Раздел 3- / (основной раздел)
Когда обновление идет плохо и Raspberry PI попадает в цикл перезагрузки или зависает при загрузке, я бы хотел, чтобы пользователь мог нажать кнопку, которая запускает линию GPIO, которая заставляет загрузчик загружаться в раздел восстановления вместо основного раздела.
Раздел восстановления никогда не будет обновлен, так что это будет безопасно.
Я вижу пару вариантов:
- Всегда загружайтесь в раздел восстановления, проверьте GPIO, затем загрузитесь в основной раздел без нажатия кнопки
- GPIO проверяется загрузчиком напрямую
Я в основном пытаюсь сделать что-то похожее на то, что делают маршрутизаторы, где, если вы удерживаете перезагрузку во время загрузки, вы можете использовать TFTP поверх нового образа или чего-то еще.
Это возможно с Raspberry PI? Если да, есть ли документация для такого рода вещей?
Редактировать:
Я нашел ответ на этот связанный вопрос: возможно ли двойная загрузка с SD-карты?
Комментарий по вышеупомянутому вопросу привел меня сюда: http://www.berryterminal.com/doku.php/berryboot . Это выглядит многообещающе, но мне придется больше исследовать его, чтобы посмотреть, смогу ли я получить из него GPIO. Если у кого-то есть опыт, я был бы очень заинтересован.
/boot
(RO), /
(RO), /var
(RW), /home
(RW). Первоначальной проблемой было повреждение файловой системы при отключении питания во время загрузки. Я все еще хотел бы написать / найти загрузчик 2-го этапа, хотя.