Так.
Будучи профессиональным сисадминщиком, я ТРИ часа убил на восстановление загрузки. Не считая двух поездок слесаря по 90км и двух почти суток ebookов от клиента.
НЕ ДЕЛАЙТЕ, КАК Я. Делайте так:
- перед любым апгрейдом обязательно вынимайте контроллеры и везите их к компу. Бекапный прибор должен быть под рукой и должен быть сконфигурирован под узел, чтобы за 10 минут воткнуть его вместо поцыэнта.
- ВСЕГДА перед апгрейдом бекапьте корневую ФС! Вероятно, для этого и зарезервирован пустой раздел 3:
apt install rsync
mkdir /mnt/p3
mount /dev/mmcblk0p3 /mnt/p3
rsync -avxHAXW --progress / /mnt/p3/
umount /mnt/p3
- Если апгрейд заехал не туда, наверняка контроллер больше сам не загрузится, будет крутиться в бутлупе, который прервать нельзя. Посему -
- ПЕРЕД ребутом проверьте критическое:
fsck /dev/mmcblk0p3
mc
Если что-либо из этого не работает, стоит СРАЗУ скопировать улетевшие библиотеки из lib в бекапе в lib на корне.
5) Если таки перезагрузка случилась, готовьте microusb шнурок, драйвер порта и мешок чая/кофе и сухарей.
6) В консоли прервите загрузку, когда она говорит press a key to stop autoboot.
7) Если вы не успели (как я сейчас) сбекапить корень, то загрузитесь в однопользовательском режиме. Для этого скажите
env edit mmcargs
В предложенной к редактированию строке добавьте single, примерно вот так:
mmcargs=setenv optargs ${optargs} root=/dev/mmcblk${mmcdev}p${mmcpart} rootwait ro single; run setbootargs
Загрузившись, суньте флешку со скопированной с другого контроллера корневой ФС и скопируйте недостающие файлы на место. В отличие от странного uboot, ядро кушает любой исправный свисток.
- Если успели, - всё чуть проще, вам достаточно указать root=/dev/mmcblk0p3 вместо p2, и загрузка пройдет с альтернативного раздела, контроллер будет рабочим (ну, в зависимости от свежести бекапа) и вы сможете неспешно починить содержимое основной ФС.
Прошу включить это (вычесав эмоции) в доку по апгрейду ПЕРВЫМ пунктом. Спасибо.