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

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

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

Затем я попытался запустить его из терминала, но получил сообщение Отказано в доступе.

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

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

10
задан 8 August 2013 в 02:45

11 ответов

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

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

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

    #!/bin/bash
    sh /media/USB/etoys.sh
    
0
ответ дан 8 August 2013 в 02:45

Если синтаксис bash ...

bash yourscript
0
ответ дан 8 August 2013 в 02:45

Монтирование устройства с помощью -o mode=<value> должно работать

mode=value

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

0
ответ дан 8 August 2013 в 02:45

Я действительно нашел отличное решение на 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.

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

для Ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
0
ответ дан 8 August 2013 в 02:45

Так что я нашел гораздо более простое (и более безопасное решение).

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

0
ответ дан 8 August 2013 в 02:45

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

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

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

0
ответ дан 8 August 2013 в 02:45

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

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

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

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

0
ответ дан 8 August 2013 в 02:45

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

0
ответ дан 8 August 2013 в 02:45
either call sh -----.sh instead of ./-----.sh

работают хорошие в моей nokia n900 так ее твердый fat32

0
ответ дан 23 November 2019 в 04:15

На томах Windows чаще всего можно просто переименовать сценарии оболочки «shell.sh» в «shell.sh.bat», чтобы исполняемый файл из файловая система тома одной среды (Windows) выводится в другой (Linux).

После переименования ничего особенного при перезагрузке делать не нужно.

Только если требуется немедленное использование живой системы, обычно требуется перерегистрация файла и его тома с помощью простого перемонтирования, когда выполняется это переименование или редактирование самого содержимого файла.

Это перемонтирование можно выполнить двумя способами:

  1. Для съемного/USB-тома просто извлеките его и снова вставьте, в противном случае выключите и снова включите систему (например, перезагрузка, которая «убивает» « «живая» система).

или

  1. Используйте команды для размонтирования и монтирования (наивно, т.е. "обычно") тома.
0
ответ дан 6 August 2020 в 21:29

Попробуйте это, но я не уверен, что это сработает:

  1. Откройте флешку в файловом менеджере
  2. Щелкните правой кнопкой мыши внутри окна и выберите «Открыть в терминале»
  3. Введите текст в окне терминала следующее: sudo chmod +x etoys.sh
  4. Попробуйте выполнить файл, либо дважды щелкнув его, либо введя в том же окне терминала следующее: ./etoys.sh
0
ответ дан 6 August 2020 в 22:06

Другие вопросы по тегам:

Похожие вопросы: