Intereting Posts
Как назначить сочетание клавиш для нового приложения в ubuntu 13.10 Как запустить команду как root? Nvidia 740M все еще не работает после установки Bumblebee Каков правильный способ изменения переменной среды PATH? Как сборки Ubuntu LibreOffice отличаются от ванильных сборников LibreOffice? Какова реальная дата исправления регрессий ядра? Ubuntu 14.04 блокирует экран без затемнения во время полноэкранного воспроизведения видео? Переустановите коммерческое программное обеспечение (например, нефтяная лихорадка, стальная лихорадка и т. Д.) Почему гарнитура моего мобильного телефона не обнаружена должным образом на комбинированном микрофоне / наушниках моего ноутбука? Преобразование тысяч .png в анимированный .gif, `convert` использует слишком много памяти Как создать репозиторий debug Ubuntu без знака gpg? Неужели Ubuntu разрушает мой внутренний жесткий диск? Root Owns Home Directory, chown не работает Как установить Lubuntu Desktop Environment и ТОЛЬКО среду рабочего стола? Почему Ubuntu 16.04 замирает полностью и часто?

Как выполнить файл с USB-накопителя FAT?

Я пытаюсь установить портативное приложение на свой USB-накопитель, чтобы оно совместимо с Ubuntu и Windows (в частности, с программой eToys). Поддержка уже встроена в приложение для обеих операционных систем – для Ubuntu и etoys.exe для Windows есть etoys.exe . Я решил установить на диск FAT, так как это можно прочитать с обеих систем. Это отлично работает для Windows, но по какой-то причине я не могу выполнить etoys.sh на Ubuntu.

Проблема не в файле – когда вся папка скопирована на локальный жесткий диск, приложение отлично работает в Ubuntu. Но когда я пытаюсь выполнить его с USB, он открывает файл в текстовом редакторе.

Затем я попытался запустить его с терминала, но я получил сообщение « Permission denied».

У меня была такая же проблема с другими исполняемыми файлами.

Есть ли простой способ выполнить действия с USB-накопителя?

Из-за ограничений файловой системы FA32 вы не можете.

Теперь вы можете обмануть:

  1. либо вызовите sh etoys.sh вместо ./etoys.sh
  2. если вы хотите, вы даже можете создать другой скрипт (который, например, лежал на вашем жестком диске), который просто вызывает ваш скрипт на USB-накопителе:

     #!/bin/bash sh /media/USB/etoys.sh 

Установка устройства с -o mode=<value> должна работать

 mode=value 

Установите режим всех файлов в значение & 0777 без учета исходных разрешений. Добавить разрешение поиска для каталогов, имеющих разрешение на чтение. Значение указано в восьмеричном.

На самом деле я нашел отличное решение на http://ubuntuforums.org/showthread.php?t=1665289, которое устранило проблему.

В основном, он говорит, чтобы выполнить команду

 sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks/udisks-daemon 

и это предотвратит автоматическое монтирование дисков с помощью опции showexec.

Я не люблю отвечать на собственный вопрос, но это сработало для меня, и я надеюсь, что это поможет и другим людям.

В конечном итоге проблема заключается в том, что udisks монтирует файловую систему с опцией showexec , предотвращая showexec любого файла, который не заканчивается на .exe , .bat или .com .

Связанный с этим вопрос (как предоставить настраиваемые параметры монтирования для udisks) можно найти здесь: Как настроить запись данных в мгновение ока? Оказывается, вы можете использовать настройку udev для этого.

Является ли настройка параметров монтирования по умолчанию для udisks действительно невозможной? предлагает другое решение, основанное на udisks-glue , но оно кажется менее убедительным, поскольку оно в конечном итоге полагается на udisks , так что кажется, что вы можете добавлять опции, но не удалять их, и в частности showexec все еще существует).

В любом случае, я предпочитаю, чтобы исправлять двоичный файл.

Ни одно из представленных решений не работало, насколько я мог сказать, чтобы получить программу, которую я написал в качестве конечной программы Linux для работы в моем разделе FAT32, но изменение имени файла программы для включения расширения .exe действительно помогло (спасибо за подсказку) , все, что я сделал, было переименовать имя файла в filename.exe для конечной программы, которую я пытался выполнить на разделе FAT32, а затем удалить ее, повторно установить и установить разрешения на диск, чтобы разрешить выполнение, а затем перейти к имени файла. exe и установите его разрешения, а затем галочка будет придерживаться, а не поворачиваться на минус, и когда я установил путь и ввел ./filename.exe в командной строке, программа запустилась так, как должна, и отобразит командную строку, включая имя файла .exe как введенный, хотя каталог файлов Ubuntu показывает файл как MSDOS / Windows, он запускается как программа Linux.

Поэтому я нашел гораздо более простое (и более безопасное решение).

Используйте gparted для форматирования USB FAT32, а затем Partition => Manage Flags, чтобы установить следующие флаги: boot, lba

Вы можете использовать режим umask=000 :

 umount /dev/sdb1 mount -o umask=000 -t vfat /dev/sdb1 /media/sdb1 

Источник: wiki.linuxquestions.org , раздел « Параметры монтирования жира» в mount (8) .