У меня проблемы с переносом двоичных программ на макетную плату микроконтроллера при использовании ubuntu / kubuntu для монтирования платы через usb. С MacOS и Windows проблем нет. Я обнаружил, что запись из Ubuntu определенно меняет записанный файл. Я подозреваю, что проблема заключается в кэшировании записи. Как я могу отключить его, или в чем еще может быть проблема.
Сначала прочтите это: http://groups.google.com/group/linux.kernel/msg/8d1591196c0ae15e?pli=1
Я не уверен, правда ли это или нет.
Вы можете попробовать использовать hdparm, чтобы отключить функцию кэширования записи во время выполнения. (Вам, вероятно, потребуется запускать это после каждой загрузки или каждый раз, когда вы извлекаете и переустанавливаете устройство)
sudo hdparm -W 0 /dev/devicename
Убедитесь, что вы знаете правильное имя устройства (sdb
, sdc
или и так далее.)
Вы можете узнать имя устройства, запустив:
sudo fdisk -l
Вы также можете отредактировать /etc/fstab
и добавить опции монтирования sync,dirsync
, однако я не очень знаком с тем, как /etc/fstab
работает с съемные устройства. Я думаю, что им нужна постоянная точка монтирования.
Слава @NightwishFan для переключателя hdparm, чтобы установить функцию кэширования записи диска.
Обратите внимание, что опция монтирования sync
уменьшает скорость на величину (более чем в 10 раз). flush
опция монтирования обеспечивает эффективную запись без затрат на производительность. Также я использую его без проблем в течение нескольких лет на всех устройствах FAT (на основе вращения или флэш-памяти), которые я использовал: На самом деле весь набор параметров монтирования - noauto,users,noatime,flush,umask=111,dmask=000
, установлен вручную или в / etc /fstab.