Совместное использование папки с Windows Host на Freebsd Guest

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

Чего я пытаюсь достичь:

  • У меня дома есть ПК с установленной Windows 7
  • Я хотел бы запустить Unix в Virtual Box, так как мне более привычно разрабатывать/скриптовать на нем

В данный момент я остановился на FreeBSD, и мне удалось установить его и настроить сеть. Следующим шагом является разделение папки между Windows и FreeBSD, чтобы я мог легко редактировать файлы как в Windows, так и в FreeBSD. К сожалению, это кажется сложной задачей.

Я поискал в интернете и нашел два разных способа:

Я установил Guest Additions в freebsd используя pkg_add -r virtualbox-ose-additions, установка прошла достаточно быстро, и я отредактировал /etc/rc.conf, добавив две предложенные строки: vboxguest_enable="YES" и vboxservice_enable="YES" и перезагрузился.

Это не сработало. Команда для монтирования системы завершилась ошибкой:

# mount -t vboxsf shared /home/myuser/shared
mount: shared : Operation not supported by device

где shared – это имя папки, которую я настроил в настройках виртуальной машины Virtual Box для этой ВМ.

На самом деле, возможно ли использовать тип файловой системы vboxsf в freebsd? Некоторые комментарии предполагают, что это не поддерживается, но найти актуальную информацию сложно.

Далее я перешел к подходу с samba. В основном я следовал руководству из ссылки. К сожалению, это привело к:

# mount_smbfs -N -I 192.168.56.1 //winuser@winmachinename/Shared /mnt/shared
mount_smbfs: unable to open connection: syserr = RPC struct is bad

где Shared – это имя общей папки, которую я настроил в Windows, доступной для winuser очевидно. Пинг работает.

Я хотел бы отметить, что у меня нет пароля на гостевой учетной записи Windows, к которой я пытаюсь подключиться, это казалось проще, но, возможно, это как-то мешает samba.

редактировать: работая из PuTTY, я не заметил, что некоторые сообщения выводились в консоль:

smb_maperror: Unmapped error 3:31
smb_co_lock: recursive lock for object 1

оба сообщения появляются несколько раз. /конец редактирования

Если прямая передача файлов не работает, есть идеи, как заставить это сделать с помощью samba? Статья предполагает, что это уже было сделано как минимум некоторыми людьми.

Техническая информация:

  • Хост: Windows 7 Домашняя версия (актуальна)
  • Гость: FreeBSD 9.0-RELEASE #0: Вт Янв 3 07:15:25 UTC 2012 [email protected]:/usr/obj/usr/src/sys/GENERIC i386
  • Virtual Box: 4.1.16 r78094

Я открыт для новых предложений по поводу общего доступа. Я бы, по возможности, предпочел избежать передачи файлов туда и обратно: это не особенно эффективно и всегда является источником запутанных ошибок.

Я также открыт для смены систем. Мне нравится философия freebsd, но если это не работает, я без проблем перейду на Linux.

РЕДАКТИРОВАТЬ:

Этот вопрос теперь имеет чисто теоретический интерес. Я переключился на использование Ubuntu Server и смог настроить его без samba, так как vboxsf хорошо поддерживается.

Общие папки VirtualBox все еще не поддерживаются в FreeBSD.

Коммитер портов FreeBSD подтвердил это в списках рассылки FreeBSD (по состоянию на 2014-06-24):

Общие папки для гостевых систем FreeBSD пока не поддерживаются […] Есть какой-то черновой код и модуль ядра, но он еще не работает.

Если вы хотите следить за состоянием порта, пожалуйста, ищите в списках рассылки. Есть также IRC канал #freebsd-vbox на Freenode. Это было опубликовано в списке рассылки freebsd-hackers в конце этого поста. Вы найдете там разработчиков.

Наконец, вот что в настоящее время поддерживает порт virtualbox-ose-additions согласно Главе 22.2 Руководства FreeBSD на сегодняшний день:

Гостевые дополнения VirtualBox™ предоставляют поддержку:

  • Совместное использование буфера обмена.
  • Интеграция указателя мыши.
  • Синхронизация времени с хостом.
  • Масштабирование окна.
  • Бесшовный режим.

Как вы видите, поддержка общих папок для FreeBSD пока отсутствует.

Глава 4.3 руководства VirtualBox гласит:

Общие папки поддерживаются гостевыми системами Windows (2000 или более поздняя версия), Linux и Solaris.

