Редактировать: Я бы хотел немного упростить вопрос:
Основная проблема в следующем: /dev/sda создается при загрузке, независимо от того, вставлен ли мой USB-накопитель или нет. Если я вручную rm /dev/sda, udev работает правильно, пока я не перезагружу, после чего /dev/sda волшебным образом снова появляется!
Исходный вопрос звучит следующим образом:
Я запускаю сборку Yocto Linux на встраиваемой плате и столкнулся с проблемой.
В новой сборке, когда я подключаю USB-накопитель к плате, он отображается как /dev/sda и /dev/sda1 (отлично!). Когда я отключаю накопитель, эти записи исчезают (тоже отлично!).
Проблема возникает после того, как я копирую дубликат корневой файловой системы на плату через USB-накопитель (это нужно для того, чтобы я мог выполнять полные обновления системы на плате). Все работает нормально, пока я не перезагружаюсь, и вдруг /dev/sda и /dev/sda1 существуют независимо от того, вставлен USB-накопитель или нет.
Я проверил разрешения, и они выглядят одинаково в обоих случаях. Я пробовал удалить файлы, но они снова появляются при следующей перезагрузке. Оба файла не копируются с новой корневой файловой системой. Мое приложение использует наличие этих файлов для определения того, вставлен ли диск, поэтому важно, чтобы они работали правильно.
Есть идеи?
Спасибо
Марлон
решение1
Измените способ проверки USB-накопителя, поскольку этот способ ненадежен.
Используйте lsusb
или проверьте /proc/scsi/usb-storage
каталог. В обоих случаях вы получаете много информации от ядра, так что дополнительно вы можете поиграть с такими вещами, как переключение на другую логику в зависимости от поставщика или серийного номера :)