Всех приветствую.
Возникла весьма предсказуемая и щекотливая ситуация.
Есть некая железка с линуксом. У нее есть впаяная eMMC и разъём для SD. Если запускаемся без SD, то emmc видится как /dev/mmcblk0 Если в момент запуска ставим SD, то уже SD становится /dev/mmcblk0, а emmc съезжает на /dev/mmcblk1
Чтобы развернуть систему на чистой железке ставим sd-карту с этой системой, грузимся и она после загрузки разбивает emmc на разделы форматирует все что надо и распихивает себя по этим разделам. Дальше мы выдергиваем SD, перегружаемся и спокойно работаем только на emmc.
Ну и как все поняли (поняли же? падме.жпг), что при загрузке с SD и с emmc, это самая emmc будет на разных именах.
Существующие ограничения:
- rootfs - строго RO (никакого изменения fs в процессе развертывания)
- хочется чтобы mount и т.д. работал корректно - то есть fstab был с нужными именами дисков и разделов
- UUID не подходят, так как rootfs один на все устройства (скажем так сильно больше одного), а uuid будет у всех дисков разные.
Потенциальные решения которые я вижу, это как-то подсунуть в параметры ядра какой fstab использовать, а в /etc подложить все варианты fstab, и перед загрузкой ядра определять какой fstab ему использовать. Но судя по известной мне инфе такой возможности у ядра нет.
Как резервный вариант, все что мне надо я буду грузить «руками» из загрузочных скриптов, а из fstab все упоминания mmcblk* уберу. Но тогда mount -a перестанет покрывать эти диски, чего бы не хотелось.
Возможно есть более элегантный способ решения данной проблемы?