Снова нет FreeBSD. Используйте SMB-списки для обмена, следуя инструкциям, которые упоминали другие.

Убедитесь, что вы настроили общий доступ к папке windows для пользователя, которого вы хотите использовать для совместного использования с freebsd.

Мне нравится добавлять следующее в /etc/hosts для удобства использования.

<ip адрес сервера>  vboxhost
например.
192.168.56.1    vboxhost

Сначала проверьте монтирование папки:

mount_smbfs -I vboxhost //username@nameofwindowsbox/foldername /mnt

Если это правильно, вам будет предложено ввести пароль пользователя windows.

Чтобы монтировать её при загрузке, добавьте следующее в /etc/fstab

//username@nameofwindowsbox/foldername  /mnt smbfs  rw,noauto  0 0

Она будет смонтирована каждый раз при загрузке

Если вы не хотите, чтобы вас запрашивали пароль, добавьте это в /etc/nsmb.conf:

[default]
[NAMEOFWINDOWSBOX]              
addr=<ip адрес хоста>
[NAMEOFWINDOWSBOX:USERNAME]
password=<myPassword>

Я боролся с той же проблемой. Несколько вещей на стороне Windows позволили мне, наконец, заставить mount_smbfs работать в FreeBSD 9.0:

  • Включите анонимный доступ для системы

Центр управления сетями и общим доступом → Изменить дополнительные параметры общего доступа → Выключить защиту паролем для общего доступа

  • Включите анонимный доступ к папке через простое совместное использование

Свойства → Общий доступ → Поделиться… → Добавить ‘Все’

В свойствах общего доступа есть два способа создать общий ресурс: Простое совместное использование и Расширенное совместное использование. Я использовал Расширенное совместное использование, и по какой-то причине, которая меня на этом этапе не волнует, это не сработало; я снова добавил общий ресурс через Простое совместное использование и только тогда mount/smbclient заработали.

Проверка работы анонимного входа через smbclient:

[root@fileserv ~]# smbclient -N -I 192.168.56.1 '\\twblamer-pc\share'
Domain=[TWBLAMER-PC] OS=[Windows 7 Professional 7601 Service Pack 1] Server=[Windows 7 Professional 6.1]
smb: \> dir
  .                                  DR        0  Чт Дек 13 04:33:09 2012
  ..                                 DR        0  Чт Дек 13 04:33:09 2012
  mydirectory                         D        0  Чт Дек 13 01:55:45 2012

Общие папки VirtualBox теперь (2025) работают на FreeBSD, хотя документация о Общих папках для Virtual Box 7.1 явно этого не утверждает. Я не думаю, что функция Automount работает, но, тем не менее, вы можете просто следовать инструкциям в документации, чтобы настроить общую папку на вашей хост-системе. Подробнее ниже о настройке на вашей гостевой системе FreeBSD.

Допустим, вы хотите разместить sharedfolder в домашнем каталоге вашего обычного пользователя username. Сначала решите это на хост-системе, следуя документированной процедуре, например, зайдите в настройки GUI VirtualBox для вашей гостевой системы FreeBSD и добавьте общую папку с путем к папке, установленным в подходящее место на вашей хост-системе, именем папки как sharedfolder и точкой монтирования как /home/username/sharedfolder.

На гостевой ВМ FreeBSD вам нужно установить и включить VirtualBox Guest Additions. Внимательно следуйте инструкциям, приведенным в virtualbox-ose-additionsпрочитайте их на FreshPorts.org. Если они включены через rc, убедитесь, что вы перезапустили систему.

Теперь у вас должна быть команда mount_vboxvfs. Хотя у неё нет страницы man, вы можете получить заметки по использованию, введя mount_vboxvfs -h без указания имени или точки монтирования.

$ mount_vboxvfs -h
Usage: [OPTIONS] NAME MOUNTPOINT
Mount the VirtualBox shared folder NAME to MOUNTPOINT.

Options:
  -w    mount the shared folder writable
  -r    mount the shared folder read-only (the default)

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

# mount_vboxvfs -w sharedfolder /home/username/sharedfolder

