ฉันจะเรียกใช้ไฟล์จากไดรฟ์ FAT USB ได้อย่างไร


12

ฉันพยายามติดตั้งแอพพกพาลงในไดรฟ์ USB ของฉันเพื่อให้สามารถใช้งานได้กับทั้ง Ubuntu และ Windows (โดยเฉพาะโปรแกรมที่เรียกว่า eToys) การสนับสนุนถูกติดตั้งไว้ในแอพสำหรับระบบปฏิบัติการทั้งสองแล้ว - etoys.shสำหรับ Ubuntu และetoys.exeWindows ฉันตัดสินใจที่จะติดตั้งลงในไดรฟ์ FAT เพราะสามารถอ่านได้จากทั้งสองระบบ สิ่งนี้ใช้ได้ดีสำหรับ Windows แต่ด้วยเหตุผลบางอย่างฉันไม่สามารถเรียกใช้ etoys.sh บน Ubuntu ได้

ปัญหาไม่ได้อยู่กับไฟล์ - เมื่อคัดลอกโฟลเดอร์ทั้งหมดไปยังฮาร์ดไดรฟ์ในเครื่องแล้วแอปจะใช้งานได้ดีใน Ubuntu แต่เมื่อฉันพยายามเรียกใช้จาก USB มันจะเปิดไฟล์ในโปรแกรมแก้ไขข้อความ

ฉันพยายามเรียกใช้จากเทอร์มินัล แต่ฉันได้รับข้อความอนุญาตปฏิเสธ

ฉันมีปัญหาเดียวกันกับโปรแกรมอื่น ๆ เช่นกัน

มีวิธีง่ายๆในการดำเนินการสิ่งต่าง ๆ จากแท่ง USB หรือไม่?


2
คำถามที่เกี่ยวข้องที่นี่: askubuntu.com/questions/23108/…
luri

คำตอบ:


20

เนื่องจากข้อ จำกัด ของระบบไฟล์ FA32 คุณไม่สามารถทำได้

ตอนนี้คุณสามารถโกง:

  1. ทั้งโทรsh etoys.shแทน./etoys.sh
  2. หากคุณต้องการคุณสามารถสร้างสคริปต์อื่น (ซึ่งจะอยู่บนฮาร์ดไดรฟ์ของคุณ) ที่เรียกสคริปต์ของคุณบนไดรฟ์ USB:

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

ขอบคุณมาก! การโกงครั้งที่สองเป็นทางเลือกแน่นอนและฉันจะระลึกไว้เสมอ อีกวิธีหนึ่งมีระบบไฟล์อื่นที่ฉันสามารถใช้ที่จะทำงานกับทั้ง Windows และ Ubuntu และให้ฉันรันไฟล์หรือไม่
Derek Redfern

คุณสามารถใช้ ext2 หรือ ext3 ได้ แต่คุณต้องติดตั้งยูทิลิตีขนาดเล็กบน Windows เพื่อให้มันทำงานได้

อีกหนึ่งคำถามเกี่ยวกับเรื่องนี้ - ฉันตัดสินใจที่จะเลือกสร้างสคริปต์บนฮาร์ดไดรฟ์และใช้งานได้ดี แต่ฉันต้องการมีสคริปต์สำหรับโปรแกรมที่ไม่ใช่ไฟล์. sh เช่น Portable Chromium ซึ่งเป็นประเภท "executable (application / x-executable)" การใช้ sh ไม่ทำงานและ. / โครเมียมยังคงให้สิทธิ์ในการปฏิเสธ มีคำสั่งอื่นให้ใช้สำหรับสิ่งนี้หรือไม่?
Derek Redfern

ฉันคิดว่าคุณสามารถโกงได้: ก่อนที่จะดำเนินการโครเมียมคุณสามารถ chmod เพื่อให้สามารถเรียกใช้งานได้ เนื่องจากคำสั่ง chmod จะถูกเรียกใช้ทุกครั้งจึงไม่สำคัญว่าสิทธิ์จะไม่ถูกดำเนินการในครั้งต่อไปที่คุณใส่ไดรฟ์ USB

