Как делиться (config.vm.synced_folder) каталогами между Windows 10 и виртуальной машиной CentOS 7, созданной с помощью Vagrant и VirtualBox.

Вопрос или проблема

Я пытаюсь создать виртуальную машину CentOS7 с помощью Vagrant (2.2.3) и Virtual Box (6.0.4) на Windows 10, используя следующий файл Vagrant

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7" 
  config.vm.network "private_network", ip: "192.168.56.3"

  config.vm.synced_folder "D://SharedWithVM//CentOS7-Work", "/media/sf_CentOS7-Work", type: "virtualbox"

  config.vm.provider "virtualbox" do |vb|
      vb.name = "Test"
   end
   config.vm.provision "shell", path: "./scripts/InstallGuestAdditions.sh"
end

а скрипт оболочки InstallGuestAdditions.sh выглядит следующим образом ..

#!/bin/bash
curl -C - -O http://download.virtualbox.org/virtualbox/6.0.4/VBoxGuestAdditions_6.0.4.iso
sudo mkdir /media/VBoxGuestAdditions
sudo mount -o loop,ro VBoxGuestAdditions_6.0.4.iso /media/VBoxGuestAdditions
sudo sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
rm VBoxGuestAdditions_6.0.4.iso
sudo umount /media/VBoxGuestAdditions
sudo rmdir /media/VBoxGuestAdditions

Все работает нормально, и виртуальная машина CentOS7 создана.

Если я проверяю свойства машины относительно общих каталогов, я вижу следующее

введите описание изображения здесь

Поэтому я довольно удивлён этим путём \\?\D:\SharedWithVM\CentOS7-Work.

Как мне изменить мой Vagrantfile, чтобы получить правильный путь?

Я пытался подключиться к своей виртуальной машине CentOS 7 с помощью команды vagrant ssh, и всё работает. Также команда cd /media/sf_CentOS7-Work работает отлично, но никакие файлы или каталоги не могут быть перечислены или поделены между двумя системами.

Вот снимок экрана моей виртуальной машины CentOS7

введите описание изображения здесь

Я пытался создать файлы или каталоги в Windows 10 и также в виртуальной машине CentOS7.

Любая рекомендация или пример будут оценены.

Мне удалось успешно сделать это в моем образе Virtualbox ранее; надеюсь, это сработает и для вас.

Инструкции: Внутри вашей виртуальной машины:

  1. Создайте каталог (например, mkdir -p /mnt/share)
  2. Подключите общий каталог к только что созданному каталогу, где “shared_folder” – это имя общего каталога, которое вы настроили ранее в Настройках (например, mount -t vboxsf shared_folder /mnt/share)

Теперь вы должны иметь возможность получать доступ к файлам из вашего эквивалентного каталога /mnt/share

Это сработало для меня

config.vm.synced_folder “C:\Users\syed\Pvagrant2\data\testplay”, “/vagrant”, type: ‘rsync’

vagrant up –provision

==> default: Синхронизация папки: /cygdrive/c/Users/syed/Pvagrant2/data/testplay/ => /vagrant
==> default: Запуск provisioner: ansible_local…
default: Запуск ansible-playbook…

PLAY [all] *********************************************************************

Ответ или решение

Чтобы правильно настроить обмен файлами между Windows 10 и виртуальной машиной CentOS 7 с использованием Vagrant и VirtualBox, следуйте следующим шагам.

Шаг 1: Убедитесь, что Vagrant и VirtualBox установлены корректно

Для начала убедитесь, что вы правильно установили Vagrant и VirtualBox. Проверьте версии, используя команды:

vagrant --version
VBoxManage --version

Шаг 2: Настройка Vagrantfile

Ваш Vagrantfile выглядит нормально, но есть некоторые улучшения, которые могут помочь устранить проблемы с доступом к общим папкам. Следующий пример кода показывает, как правильно настроить Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7"
  config.vm.network "private_network", ip: "192.168.56.3"

  # Используем тип 'virtualbox' для синхронизации папки 
  config.vm.synced_folder "D://SharedWithVM//CentOS7-Work", "/media/sf_CentOS7-Work", type: "virtualbox"

  config.vm.provider "virtualbox" do |vb|
      vb.name = "Test"
      vb.memory = "1024" # Вы можете настроить объем памяти, если необходимо
  end

  # Провизия для установки дополнений гостевой ОС
  config.vm.provision "shell", path: "./scripts/InstallGuestAdditions.sh"
end

Шаг 3: Установка дополнений гостевой ОС

Ваш скрипт InstallGuestAdditions.sh имеет правильную логику, но вы должны убедиться, что дополнения гостевой ОС действительно установлены. В CentOS 7 после установки дополнений проверьте, что VirtualBox Tools загружены:

lsmod | grep vbox

Если они загружены, это означает, что дополнения установлены. Если нет, повторите шаг установки дополнений гостевой ОС.

Шаг 4: Создание директории и монтирование общей папки

После того как вы запустили вашу виртуальную машину с помощью команды vagrant up, выполните следующие команды для создания каталога и монтирования общей папки:

  1. Подключитесь к виртуальной машине:

    vagrant ssh
  2. Создайте каталог для монтирования (если он не был создан автоматически):

    mkdir -p /media/sf_CentOS7-Work
  3. Смонтируйте общую папку:

    sudo mount -t vboxsf sf_CentOS7-Work /media/sf_CentOS7-Work

Теперь вы должны иметь возможность просматривать файлы из вашего Windows каталога D://SharedWithVM//CentOS7-Work в CentOS 7 по пути /media/sf_CentOS7-Work.

Шаг 5: Починить проблемы с доступом

Если вы не можете получить доступ к файлам, возможно, проблема связана с правами доступа. Иногда пользователю необходимо добавить себя в группу vboxsf:

sudo usermod -aG vboxsf $(whoami)

После этого вам нужно будет выйти из сессии SSH и снова зайти или перезапустить виртуальную машину.

Заключение

Теперь вы должны успешно иметь возможность обмениваться файлами между Windows 10 и вашей CentOS 7 виртуальной машиной с помощью Vagrant и VirtualBox. Связь между системами настроена на основе стандартного механизма виртуальных дисков VirtualBox, что упрощает весь процесс. В случае возникновения дальнейших проблем проверьте логи и права доступа на обеих системах.

Оцените материал
Добавить комментарий

Капча загружается...