FAT USBドライブからファイルを実行するにはどうすればよいですか?


12

私は、UbuntuとWindowsの両方(特にeToysと呼ばれるプログラム)と互換性があるように、ポータブルアプリをUSBドライブにインストールしようとしています。サポートはすでに両方のオペレーティングシステムのアプリに組み込まれていますetoys.sh。Ubuntuとetoys.exeWindows がサポートされています。両方のシステムから読み取ることができるので、FATドライブにインストールすることにしました。これはWindowsでは問題なく動作しますが、何らかの理由でUbuntuでetoys.shを実行できません。

問題はファイルにありません-フォルダー全体がローカルハードドライブにコピーされると、アプリはUbuntuで正常に動作します。しかし、USBから実行しようとすると、テキストエディターでファイルが開きます。

その後、ターミナルから実行しようとしましたが、Permission deniedというメッセージが表示されました。

他の実行可能ファイルでも同じ問題が発生しました。

USBスティックから実行する簡単な方法はありますか?


2
ここに関連する質問:askubuntu.com/questions/23108/...
luri

回答:


20

FA32ファイルシステムの制限により、できません。

今、あなたはカンニングすることができます:

  1. sh etoys.sh代わりに呼び出す./etoys.sh
  2. 必要に応じて、USBドライブ上のスクリプトを呼び出すだけの別のスクリプト(たとえば、ハードドライブ上にある)を作成することもできます。

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

どうもありがとう!2番目のチートは確かにオプションであり、私はそれを覚えておきます。あるいは、WindowsとUbuntuの両方で機能し、ファイルを実行できる別のファイルシステムを使用できますか?
Derek Redfern、2011年

ext2またはext3を使用することもできますが、機能させるにはWindowsに小さなユーティリティをインストールする必要があります。

これについてもう1つ質問があります。私は、ハードドライブにスクリプトを作成するオプションを選択することにしました。しかし、.shファイルではないプログラム用のスクリプトも必要です。たとえば、「実行可能(アプリケーション/ x実行可能)」タイプのPortable Chromiumです。shの使用は機能せず、。/ Chromiumは依然として許可を拒否します。これに使用する別のコマンドはありますか?
Derek Redfern、2011年

うーん、私はあなたが単にごまかすことができると思います:クロムを実行する前に、それをchmodして実行可能にすることができます。chmodコマンドは毎回呼び出されるため、次回USBドライブを挿入するときにアクセス許可が保持されなくても問題ありません

Unixのアクセス許可をサポートしていないため、FATでchmodを実行できないと思いました。
Derek Redfern、2011年

8

でデバイスをマウントすると-o mode=<value>うまくいくはずです

mode=value

すべてのファイルのモードを値に設定し0777、元の権限を無視します。読み取り権限を持つディレクトリに検索権限を追加します。値は8進数で与えられます。


1
これをfstabで設定する必要がありますか?
Derek Redfern、2011年

@Bonsi Scott mode=vfat のオプションはありません。mount (8)を参照してください。
pevik

6

私は実際に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

3

最終的に、問題はそのように思わudisksとファイルシステムのマウントshowexecで終わっていない任意のファイル防止、オプション.exe.batまたは.com実行することを。

関連する質問(udiskにカスタムマウントオプションを与える方法)は、ここにあります:データをペンドライブに即座に記録するように設定する方法?udev構成を使用してそれを実行できることがわかります。

udiskのデフォルトのマウントオプションを設定することは本当に不可能ですか?はに基づく別のソリューションを提案しますが、udisks-glue最終的にはに依存しudisksているため、説得力が低くなり、オプションを追加できるが削除はできないように思われます(特にshowexec、まだそこにあります)。

いずれにせよ、私はバイナリファイルをパッチするよりもそれを好む傾向があります。


2

Linuxターミナルプログラムとして作成したプログラムをFAT32パーティションで実行するように指示する限り、示されている解決策はどれも機能しませんでしたが、.exe拡張子を含むようにプログラムのファイル名を変更すると機能しました(ヒントをありがとう) FAT32パーティションで実行しようとしたターミナルプログラムのファイル名をfilename.exeに変更してから、マウントを解除し、再マウントして、ディスクのアクセス許可を設定して実行できるようにしてから、filenameに移動しました。 exeとそのアクセス許可を設定すると、チェックマークがマイナスに戻るのではなく固定されます。パスを設定してターミナルプロンプトで./filename.exeと入力すると、プログラムは正常に実行され、ファイル名を含むコマンドラインが表示されます入力した.exe、UbuntuファイルディレクトリはファイルをMSDOS / Windowsとして表示しますが、Linuxプログラムとして実行されます。


1

だから私ははるかに単純な(そしてより安全な解決策)を見つけました。

gpartedを使用してUSB FAT32をフォーマットし、次にPartition => Manage Flagsを使用して次のフラグを設定します:boot、lba



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.