ฉันคิดว่าคุณไม่สามารถ chmod บน FAT ได้เลยเนื่องจากไม่รองรับการอนุญาต Unix
Derek Redfern

8

การติดตั้งอุปกรณ์ด้วย-o mode=<value>ควรใช้งานได้

mode=value

ตั้งค่าโหมดของไฟล์ทั้งหมดเป็นค่าและ0777ไม่คำนึงถึงการอนุญาตดั้งเดิม เพิ่มสิทธิ์การค้นหาลงในไดเรกทอรีที่มีสิทธิ์อ่าน ค่าถูกกำหนดเป็นฐานแปด


1
ฉันควรตั้งค่านี้ใน fstab หรือไม่
Derek Redfern

@Bonsi สกอตต์ไม่มีเป็นmode=ตัวเลือกสำหรับการ VFAT, ดูติด (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ที่จะทำงาน

คำถามที่เกี่ยวข้อง (จะให้ตัวเลือกการเมานท์แบบกำหนดเองกับ udisks) ได้ที่นี่: วิธีกำหนดค่าให้บันทึกข้อมูลใน pendrive ทันทีได้อย่างไร ปรากฎว่าคุณสามารถใช้udevการกำหนดค่าเพื่อทำเช่นนั้น

การตั้งค่าตัวเลือกการเมานต์เริ่มต้นสำหรับ udisks เป็นไปไม่ได้จริงหรือ เสนอวิธีการแก้ปัญหาอื่นตามudisks-glueแต่ดูเหมือนว่ามีความน่าเชื่อถือน้อยลงเพราะท้ายที่สุดพึ่งพาudisksเพื่อให้ดูเหมือนว่าคุณสามารถเพิ่มตัวเลือก แต่ไม่ลบออกและโดยเฉพาะอย่างยิ่งshowexecยังคงอยู่ที่นั่น)

ในกรณีใด ๆ ฉันมักจะชอบที่จะปรับปรุงไฟล์ไบนารี


2

ไม่มีวิธีแก้ปัญหาใดที่แสดงผลเท่าที่ฉันสามารถบอกได้เพื่อให้โปรแกรมที่ฉันเขียนเป็นโปรแกรมเทอร์มินัล Linux เพื่อทำงานในพาร์ติชัน FAT32 ของฉัน แต่การเปลี่ยนชื่อไฟล์ของโปรแกรมเพื่อรวมนามสกุล. exe ทำงานได้ ทั้งหมดที่ฉันทำคือเปลี่ยนชื่อไฟล์เป็น filename.exe สำหรับโปรแกรมเทอร์มินัลที่ฉันพยายามเรียกใช้บนพาร์ติชัน FAT32 แล้วยกเลิกการเมานต์ติดตั้งใหม่อีกครั้งและตั้งค่าการอนุญาตดิสก์เพื่ออนุญาตให้ดำเนินการจากนั้นไปที่ชื่อไฟล์ exe และตั้งค่าการอนุญาตแล้วเครื่องหมายถูกจะติดแทนที่จะหันกลับไปที่เครื่องหมายลบและเมื่อฉันตั้งค่าพา ธ และป้อน. / filename.exe ที่ terminal prompt โปรแกรมจะรันตามที่ควรและแสดงบรรทัดคำสั่งรวมถึงชื่อไฟล์ .exe ตามที่ป้อนแม้ว่าไดเรกทอรีไฟล์ของ Ubuntu จะแสดงไฟล์ดังกล่าวเป็น MSDOS / Windows แต่จะทำงานเป็นโปรแกรม Linux


1

ดังนั้นฉันจึงพบวิธีที่ง่ายกว่ามาก (และวิธีแก้ปัญหาที่ปลอดภัยกว่า)

ใช้ gparted เพื่อจัดรูปแบบ USB FAT32 แล้วให้เรา Partition => Manage Flags เพื่อตั้งค่าสถานะต่อไปนี้: boot, lba



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.