-
- Мы, кажется говорили об overlayfs? На флешке два раздела: FAT и EXT3. Загрузчик подбирает с FAT-раздела ядро с вкомпиленной маленькой ramfs и запущает его. Инитскрипт чекает раздел EXT3 и если он годен - монтирует поверх своего rootfs, после чего все работает оттуда с обновленным софтом и прочим блекджеком. При этом FAT-раздел вообще не смонтирован и никто туда ничего не пишет. Если раздел EXT3 покоцан - то ничего не монтирует, дает зеленый свисток в зенит и ждет LightElf(271 знак., 11.06.2020 21:46)
- root кладётся в initrd в котором squashfs. Т.е. с флешки только
загрузчик однажды скопирует содержимое в ОЗУ и запустит. Потом до
следующего ребута флешка не нужна вообще. Я такое видел. Можно как
раз обновлением всё переписать в процессе работы. Хуже, если в
процессе обновления сбой, ребут, питание кончится. Но там загрузчик
в отдельном разделе сидел, который со своим вторым запасным
маленьким линуксом, и который умел скачивать из сети всё заново. - fk0(11.06.2020 21:27)
- Ну да, как-то так. В одном из вариантов есть три версии ядра: одна,
совсем мелкая, в SPI флешке. Вторая и третья - на FAT-разделе.
Загрузчик сначала пытается запустить новую версию с FAT-раздела,
если не вышло - предыдущую версию с FAT-раздела, если и там облом -
то мелкое ядро из SPI. А если уж и там все плохо, то загрузчик
будет пытаться загрузиться по сетке. - LightElf(11.06.2020 21:53)
- Альтернативная загрузка... man grub или что-то другое? - Cкpипaч(11.06.2020 22:06)
- Вот на писюках тут всё плохо. Я не знаю как grub заставить так
работать: у него есть fallback, но он предполагает запись на
диск... не то. Нужен вариант: мол грузи ядро и initrd отсюда, а
если контрольные суммы не сошлись -- тогда отсюда (из другого
раздела, или с другого физического накопителя). У grub вроде нет, у
syslinux есть ONERROR -- там можно что-то похожее сделать. - fk0(11.06.2020 23:20)
- Вроде бы U-Boot можно под писюк собрать, но это не точно - LightElf(11.06.2020 23:58)
- У меня U-Boot :) Писюками не занимался, про grub ничего не знаю. - LightElf(11.06.2020 22:37)
Дай списать :)Можно пример скриптов посмотреть? - Cкpипaч(11.06.2020 22:42)- Для U-Boot? Там же все очевидно. Ну вот от текущего проекта (там SPI флешка совсем мелкая, ядро не влазит). LightElf(572 знак., 11.06.2020 22:58)
- Вот на писюках тут всё плохо. Я не знаю как grub заставить так
работать: у него есть fallback, но он предполагает запись на
диск... не то. Нужен вариант: мол грузи ядро и initrd отсюда, а
если контрольные суммы не сошлись -- тогда отсюда (из другого
раздела, или с другого физического накопителя). У grub вроде нет, у
syslinux есть ONERROR -- там можно что-то похожее сделать. - fk0(11.06.2020 23:20)
- Альтернативная загрузка... man grub или что-то другое? - Cкpипaч(11.06.2020 22:06)
- Ну да, как-то так. В одном из вариантов есть три версии ядра: одна,
совсем мелкая, в SPI флешке. Вторая и третья - на FAT-разделе.
Загрузчик сначала пытается запустить новую версию с FAT-раздела,
если не вышло - предыдущую версию с FAT-раздела, если и там облом -
то мелкое ядро из SPI. А если уж и там все плохо, то загрузчик
будет пытаться загрузиться по сетке. - LightElf(11.06.2020 21:53)