(# это командная подсказка, указывающая, что вам нужно сделать это от имени администратора, например, используя su или sudo или doas; не вводите сам знак #.)

Если вы хотите, чтобы общая папка монтировалась автоматически при следующем запуске гостевой FreeBSD, вы можете использовать rc(8) скрипт, задание в cron(8) (см. также crontab(1) и crontab(5)) или fstab(5).

Если вы используете fstab, убедитесь, что вы предоставили пользователю, которому вы хотите предоставить доступ, правильные разрешения, проверив $ id username (см. id(1)). Затем добавьте эту строку в таблицу в /etc/fstab:

sharedfolder   /home/username/sharedfolder    vboxvfs  rw,late,failok,uid=<user's user id>,gid=<user's group id>  0     0

failok означает, что если процесс монтирования не удается, например, некоторые настройки изменились на хост-компьютере, то гостевая FreeBSD не загружается в однопользовательский режим. Более подробное обсуждение на сайте https://forums.freebsd.org/threads/how-do-i-mount-virtualbox-shared-folders-automatically.88129/

.

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

Для профессионального решения задачи обмена папками между Windows-хостом и гостевой ОС FreeBSD в среде VirtualBox, предлагаем рассмотреть детально все возможные подходы и нюансы, учитывая текущие ограничения и возможности.

Теория (Theory)

Обмен файлами между различными операционными системами в виртуальной среде часто требует установки дополнительных компонентов или настройки сетевых протоколов. На текущий момент (по состоянию на 2023 год), виртуальная машина VirtualBox не поддерживает напрямую функцию "общих папок" (Shared Folders) для FreeBSD, хотя эта функция поддерживается для систем Windows, Linux и Solaris. Это может обусловить необходимость использования альтернативных методом таких как Samba.

Samba — это программный набор, обеспечивающий взаимодействие между операционными системами UNIX и Windows по протоколу SMB/CIFS, что позволяет совместное использование файлов и принтеров. Однако, отсутствие пароля в учетной записи Windows может вызывать проблемы с подключением, так как большинство современных систем безопасности требуют аутентификации для установления соединения.

Пример (Example)

Допустим, у вас есть ПК с Windows 7, на котором запущен VirtualBox с гостевой ОС FreeBSD 9.0-RELEASE. Вам необходимо интегрировать папку, расположенную на Windows, чтобы одновременно работать с ней из FreeBSD. Вот последовательность действий, которую вы могли бы рассмотреть:

  1. Установите и настройте дополнения гостевой ОС в FreeBSD:

    pkg_add -r virtualbox-ose-additions
    echo 'vboxguest_enable="YES"' >> /etc/rc.conf
    echo 'vboxservice_enable="YES"' >> /etc/rc.conf

    Перезагрузите виртуальную машину после добавления этих строк.

  2. Попытка использования vboxsf (если бы режим был доступен) встречает ошибку, так как поддержка отсутствует:

    mount -t vboxsf shared /home/user/shared

    Ошибка: mount: shared : Operation not supported by device

  3. Переход на использование Samba:

    • Настройте общий доступ к папке на Windows.
    • Добавьте в файл /etc/hosts для упрощения доступа:
      192.168.56.1    vboxhost
    • Попробуйте смонтировать папку с помощью команды:
      mount_smbfs -I 192.168.56.1 //winuser@winmachinename/Shared /mnt/shared

      Ошибка: mount_smbfs: unable to open connection: syserr = RPC struct is bad

  4. Проведение диагностики и настройка правильной конфигурации:

    • Убедитесь, что общий доступ к папке настроен для всех пользователей (не установлен пароль).
    • Проверьте с использованием smbclient:
      smbclient -N -I 192.168.56.1 '\\machine-name\Shared'

Применение (Application)

Проблема совместного использования папок в данной связке ОС может быть решена несколькими способами, но важна подготовительная работа: правильно настроить как Windows, так и FreeBSD. Вам необходимо убедиться, что на Windows включено анонимное подключение, а на FreeBSD установлены все необходимые пакеты.

Дополнительно рассмотрим возможность использования NFS, если Samba или vboxsf не оправдывают ожиданий. Для работы с NFS на Windows потребуется установка дополнительного программного обеспечения, например, Windows Services for UNIX (включает в себя клиент NFS). На FreeBSD можно выполнить следующие команды для установки NFS:

pkg install nfs-utils
echo 'nfs_server_enable="YES"' >> /etc/rc.conf
service nfsd start

В заключение, успешное использование общего доступа к папкам возможно при условии тщательной настройки обеих операционных систем и учета специфики используемых протоколов и программного обеспечения. Windows должна быть настроена для работы с соответствующими сетевыми протоколами, такими как NFS или Samba, а FreeBSD нужно дополнительно сконфигурировать соответствующими клиентами.

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

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