Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

prl_fs filesystem not found with latest parallels version (20.2.0) #483

Open
saml-caprx opened this issue Jan 27, 2025 · 16 comments
Open

prl_fs filesystem not found with latest parallels version (20.2.0) #483

saml-caprx opened this issue Jan 27, 2025 · 16 comments
Assignees
Labels

Comments

@saml-caprx
Copy link

saml-caprx commented Jan 27, 2025

Vagrant version 2.4.3. vagrant-parallels version 2.4.2. Mac M3 Pro.

==> default: Mounting shared folders...
    default: /.../vm/hosted => /vagrant
Vagrant was unable to mount Parallels Desktop shared folders. This is usually
because the filesystem "prl_fs" is not available. This filesystem is
made available via the Parallels Tools and kernel module.
Please verify that these guest tools are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t prl_fs -o uid=1000,gid=1000,_netdev vagrant /vagrant

The error output from the command was:

mount: /vagrant: unknown filesystem type 'prl_fs'.

I don't specify the file system type in the Vagrantfile:

# -*- mode: ruby -*-
# vi: set ft=ruby :

BOX = "hosted"
NAME = "hosted"
MEMORY = 12288
CPUS = 2

Vagrant.require_version ">= 2.4.1"

Vagrant.configure(2) do |config|

  # To register a box file with vagrant, run:
  # vagrant add box dev dev-parallels-desktop-arm64.box

  config.vm.box = BOX
  config.vm.hostname = NAME

  config.ssh.forward_agent = true

  config.vm.synced_folder "~/git", "/host/home/git"

  config.vm.provider :parallels do |vm, override|
    vm.name = NAME
    vm.linked_clone = false
    vm.memory = MEMORY
    vm.cpus = CPUS
    vm.customize ["set", :id, "--on-window-close", "keep-running"]
    vm.customize ["set", :id, "--startup-view", "headless"]
    # vm.update_guest_tools = true
  end

  config.vm.provider :virtualbox do |vm, override|
    vm.name = NAME
    vm.linked_clone = false
    vm.memory = MEMORY
    vm.cpus = CPUS
    vm.customize ["modifyvm", :id, "--vram", 256]
    vm.gui = false
  end

end
@BodoHuber
Copy link

BodoHuber commented Jan 28, 2025

Same problem here with me using Parallels Version 20.2.0 (55872) on Mac OS 15.2 running on ARM Mx silicon trying to vagrant up my Ubuntu 22.0.4 ARM64 VM. I get the same error telling that the filesystem 'prl_fs' is not found when vagrant tries to run the mount command.

After fixing the installation package of the parallels-tools (the prl-tools-lin-arm.iso) of that Parallels version has a missing closing " in the file dkms.conf as part of the packed prl_mod.tar.gz) the installation runs without errors. Without that fix the installation of parallels-tools fails in my setup. See here for instructions to manually re-install the parallels-tools: https://kb.parallels.com/en/129740

If I manually start my existing Ubuntu 22.04.4 ARM64VM which I updated to the new version of Parallels and where I re-installed the parallels-tools after the missing " fix, I can see all my shares mounted to /media/psf/... and they work. After checking some mounting status (less /etc/mtab and ps ax | grep prl_fsd) I see that those shares are mounted using a FUSE filesystem. 'prl_fs' is not listed in the available filesystems shown with cat /proc/filesystems.

So, did Parallels switch to FUSE filesystem on Linux recently? Is the vagrant-parallels mount command line using -t prl_fs deprecated then?

I am just guessing here, I have no access to a previous version of Parallels. But maybe someone can take advantage of this findings, maybe it is boring known stuff...

@mpdude
Copy link

mpdude commented Jan 29, 2025

To fix the Tools installation, attach the CD-ROM with Parallels Tools to the VM. Then:

$ sudo mount /dev/cdrom /mnt
$ cp -R /mnt prl-tools
$ cd prl-tools/kmods/
$ tar xzf prl_mod.tar.gz
$ patch
--- dkms.conf.orig	2025-01-29 16:28:49.324491015 +0000
+++ dkms.conf	2025-01-29 16:28:56.060555234 +0000
@@ -5,7 +5,7 @@
 # http://www.parallels.com


-MAKE="make -f Makefile.kmods KSRC=$kernel_source_dir KVER=$kernelver
+MAKE="make -f Makefile.kmods KSRC=$kernel_source_dir KVER=$kernelver"
 CLEAN="make -f Makefile.kmods clean"
 PACKAGE_NAME="parallels-tools"
 PACKAGE_VERSION="20.2.0.55872"
