Создана такая конфигурация:
плата SK-LCD800x480-MB и модуль SK-iMX6S-SODIMM. Память разбита на две части:
одна RO (~1Гб) - в ней весь линукс и пользовательская программа.
другая RW (~3Гб) - в ней /root
Если система загрузилась и я вставляю флешку она монтируется в /media/usb0 и все замечательно работает.
Если система загружается с заранее вставленной флешкой то флешка монтиркется в /root (во всяком случае именно там я вижу её содержимое) затем выдергиваем флешку и все рут пропал и начинается бардак. Мне нужен второй вариант ибо задумано так, что флеш может содержать скрипт с обновлением программы пользователя, который срабатывает до запуска пользовательской программы. Может как-то задать жестко куда монтировать флеш или как-то еще?
У вас где-то ошибка в команде монтирования /root - кроме вас никто не знает что у вас там. Штатно автомонтирование съемных носителей всегда выполняется в /media/usbX
традиционно это делается через /etc/fstab. В /etc/inittab есть mount -a в инициализации загрузки
Простите я в линуксе слабо разбираюсь, но вроде я никаких команд монтирования /root не давал.
Вот мой inittab
Вот fstab
Я в них ничего не менял, кроме того в каталоге init.d у меня есть файл S99remount следующего содержания:
Насколько я понял только тут идет монтирование /root. Если я его удаляю, то второй раздел памяти (который 3Гб) при загрузке монтируется в usb0, а если загрузка идет со вставленной флешкой то её содержимое оказывается там же. Возвращаем файл и содержимое флеш начинает сливаться с содержимым /root.
Отвечу сам себе же. Как иногда помогает собрать код в одном сообщении и взглянуть свежим взглядом.
В дефолтном im6qdl-sodimm.dtsi из поставки buildroot-2017.08-sk надо добавить строчку указывающую какой gpio использовать для card detect: