วิธีการเมาท์โฟลเดอร์ที่ใช้ร่วมกันของ VirtualBox [ปิด]


58

ขั้นตอนการติดตั้งโฟลเดอร์ VirtualBox ที่ใช้ร่วมกันใน Linux คืออะไร

ฉันลองใช้คำสั่ง mount ต่อไปนี้หลายรูปแบบ แต่ฉันยังคงได้รับprotocol errorหรือมีข้อผิดพลาดอื่น ๆ

sudo mount -t vboxsf share /home/toto

นี่เป็นคำถามหรือไม่ โปรดใช้ถ้อยคำใหม่เพื่อที่ว่ามันจะกลายเป็นคำถามโพสต์คำตอบของคุณเองแล้วเราจะดีใจมากที่จะลบ downvote
icedwater

1
แก้ไขเพื่อให้เป็นไปตามมาตรฐาน Q&A

กรุณาอัปเดตคำถามในสิ่งที่คุณพยายามและสิ่งที่คุณได้รับคือข้อผิดพลาด

แก้ไขเพื่อแสดงคำสั่งที่ไม่ทำงาน ข้อผิดพลาดทั่วไปprotocol errorตามที่ระบุในคำถาม

ฉันได้รับข้อผิดพลาดนี้วิธีแก้ไข "เมานต์: ประเภทระบบไฟล์ที่ไม่รู้จัก 'vboxsf'"
sandip divekar

คำตอบ:


111

ตกลงสิ่งนี้ทำให้ฉันสับสนเล็กน้อย แต่ในที่สุดฉันก็รู้ว่าเกิดอะไรขึ้น ดังนั้นฉันจึงตัดสินใจให้ 2 เซ็นต์ของฉันด้วยความหวังว่าจะมีความชัดเจนมากขึ้นสำหรับผู้อื่นและถ้าฉันลืมบางครั้งในอนาคต :)

ฉันไม่ได้ใช้ชื่อของส่วนแบ่งที่ฉันสร้างขึ้นใน VM แทนฉันใช้shareหรือvb_shareเมื่อชื่อของการแชร์ของฉันเป็นwdดังนั้นนี่ทำให้ฉันสับสนเป็นเวลาหนึ่งนาที

ขั้นแรกให้เพิ่มไดเรกทอรีแชร์ของคุณในกล่อง VM: ป้อนคำอธิบายรูปภาพที่นี่

สิ่งที่คุณตั้งชื่อการแชร์ของคุณที่นี่จะเป็นชื่อที่คุณจะต้องใช้เมื่อติดตั้งใน vm guest OS เช่นฉันชื่อเหมือง"wd"สำหรับไดรฟ์พาสปอร์ตดิจิตอลตะวันตกของฉัน

ถัดไปบน guset OS ให้สร้างไดเรกทอรีเพื่อใช้สำหรับการเมานต์ของคุณโดยเฉพาะในโฮมไดเร็กทอรี่ของคุณ

mkdir share

ถัดไปเปิดเทอร์มินัลและคัดลอกและวางต่อไปนี้หรือพิมพ์ในคุณสามารถเปิดใช้งานคลิปบอร์ดที่ใช้ร่วมกันภายใต้อุปกรณ์ - > คลิปบอร์ดที่ใช้ร่วมกัน -> แบบสองทิศทาง

sudo mount -t vboxsf wd ~/share/

ตอนนี้คุณควรจะสามารถคัดลอกไฟล์ระหว่างระบบปฏิบัติการโดยใช้โฟลเดอร์"share"ในโฮมไดเร็กตอรี่ของคุณ

หวังว่านี่จะช่วยได้!


1
ฉันใช้เวลาสองสามชั่วโมงเพื่อทำความเข้าใจฉันจะรับไฟล์จากแขกได้อย่างไร ปรากฏว่า "sharename" (จากเอกสาร VBox อย่างเป็นทางการ) ในคำสั่ง "mount" - เป็นเพียงชื่อที่ระบุในกล่องเสมือนโฟลเดอร์ที่ใช้ร่วมกันที่คอลัมน์แรก เยี่ยมมากคุณเป็นฮีโร่ของฉัน
zen11625

2
คำตอบที่ดี +1 สำหรับสกรีนช็อต ... นี่เป็นการแชร์เป็นรูท แต่ฉันเชื่อว่า ดู [เอกสาร] ( forums.virtualbox.org/viewtopic.php?t=15868 ) เกี่ยวกับวิธีติดตั้งในฐานะผู้ใช้ปัจจุบันของคุณเช่น:sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share ~/host
timbrown

@user ฉันจะทำให้การเมานต์นี้อัตโนมัติเมื่อบู๊ตได้อย่างไร

หากคุณไม่ทราบ ID ผู้ใช้ของคุณคุณสามารถใช้ตัวแปรได้ ในกรณีนี้คำสั่ง mound จะกลายเป็นsudo mount -t vboxsf -o uid=$UID,gid=$(id -g) wd ~/share

28

สำหรับ VirtualBox ที่มี Linux แขกเหล่านี้คือขั้นตอนในการเมานต์โฟลเดอร์ที่แชร์:

  1. ใช้แอปพลิเคชันของโฮสต์ VirtualBox ผู้จัดการ VirtualBox เพื่อระบุโฟลเดอร์โฮสต์ที่จะแชร์

  2. ตรวจสอบให้แน่ใจว่ามีการติดตั้ง VirtualBox Guest Additions ใน VirtualBox guest

  3. ในผู้เยี่ยมชม Linux คำสั่ง mount ควรแสดงบรรทัดที่การแชร์ถูกเมาท์ type vboxsfนี่คือการแสดงโดย ปัญหากลายเป็นว่าจุดเชื่อมต่ออาจไม่ตรงตามที่ต้องการและการอนุญาตจะเป็นรูทเท่านั้น /media/sf_สถานที่ตั้งของภูเขาเริ่มต้นอยู่ใน

  4. คุณสามารถเข้าถึงใช้ร่วมกันโดยการทำให้ผู้ใช้หรือรหัสกลุ่มของสมาชิกของกลุ่ม1000 vboxsfสิ่งนี้ทำได้โดยการเปลี่ยนvboxsfบรรทัดใน/etc/groupไฟล์ อาจต้องรีบูต

  5. คุณสามารถเปลี่ยนตำแหน่งที่ติดตั้งโฟลเดอร์ได้โดยใช้คำสั่ง VBoxControl คำสั่งถูกติดตั้งเมื่อติดตั้ง Guest Additions อาจต้องรีบูต ตัวอย่างเช่นในการเปลี่ยนจุดเชื่อมต่อจาก/media/sf_...เพื่อ/home/toto/sf_...ใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโฟลเดอร์แชร์ VirtualBox guestproperty guest

sudo VBoxControl guestproperty set / VirtualBox / GuestAdd / SharedFolders / MountDir / home / toto /

เพื่อยืนยันการเปลี่ยนแปลงใช้รับ:

sudo VBoxControl guestproperty get /VirtualBox/GuestAdd/SharedFolders/MountDir

อ้างอิง:

ข้อมูลโฟลเดอร์ที่แชร์ของ VirtualBox

ข้อมูล guestproperty ของ VirtualBox


4
ปัญหาใหม่ด้วย Vbox 4.3.10 ลิงค์เสียตรวจสอบเพื่อตรวจสอบ (ls -l) /sbin/mount.vboxsf หากเป้าหมายนั้นไม่มีอยู่ไดเรกทอรีจะต้องแมปใหม่: sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
ppostma1

4
ในการเพิ่มผู้ใช้ myuser ให้กับกลุ่ม vboxsf คุณสามารถใช้: sudo adduser myuser vboxsf

VirtualBox 4.3.14 แก้ไขปัญหาการติดตั้ง Guest Additions สำหรับ RHEL 7 และ CentOS 7. ติดตั้ง Additions ของบุคคลทั่วไปโดยใช้: if-not-true-then-false.com/2010/…

ฉันใช้งาน VirtualBox 4.3.20 บน Windows 8.1 ฉันติดตั้ง Ubuntu ใน VM แล้ว ฉันไม่เห็นtype vboxsfเมื่อเรียกใช้mountคำสั่งถึงแม้ว่าฉันได้ติดตั้งสิ่งแขกไว้! กรุณาช่วย
J86

20

เมื่อเผชิญหน้ากับ:

mount: Protocol error

หลังจากพยายามแชร์โฟลเดอร์ใน VirtualBox เช่น:

$ sudo mount -o uid=1000,gid=1000 -t vboxsf D_DRIVE ~/host

ในที่สุดมันก็ใช้งานได้สำหรับฉัน:

$ sudo apt-get install virtualbox-guest-dkms

(การตั้งค่าของฉัน: โฮสต์ Windows 7 แขก: Ubuntu 12.04,13.10,14.04; กำลังใช้งาน VBox 4.3.10 r93012 ในปัจจุบัน)


5

ติดตั้งการเพิ่มกล่องเสมือนบน guest os จากนั้นปิดระบบปฏิบัติการของผู้เยี่ยมชม เปิดการตั้งค่า guestos ในกล่องเสมือน จากนั้นเพิ่มโฟลเดอร์แชร์และบันทึกการตั้งค่า จากนั้นเริ่ม guest os และสำหรับ ubuntu ออกคำสั่งด้านล่าง เพิ่มผู้ใช้ปัจจุบันในกลุ่ม vboxsf

sudo adduser $ USER vboxsf

รีบูตเกสต์ OS และไปที่ / media / เพื่อเข้าถึงโฟลเดอร์ที่แชร์


sudo adduser ใช้งานไม่ได้สำหรับฉันฉันเพิ่มเพื่อใช้ "sudo usermod -a -G vboxsf myUser" และใช้งานได้ ขอบคุณ
อเล็กซ์

1
อ้างว่าเป็นสิ่งที่ขาดหายไป: sudo adduser $ vboxsf USER ตอนนี้ก็ทำงาน :-)

3

ภายในแขกของ Linux หรือ Mac OS X VirtualBox เมื่อคุณติดตั้ง VirtualBox Guest Additions แล้วคุณสามารถค้นพบโฟลเดอร์แชร์ VirtualBox ที่มีอยู่ด้วยคำสั่งต่อไปนี้:

sudo  VBoxControl  sharedfolder  list

หากโฟลเดอร์บ้านของคุณภายในแขกของคุณมีโฟลเดอร์ที่มีชื่อเดียวกับโฟลเดอร์ที่ใช้ร่วมกัน VirtualBox คุณสามารถติดตั้งโดยอัตโนมัติด้วยเชลล์สคริปต์ต่อไปนี้:

#!/bin/sh
#-----------------------------------------------------------------------------
# Discover VirtualBox shared folders and mount them if it makes sense
#-----------------------------------------------------------------------------

if  !  type  VBoxControl  > /dev/null;  then
  echo  'VirtualBox Guest Additions NOT found'  > /dev/stderr
  exit 1
fi

MY_UID="$(id -u)"
MY_GID="$(id -g)"

( set -x;  sudo  VBoxControl  sharedfolder  list; )  |  \
grep      '^ *[0-9][0-9]* *- *'                      |  \
sed  -e 's/^ *[0-9][0-9]* *- *//'                    |  \
while  read  SHARED_FOLDER
do
  MOUNT_POINT="$HOME/$SHARED_FOLDER"
  if  [ -d "$MOUNT_POINT" ];  then
    MOUNTED="$(mount  |  grep  "$MOUNT_POINT")"
    if  [ "$MOUNTED" ];  then
      echo  "Already mounted :  $MOUNTED"
    else
      (
        set -x
        sudo  mount  -t vboxsf  -o "nosuid,uid=$MY_UID,gid=$MY_GID"  "$SHARED_FOLDER"  "$MOUNT_POINT"
      )
    fi
  fi
done

1

เมื่อคุณได้รับข้อผิดพลาดต่อไปนี้: /sbin/mount.vboxsf: การติดตั้งล้มเหลวด้วยข้อผิดพลาด: ข้อผิดพลาดของโปรโตคอล

น่าเสียดายที่นี่หมายความว่าคุณใช้ชื่อที่ใช้ร่วมกันเริ่มต้นหรือชื่อไดเรกทอรีที่ใช้ร่วมกันของโฮสต์เหมือนกับชื่อที่ใช้ร่วมกันของผู้ใช้ทั่วไป ในกรณีนี้คือ "share" เพียงสร้างโฟลเดอร์แชร์อีกอันหนึ่งคือ "vb_share" จากนั้นก็เรียกใช้งาน:

mount -t vboxsf vb_share / home / <user> / host


1
  • ติดตั้ง Vbox เพิ่มเติม (ไฟล์ ISO หรือดาวน์โหลดแล้ว)
  • สร้าง dir ด้วยชื่ออะไรก็ตามในทั้งสองระบบ ( mkdir shareเช่น)
  • เชื่อมต่อกับ "โฟลเดอร์ที่ใช้ร่วมกัน VBox" โฟลเดอร์แชร์ใน sys ดั้งเดิม
  • ใช้คำสั่งเพื่อเชื่อมต่อโฟลเดอร์ของคุณ:
    sudo mount -t vboxsf name_of_folder_linked ~/name_of_folder_guest/

0

การติดตั้ง: VirtualBox 4.3.26, โฮสต์ Win 7 SP1, Debian jessie 8.0 (เสถียร) เกสต์

ใน VirtualBox Manager เลือกการตั้งค่าโฟลเดอร์ที่ใช้ร่วมกัน ...ในเมนูแบบเลื่อนลงอุปกรณ์

ในหน้าต่างป๊อปอัปที่ปรากฏขึ้นให้เลือกMachine Foldersในรายการโฟลเดอร์จากนั้นคลิกปุ่ม "เพิ่มคำจำกัดความโฟลเดอร์ใหม่ที่ใช้ร่วมกัน" (โฟลเดอร์สีฟ้าที่มีไอคอนเครื่องหมาย "+" สีเขียวทางด้านขวาของรายการโฟลเดอร์ )

ในที่เกิดเพิ่มแบ่งปันรูปแบบป๊อปอัพให้คลิกที่ปุ่มลูกศรลงในเส้นทางโฟลเดอร์ข้อมูลแล้วเลือกอื่น ๆ ดูโฟลเดอร์หน้าต่างป็อปอัพจะปรากฏขึ้น

(ในกรณีของฉันฉันเพิ่งเพิ่มฮาร์ดไดรฟ์อื่นลงในเวิร์กสเตชันของฉันเพื่อใช้สำหรับการแชร์เฉพาะซึ่งฟอร์แมตแล้วสำหรับ NTFS ด้วยชื่อโวลุ่ม "share" และเมาท์เป็น "G:" ดังนั้นฉันจึงคลิกลูกศร ถัดจากคอมพิวเตอร์ไดรฟ์ที่เลือกG:แล้วคลิกปุ่มตกลง )

(ในกรณีของคุณคุณควรเลือกโฟลเดอร์หรือไดรฟ์ที่คุณต้องการแชร์แล้วคลิกปุ่มตกลง )

เมื่อคุณทำการเลือกแล้วคลิกปุ่มตกลง VirtualBox Manager จะกรอกข้อมูลลงในช่องโฟลเดอร์พา ธและชื่อโฟลเดอร์ของแบบฟอร์มเพิ่มส่วนแบ่ง เว้นฟิลด์โฟลเดอร์พา ธ ไว้ตามลำพัง แต่คุณสามารถเปลี่ยนชื่อโฟลเดอร์ได้หากต้องการ - โปรดจำไว้เพื่อใช้ในภายหลัง

กรอกแบบฟอร์มเพิ่มส่วนแบ่งโดยเลือกช่องทำเครื่องหมายถาวรแต่อย่าลืมทำเครื่องหมายที่ช่องAuto-mountแล้วเราจะทำการติดตั้งในภายหลัง (และแน่นอนถ้าคุณต้องการสร้างโฟลเดอร์หรือไดรฟ์แบบอ่านอย่างเดียวจากนั้นไปข้างหน้าและเลือกช่องอ่านอย่างเดียว ) จากนั้นคลิกปุ่มตกลง

หุ้นใหม่ที่กำหนดควรจะปรากฏขึ้นเป็นรายการภายใต้เครื่องโฟลเดอร์ในรายการโฟลเดอร์ คลิกปุ่มตกลง

ในการติดตั้งส่วนแบ่งนี้ระหว่างการบู๊ต (เริ่มต้น) เราจำเป็นต้องเพิ่มบรรทัดคำจำกัดความการติดตั้งลงใน / etc / fstab ในการติดตั้งของแขก Debian jessie ของเรา การแก้ไขนี้จำเป็นต้องทำทั้งในฐานะรูทหรือผ่าน sudo เช่น:

sudo nano /etc/fstab

(ฉันใช้ส่วนตัว vi แต่เนื่องจาก nano เป็นตัวแก้ไขค่าเริ่มต้นใน Debian jessie ฉันระบุไว้ในตัวอย่างด้านบน)

ในการติดตั้งการแชร์นี้ในโฮมไดเร็กตอรี่ของฉัน, ด้วยความเป็นเจ้าของและกลุ่มที่ตั้งเป็น UID ส่วนตัวและ GID ของฉัน, ฉันได้เพิ่มคำจำกัดความต่อไปนี้เป็น / etc / fstab:

share /home/conib/share vboxsf comment=systemd.automount,uid=conib,gid=conib,noauto 0 0

(โปรดทราบว่าไม่มีช่องว่างรอบอักขระ "=", "." หรือ ",")

นิยาม / etc / fstab อยู่ในรูปแบบ

<Device> <Mount Point> <Type> <Options> <Dump> <Pass>

(โปรดทราบว่าควรมีช่องว่าง - ช่องว่างและ / หรือแท็บ - ระหว่างช่องของคำจำกัดความ แต่ไม่มีช่องว่างภายในช่อง)

ฟิลด์ "อุปกรณ์" ควรได้รับการกำหนดให้เป็นชื่อโฟลเดอร์ที่เราระบุไว้ผ่านทาง VirtualBox ผู้จัดการเพิ่มแบ่งปัน ฉันเปลี่ยนค่าเริ่มต้น "G_DRIVE" เป็น "แชร์"

"Mount Point" เป็นข้อมูลจำเพาะพา ธ ของไดเรกทอรีที่ต้องมีอยู่แล้ว แต่ควรว่างเปล่า (นั่นคือสิ่งที่มีอยู่แล้วในไดเรกทอรีนั้นจะถูกซ่อนไว้โดยสิ่งที่คุณกำลังติดตั้งอยู่ด้านบนของมัน) ฉันได้สร้างไดเรกทอรีย่อยใหม่ที่ว่างเปล่าชื่อ "share" ในไดเรกทอรีบ้านของฉัน

"ประเภท" คือ "vboxsf"

"ตัวเลือก" (ความคิดเห็น = systemd.automount, uid = conib, gid = conib, noauto) เป็นบิตที่ยุ่งยากและใช้เวลาเล็กน้อยในการทำงานกับการตั้งค่านี้

ตั้งค่า "Dump" เป็น 0 ยกเว้นว่าคุณรู้ว่าคุณต้องการตั้งเป็นอย่างอื่น

และเนื่องจากเราไม่ต้องการให้ fsck ตรวจสอบการแชร์นี้ให้ตั้ง "Pass" เป็น 0 ด้วย

เมื่อคุณเพิ่มบรรทัดคำจำกัดความลงใน / etc / fstab ให้รีบูตแขก Debian ของคุณและยืนยันว่าคุณสามารถดูไฟล์และโฟลเดอร์ย่อยของ Share ของคุณ

HTH

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