(press ctrl-D here)
$ tar czf prl_mod.tar.gz --exclude=prl_mod.tar.gz .
$ cd ..
$ sudo ./install
# To clean up:
$ cd ..
$ rm -rf prl-tools

But, as @BodoHuber outlined, that alone does not cut it since the prl_fs module is no longer there and filesystems seem to be mounted/shared in another way.

@mpdude
Copy link

mpdude commented Jan 29, 2025

For the time being, does anybody know where/how I can download PD version 20.1.3?

@BodoHuber
Copy link

@mpdude thx for the command sequence above, that seems to do exactly what I did manually before.

In the meantime I am sure that Parallels moved to fuse filesystem, but I don't know when this happened. Unfortunately I can not figure out how to mount a share from commandline using fuse.prl_fsd. If anybody knows how to do it, I am excited to learn about.

Since you ask for 20.1.3 in particular: do you know that this version still uses 'prl_fs' filesystem? Or is it a guess? I am asking since the version history of Parallels mentions a move to high-level FUSE API with 20.0.0, so I wonder if any 20.x version will work with vagrant. Even the forum link you mentioned above tells about downgrading to 19.

@mpdude
Copy link

mpdude commented Jan 29, 2025

You're right - it was just my unverified assumption that this happened in the latest minor release.

Unfortunately, I did not find any download sources for 20.1 or 20.0 versions. So, I will have to downgrade to v19 for the time being and hope that someone from Parallels will pick this up. I'd be glad to try workarounds or other if that helps.

@BodoHuber
Copy link

BodoHuber commented Jan 29, 2025

Testing 20.1.3 right now found here. Bitdefender did not find any issues, nor do I see any hint to fraud versions. Anybody ever had problems with downloads from sooftware.com? Sounds really suspicious, but I am carefully testing now.

Good news is that 20.1.3 seems to have 'fuse.prl_fsd' AND 'prl_fs'... Doing further tests now...

PS: 20.1.3 works with vagrant because it still has 'prl_fs' !!!

@mpdude
Copy link

mpdude commented Feb 13, 2025

I have opened support ticket 5156867 with Parallels and hope that somebody from their company will help us here :-)

@bineesh-n
Copy link
Contributor

Hi Guys, sorry for the delay, we are checking this internally.

@bineesh-n bineesh-n self-assigned this Feb 13, 2025
@bineesh-n bineesh-n added the bug label Feb 13, 2025
@cjlapao
Copy link
Contributor

cjlapao commented Feb 13, 2025

You can find the official download link here Version 20.1.3-55743

@mpdude
Copy link

mpdude commented Feb 17, 2025

