Я пытаюсь установить переносное приложение на USB-накопитель, чтобы оно было совместимо как с Ubuntu, так и с Windows (в частности, с программой eToys). Поддержка уже встроена в приложение для обеих операционных систем - есть etoys.sh
для Ubuntu и etoys.exe
для Windows. Я решил установить диск FAT, так как его можно прочитать с обеих систем. Это хорошо работает для Windows, но по какой-то причине я не могу запустить etoys.sh в Ubuntu.
Проблема не в файле - когда вся папка копируется на локальный жесткий диск, приложение прекрасно работает в Ubuntu. Но когда я пытаюсь выполнить его с USB, он открывает файл в текстовом редакторе.
Затем я попытался запустить его из терминала, но получил сообщение Отказано в доступе.
У меня была такая же проблема с другими исполняемыми файлами.
Есть ли простой способ выполнить вещи с USB-накопителя?
Из-за ограничений файловой системы FA32 вы не можете.
Теперь вы можете обмануть:
sh etoys.sh
вместо ./etoys.sh
, если вы хотите, вы даже можете создать другой сценарий (который будет например, лежать на жестком диске), который просто вызывает ваш скрипт на USB-накопителе:
#!/bin/bash
sh /media/USB/etoys.sh
Монтирование устройства с помощью -o mode=<value>
должно работать
mode=value
Установите режим всех файлов на значение & amp; 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.
Я не люблю отвечать на свой вопрос, но это сработало для меня, и я надеюсь, что это поможет и другим людям.
для Ubuntu 18.04:
sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
Так что я нашел гораздо более простое (и более безопасное решение).
Используйте 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) [ 113].
В конечном счете, проблема заключается в том, что udisks
монтирует файловую систему с опцией showexec
, предотвращая запуск любого файла, который не заканчивается на .exe
, .bat
или .com
. 1111]
Смежный вопрос (как задать пользовательские параметры монтирования для udisks) можно найти здесь: Как настроить запись данных для мгновенного запуска в режиме ожидания? Оказывается, что для этого можно использовать конфигурацию udev
. . [+1112]
Неужели установка параметров монтирования по умолчанию для udisks действительно невозможна? предлагает другое решение, основанное на udisks-glue
, но оно кажется менее убедительным, так как в конечном итоге полагается на udisks
, так что кажется, что вы Можно добавлять опции, но не удалять их, в частности showexec
все еще там).
В любом случае, я предпочитаю это исправлять двоичный файл.
Ни одно из показанных решений не сработало, насколько я мог сказать, чтобы программа, которую я написал как терминальная программа Linux, работала в моем разделе FAT32, но изменение имени файла программы на расширение .exe работало (спасибо за совет) все, что я сделал, это переименовал имя файла в filename.exe для программы терминала, которую я пытался выполнить на разделе FAT32, а затем размонтировал ее, заново смонтировал и установил разрешения на диск, чтобы разрешить выполнение, затем перейдем в filename.exe и установите его права доступа, а затем флажок будет прикреплен вместо того, чтобы вернуться к минусу, и когда я установлю путь и введу ./filename.exe в терминале, программа запустится как надо и покажет команду строка, содержащая filename.exe в том виде, в котором она введена, хотя в каталоге файлов Ubuntu этот файл отображается как MSDOS / Windows, так как он запускается как программа Linux.
either call sh -----.sh instead of ./-----.sh
работают хорошие в моей nokia n900 так ее твердый fat32
На томах Windows чаще всего можно просто переименовать сценарии оболочки «shell.sh
» в «shell.sh.bat
», чтобы исполняемый файл из файловая система тома одной среды (Windows) выводится в другой (Linux).
После переименования ничего особенного при перезагрузке делать не нужно.
Только если требуется немедленное использование живой системы, обычно требуется перерегистрация файла и его тома с помощью простого перемонтирования, когда выполняется это переименование или редактирование самого содержимого файла.
Это перемонтирование можно выполнить двумя способами:
или
размонтирования
и монтирования
(наивно, т.е. "обычно") тома. Попробуйте это, но я не уверен, что это сработает:
sudo chmod +x etoys.sh
./etoys.sh