Вопрос или проблема
Я пытаюсь создать виртуальную машину 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 ранее; надеюсь, это сработает и для вас.
Инструкции: Внутри вашей виртуальной машины:
- Создайте каталог (например,
mkdir -p /mnt/share
) - Подключите общий каталог к только что созданному каталогу, где “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
, выполните следующие команды для создания каталога и монтирования общей папки:
-
Подключитесь к виртуальной машине:
vagrant ssh
-
Создайте каталог для монтирования (если он не был создан автоматически):
mkdir -p /media/sf_CentOS7-Work
-
Смонтируйте общую папку:
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, что упрощает весь процесс. В случае возникновения дальнейших проблем проверьте логи и права доступа на обеих системах.