@bineesh-n Do you have insight into your support tickets and could you check [Parallels #5156867]?

Do you really need me to send screenshots and a technical report for that? If now, maybe you could add an internal note that progress for this case does not depend upon that?

@BodoHuber
Copy link

@bineesh-n From my perspective a vagrant-parallels specialist would need to replace the mounting and unmounting commands, the allowed share options and in addition to the mtab-line which needs to be more fuse.prl_fsd aware. With fuse.prl_fsd the commands look different than the mount and unmount commands we are use to.

To mount a share vagrant-parallels would need to run something like sudo prl_fsd -ofsname=_mtab-name_,gid=1000,uid=1000,subtype=prl_fsd _mountingpoint_. In my tests a nonempty option was required because the vagrant share was already mounted when a second mount happened. But I do not know the vagrant-parallels plugin nor the whole vagrant project in detail to judge if this is a acceptable situation or if some unmount should happen before a second mount.

To unmount a share vagrant-parallels would need to run something like sudo fusermount -u _moutingpoint_

@sai-kumar-peddireddy
Copy link
Contributor

@saml-caprx I tried to reproduce this issue

it's not reproduced with Version Parallels 20.2.0 (55872) and 20.2.1 (55876)
Vagrant 2.4.3
Apple M2 Max

config I tested with

# -*- mode: ruby -*-
# vi: set ft=ruby :

BOX = "bento/ubuntu-22.04"
NAME = "hosted"
MEMORY = 12288
CPUS = 2

Vagrant.require_version ">= 2.4.1"

Vagrant.configure(2) do |config|

  # To register a box file with vagrant, run:
  # vagrant add box dev dev-parallels-desktop-arm64.box

  config.vm.box = BOX
  # config.vm.box_version = "20250118.01"
  config.vm.hostname = NAME

  config.ssh.forward_agent = true

  config.vm.synced_folder "~/go", "/host/home/go"

  config.vm.provider :parallels do |vm, override|
    vm.name = NAME
    vm.linked_clone = false
    vm.memory = MEMORY
    vm.cpus = CPUS
    vm.customize ["set", :id, "--on-window-close", "keep-running"]
    vm.customize ["set", :id, "--startup-view", "headless"]
    # vm.update_guest_tools = true
  end

  config.vm.provider :virtualbox do |vm, override|
    vm.name = NAME
    vm.linked_clone = false
    vm.memory = MEMORY
    vm.cpus = CPUS
    vm.customize ["modifyvm", :id, "--vram", 256]
    vm.gui = false
  end

end

Vagrant logs

Bringing machine 'default' up with 'parallels' provider...
==> default: Registering VM image from the base box 'bento/ubuntu-22.04'...
==> default: Creating new virtual machine as a full clone of the box image...
==> default: Unregistering the box VM image...
==> default: Setting the default configuration for VM...
==> default: Checking if box 'bento/ubuntu-22.04' version '202407.22.0' is up to date...
==> default: Setting the name of the VM: hosted
==> default: Preparing network interfaces based on configuration...
default: Adapter 0: shared
==> default: Clearing any previously set network interfaces...
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 10.211.55.140:22
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection refused. Retrying...
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for Parallels Tools installed on the VM...
==> default: Parallels Tools installed on this VM are outdated! In most cases
==> default: this is fine but in rare cases it can cause things such as shared
==> default: folders to not work properly. If you see shared folder errors,
==> default: please update Parallels Tools within the virtual machine and
==> default: reload your VM.
==> default: Setting hostname...
==> default: Mounting shared folders...
default: /Users/Qa/Office/Repos/vagrant-test => /vagrant
default: /Users/Qa/go => /host/home/go

mount command log in the guest machine

sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=6041316k,nr_inodes=1510329,mode=755,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1222728k,mode=755,inode64)
efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,nosuid,nodev,noexec,relatime)
/dev/mapper/ubuntu--vg-ubuntu--lv on / type ext4 (rw,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=18469)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
none on /run/credentials/systemd-sysusers.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
/var/lib/snapd/snaps/lxd_27038.snap on /snap/lxd/27038 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
/var/lib/snapd/snaps/core20_2186.snap on /snap/core20/2186 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
/var/lib/snapd/snaps/snapd_20674.snap on /snap/snapd/20674 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
/dev/sda2 on /boot type ext4 (rw,relatime)
/dev/sda1 on /boot/efi type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /run/snapd/ns type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1222728k,mode=755,inode64)
host_home_go on /media/psf/host_home_go type prl_fs (rw,nosuid,nodev,noatime,sync,ttl=250,share)
vagrant on /media/psf/vagrant type prl_fs (rw,nosuid,nodev,noatime,sync,ttl=250,share)
vagrant on /vagrant type prl_fs (rw,relatime,sync,ttl=250,uid=1000,gid=1000,_netdev)
host_home_go on /host/home/go type prl_fs (rw,relatime,sync,ttl=250,uid=1000,gid=1000,_netdev)

/var/lib/snapd/snaps/snapd_23546.snap on /snap/snapd/23546 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
/var/lib/snapd/snaps/core20_2499.snap on /snap/core20/2499 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
/var/lib/snapd/snaps/lxd_31335.snap on /snap/lxd/31335 type squashfs (ro,nodev,relatime,errors=continue,x-gdu.hide)
nsfs on /run/snapd/ns/lxd.mnt type nsfs (rw)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=1222728k,nr_inodes=305682,mode=700,uid=1000,gid=1000,inode64)

@bjoernhaeuser
Copy link

You also need to install the latest parallels tools, only they do not provide the required prl_fs:

==> default: Checking for Parallels Tools installed on the VM...
==> default: Parallels Tools installed on this VM are outdated! In most cases
==> default: this is fine but in rare cases it can cause things such as shared
==> default: folders to not work properly. If you see shared folder errors,
==> default: please update Parallels Tools within the virtual machine and
==> default: reload your VM.

If you build the VM with the latest tools, the mounting does not work anymore.

@sai-kumar-peddireddy
Copy link
Contributor

You also need to install the latest parallels tools, only they do not provide the required prl_fs:

==> default: Checking for Parallels Tools installed on the VM...
==> default: Parallels Tools installed on this VM are outdated! In most cases
==> default: this is fine but in rare cases it can cause things such as shared
==> default: folders to not work properly. If you see shared folder errors,
==> default: please update Parallels Tools within the virtual machine and
==> default: reload your VM.

If you build the VM with the latest tools, the mounting does not work anymore.

checking that

@sai-kumar-peddireddy
Copy link
Contributor

sai-kumar-peddireddy commented Feb 20, 2025

@bjoernhaeuser I was able to reproduce this issue and soon, will give a fix

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

7 participants