Как заставить Vagrant Homestead загружаться с помощью Hyper-V - PullRequest
0 голосов
/ 06 января 2019

Мне не удалось получить усадьбу для загрузки, используя указания, приведенные здесь https://laravel.com/docs/5.7/homestead с использованием hyper-V. Первоначальная проблема заключалась в том, что машина не загружалась, а зависала бесконечно. После исправления этой проблемы я столкнулся с еще двумя, прежде чем смог выполнить команду vagrant up.

Я не уверен на 100%, что это правильное место, чтобы опубликовать это, но я потратил около 2 недель на попытки решить эту проблему, и, надеюсь, я смогу сэкономить немного времени, если у них возникнут аналогичные проблемы. Я мог использовать усадьбу с использованием виртуальной коробки, но было крайне неудобно не запускать Hyper-V на моем ПК, поэтому я удалил виртуальную коробку и попытался настроить усадьбу с помощью Hyper-V. Для меня виртуальная машина не загружалась бы вообще. Когда я смотрел на него в диспетчере Hyper-V, он просто зависал при запуске. Оказалось, что он настроен как блок поколения 1 с дисководом, подключенным как IDE. Для меня решением было создать виртуальную машину нового поколения 2 и подключить предоставленный диск с помощью SCSI. Затем я отключил безопасную загрузку и смог загрузить. Затем произошел сбой во время сценария инициализации, который пытался смонтировать стандартную папку vagrant. Я не мог понять, как изменить этот вызов, поэтому отключил его, поскольку для усадьбы он не нужен, насколько я могу судить. Тогда моя третья проблема не заключалась в том, чтобы смонтировать какой-либо пользовательский общий ресурс в файле homestead.yaml. Некоторый поиск в Google показал, что мне нужно было сделать этот вызов без дополнительных параметров, которые, по-видимому, сценарий не предоставил. Я изменил скрипт, и команда vagrant up была успешно выполнена. Ниже приведены подробности шагов, которые я предпринял. Если есть более простой способ запустить Vagrant Homestead с использованием Hyper-V, я был бы признателен за совет.


Проблема 1: не загружается

Описание: Похоже, проблема заключается в том, что при загрузке первого поколения используется контроллер IDE. Это не похоже на работу для моей установки Windows 10 Pro.

Разрешение:

1. Created a new VM using Generation 2 and attached the existing 
       "ubuntu-18.04-amd64.vhdx" to it using SCSI.

2. Boot this VM and then shutdown. 

3. Turn off secure boot

4. Replace the Virtual machine files in [VagrantInstallFolder]\boxes\laravel-VAGRANTSLASH-homestead\6.4.0\hyperv with the new ones created above.

5. Delete newly created box from HyperV

Проблема 2: не будет монтировать общий ресурс Vagrant

Сообщение об ошибке: ==> Усадьба-7: Машина загружена и готова! Для реализации синхронизированной папки NFS не было предоставлено действительных идентификаторов чернослив. Это внутренняя ошибка с Vagrant, и проблема должна быть поданный.

Описание: Сбой команды vagrant up при попытке смонтировать общий ресурс vagrant. Я не нашел способа переопределить параметры для этого вызова, поэтому он всегда пытался сделать вызов, используя nfs, который не поддерживается в Windows. Если есть возможность переопределить настройки этого вызова, то это будет предпочтительным способом. Но единственный способ заставить сценарий инициализации продолжить выполнение - отключить этот общий ресурс.

Разрешение:

1. Modify the scripts\homestead.rb file and add the code below to the
 Hyper V config settings section "Configure A Few Hyper-V Settings". This
 will disable the default file share but you can still add your own from
 the homestead.yaml file after completion of issue 3.

#Disable the default Vagrant file share
config.vm.synced_folder ".", "/vagrant", disabled: true

Проблема 3: ошибка, связанная с определением пользователем общих файлов в файле homestead.yaml.

Сообщение об ошибке:

Не удалось смонтировать папки в гостевой системе Linux. Обычно это потому, что файловая система "vboxsf" недоступна. Пожалуйста, убедитесь, что гостевые дополнения правильно установлены в гостевой и может работать правильно. Была предпринята команда:

крепление -t CIFS -o уегз = 3, мандатная = / и т.д. / smb_creds_vgt-96269f65d23acb279735d26264428995-66f0bd5cbca4d218f5f0b8a5f1712727, UID = 1000, GID = 1000, NOLOCK, UDP, noatime //192.168.1.107/vgt-96269f65d23acb279735d26264428995-66f0bd5cbca4d218f5f0b8a5f1712727 / дом / бродяга / код

Вывод ошибки из последней команды:

ошибка монтирования (22): неверный аргумент См. Справочную страницу mount.cifs (8) (например, man mount.cifs)

Описание: Сбой команды vagrant up при попытке смонтировать определенные пользователем общие ресурсы в файле homestead.yaml. Кажется, что монтирование передает ненужные параметры команде монтирования. Нам нужно переопределить вызов mount в файле scripts \ homestead.rb, чтобы не использовать параметры.

Разрешение:

1. In the "Register All Of The Configured Shared Folders" section replace the line below. 

    Replace 
    config.vm.synced_folder folder['map'], folder['to'], type: folder['type'] ||= nil, **options

    With
    config.vm.synced_folder folder['map'], folder['to'], type: "smb"

2. Then run "vagrant up --provider hyperv"
...