Bagaimana cara menjalankan file dari drive USB FAT?

12

Saya mencoba untuk menginstal aplikasi portabel ke drive USB saya sehingga kompatibel dengan Ubuntu dan Windows (khususnya, program yang disebut eToys). Dukungan sudah dibangun ke dalam aplikasi untuk kedua sistem operasi - ada etoys.shuntuk Ubuntu dan etoys.exeuntuk Windows. Saya memutuskan untuk menginstal ke drive FAT karena itu dapat dibaca dari kedua sistem. Ini berfungsi baik untuk Windows, tetapi untuk beberapa alasan saya tidak dapat menjalankan etoys.sh di Ubuntu.

Masalahnya bukan pada file - ketika seluruh folder disalin ke hard drive lokal, aplikasi berfungsi dengan baik di Ubuntu. Tetapi ketika saya mencoba menjalankannya dari USB, itu membuka file dalam editor teks.

Saya kemudian mencoba menjalankannya dari terminal, tetapi saya mendapat pesan Permission ditolak.

Saya memiliki masalah yang sama dengan executable lainnya juga.

Apakah ada cara mudah untuk menjalankan sesuatu dari stik USB?

Derek Redfern
sumber
2
Pertanyaan terkait di sini: askubuntu.com/questions/23108/…
luri

Jawaban:

20

Karena keterbatasan sistem file FA32, Anda tidak bisa.

Sekarang, Anda dapat menipu:

  1. baik panggilan, sh etoys.shbukan./etoys.sh
  2. jika Anda mau, Anda bahkan dapat membuat skrip lain (yang terletak di hard drive Anda, misalnya) yang cukup memanggil skrip Anda di USB drive:

    #!/bin/bash
    sh /media/USB/etoys.sh
    
Stefano Palazzo
sumber
Terimakasih banyak! Cheat kedua tentu saja merupakan pilihan, dan saya akan mengingatnya. Bergantian, apakah ada sistem file lain yang bisa saya gunakan yang akan bekerja dengan Windows dan Ubuntu dan biarkan saya menjalankan file?
Derek Redfern
Anda bisa menggunakan ext2 atau ext3, tetapi Anda harus menginstal utilitas kecil di Windows untuk membuatnya berfungsi.
Satu pertanyaan lagi tentang ini - saya memutuskan untuk pergi dengan opsi membuat skrip pada hard drive dan itu berfungsi dengan baik. Tetapi saya juga ingin memiliki skrip untuk program yang bukan file .sh - misalnya, Portable Chromium, yang bertipe "executable (application / x-executable)". Menggunakan sh tidak berfungsi, dan. / Chromium masih memberikan izin ditolak. Apakah ada perintah lain yang digunakan untuk ini?
Derek Redfern
Humm, saya kira Anda bisa curang: sebelum mengeksekusi chromium, Anda dapat chmod untuk membuatnya dieksekusi. Karena perintah chmod akan dipanggil setiap kali, tidak masalah lagi bahwa izin tidak dilakukan pada saat berikutnya Anda memasukkan drive USB
Saya pikir Anda tidak dapat chmod pada FAT sama sekali karena itu tidak mendukung izin Unix.
Derek Redfern
8

Pemasangan perangkat dengan -o mode=<value>harus bekerja

mode=value

Tetapkan mode semua file untuk menghargai & 0777mengabaikan izin asli. Tambahkan izin pencarian ke direktori yang memiliki izin baca. Nilai diberikan dalam oktal.

Bonsi Scott
sumber
1
Haruskah saya mengatur ini di fstab?
Derek Redfern
@Bonsi Scott Tidak ada mode=opsi untuk vfat, lihat mount (8) .
pevik
6

Saya benar-benar menemukan solusi hebat di http://ubuntuforums.org/showthread.php?t=1665289 yang memperbaiki masalah.

Pada dasarnya, dikatakan untuk menjalankan perintah

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

dan itu akan mencegah disk dari pemasangan otomatis dengan opsi showexec.

Saya tidak suka menjawab pertanyaan saya sendiri, tetapi ini berhasil untuk saya dan saya harap itu membantu orang lain juga.

untuk ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
Derek Redfern
sumber
3

Pada akhirnya, masalah ini tampaknya bahwa udisksgunung filesystem dengan showexecpilihan, mencegah file yang tidak berakhir di .exe, .bat, atau .comuntuk dijalankan.

Pertanyaan terkait (bagaimana cara memberikan opsi pemasangan khusus ke udisk) dapat ditemukan di sini: Bagaimana cara mengonfigurasi untuk merekam data agar langsung di-flash? Ternyata Anda dapat menggunakan udevkonfigurasi untuk melakukan itu.

Apakah pengaturan opsi pemasangan standar untuk udisk benar-benar tidak mungkin? mengusulkan solusi lain berdasarkan udisks-glue, tetapi tampaknya kurang meyakinkan, karena pada akhirnya bergantung udisks, sehingga tampaknya Anda dapat menambahkan opsi, tetapi tidak menghapusnya, dan khususnya showexecmasih ada).

Bagaimanapun, saya cenderung lebih suka untuk menambal file biner.

Virgile
sumber
2

Tidak ada solusi yang ditampilkan yang berfungsi sejauh yang saya tahu untuk mendapatkan program yang saya tulis sebagai program terminal Linux untuk dijalankan di partisi FAT32 saya, tetapi mengubah nama file program untuk menyertakan ekstensi .exe berhasil (terima kasih atas tipnya) , yang saya lakukan adalah mengganti nama file menjadi filename.exe untuk program terminal yang saya coba jalankan pada partisi FAT32, dan kemudian un-mount, pasang kembali dan atur disk drive untuk mengizinkan eksekusi, kemudian pergi ke nama file. exe dan atur izinnya dan kemudian tanda centang akan tetap daripada kembali ke minus, dan ketika saya mengatur path dan memasukkan ./filename.exe di terminal prompt program berjalan sebagaimana mestinya dan menunjukkan baris perintah termasuk nama file .exe seperti yang dimasukkan, meskipun direktori file Ubuntu menunjukkan file sebagai MSDOS / Windows itu berjalan sebagai program Linux.

Dan Hudgins
sumber
1

Jadi saya menemukan solusi yang lebih sederhana (dan lebih aman).

Gunakan gparted untuk memformat USB FAT32 dan kemudian kita Partition => Kelola Flags untuk mengatur flag berikut: boot, lba

MrSteve
sumber
0

Anda dapat menggunakan umask=000mode:

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

Sumber: wiki.linuxquestions.org , bagian "Mount options for fat" di mount (8) .

pevik
sumber
-1

Jika sintaksnya bash ...

bash yourscript
Sergio Abreu
sumber