Host symlinks not working properly in v7

Discussion in 'Windows Virtual Machine' started by Eirà kr, Feb 11, 2012.

  1. Eirà kr

    Eirà kr Member

    Messages:
    42
    Mac OSX 10.6.8 host.
    Win XP guest.

    I've used symlinks to directories extensively to keep my filesystem sane and to simplify sharing with guest OSes and via DropBox. This approach has worked quite well in the past.

    However, after upgrading to Parallels 7, symlinks on the host Mac filesystem are *no longer* recognized by the Windows guest as regular directories, but instead as *Windows shortcuts*. This completely breaks path handling in Windows for any path that includes a symlinked directory from the host filesystem:
    * Shortcuts that include a symlink in the path fail to open anything, and fail silently without any error message. These used to work just fine in Paralles 6.
    * Typing a path into Explorer that includes a symlink generates an error, stating "Windows cannot find '[path you typed in]'. Check the spelling and try again, or try searching for the item by clicking the Start button and then clicking Search." This applies to both mapped drives, and fully-qualified paths (starting with "\\psf\..."). This also used to work just fine in Parallels 6.

    Note that this is with proper symbolic links created in the host Mac filesystem, using the "ln -s [path to source] [path to where to place the symlink]" Bash syntax. This is *not* about Mac aliases, created by the Finder.

    Confusingly, the Finder shows symlinks as aliases when viewed in the Info window. Running "ls -a" in Bash shows symlinks as symlinks, and aliases as regular files. Both symlinks and aliases are recognized by the Windows guest as Windows shortcuts, suggesting that Parallels is translating both without distinction. I suspect that changes to Parallels 7 to support Mac aliases have introduced this regression.

    For reference, I also run VMware on an Ubuntu 10.04 host with a Windows XP guest, and in that setup, symlinked directories in the host filesystem are recognized in the Windows guest as regular directories, and shortcuts and Explorer paths work just as if the symlink were a regular directory. ***This is the expected behavior for Parallels as well, and _was_ the actual behavior in Parallels 6.***

    I would appreciate any further information about this regression, and particularly any news of when it might be fixed.

    Thank you,
     
    Last edited: Feb 19, 2012
  2. Eirà kr

    Eirà kr Member

    Messages:
    42
    Anyone? Any devs reading this?

    And does anyone know where to report bugs? I poked around the Parallels website but didn't see anything that looked like a bug tracker.

    Ta,
     
  3. Eirà kr

    Eirà kr Member

    Messages:
    42
    Updated to 7.0.15055, rev 740667, 5 March 2012. This issue is still present.

    Does anyone know how to contact the company regarding a bug report?
     
  4. zwergeule

    zwergeule Bit poster

    Messages:
    1
    Same problem. Any solution?
     
  5. DrNathaniel

    DrNathaniel Bit poster

    Messages:
    1
    This is still a bug, and seems to be a long-standing one. Quite simply, the prl_fs filesystem does not allow creation of symlinks. I think basically symlinks are interpreted on the host end instead of the client end, so the client never sees a symlink. Either that or it's a security issue, or a user-consistency issue. Anyway, it's damned annoying not to be able to create a symlink in your work area.

    I'm in the same boat: I'm developing software that uses a build system that requires symlinks in my build area, and I want the files in the build area hosted on the Mac so that I can use TextMate instead of some crappy X11 editor.

    My workaround: Create an NFS share on the mac. On the mac, edit /etc/exports to make the line:
    /Users/MyUserName/vm -network 10.211.55.0 -mask 255.255.255.0 -mapall=510

    On the linux VM, add a line to /etc/fstab:
    10.211.55.2:/Users/tagg/vm /media/mac nfs rw,exec,rsize=8192,timeo=14,auto,intr 0

    This assumes that you have your network in "Shared Network" mode. In this mode, the host OS has got this particular IP address. This should be secure, since you're exporting the <home>/vm directory only to clients in the internal network.

    The only sticky point is that you my have to sync the user ID on the linux VM to match the user ID on your mac; not all host VMs will cleanly translate user names. There are googlable FAQs telling you how to do this (with a recursive 'find' command).
     
  6. mnewsam

    mnewsam Bit poster

    Messages:
    1
    Opensuse VM and parallels 8

    Hi,

    Glad I came across this thread as I have this problem with Parallels 8 trying to set up an opensuse VM to run Cadence software.

    The NFS work-around worked for me, although not with the settings DrNathaniel used. For me I had to:

    OSX:
    First modify nfsd so that it will allow the hard-drive to be used as a network share:
    Edit /System/Library/LaunchDaemons/com.apple.nfsd.plist and add in a -N option after the nfsd command:
    <array>
    <string>/sbin/nfsd</string>
    <string>-N</string>
    </array>

    Then need to create or edit the file /etc/exports to contain:
    /Path/to/dir -mapall=<username> -alldirs

    Then to get this active use:
    sudo launchctl unload /System/Library/LaunchDaemons/com.apple.nfsd.plist && sudo launchctl load /System/Library/LaunchDaemons/com.apple.nfsd.plist

    If you do: ps aux | grep nfsd you should get the following: /sbin/nfsd -N

    If you modify /etc/exports again then use sudo nfsd restart to get your changes active.

    Now in opensuse 12.2 VM you need to modify the /etc/fstab file and add the following:
    Host-IP-ADDr:/Path/to/dir /Path/to/VM/dir nfs defaults 0 0

    Need your host IP address e.g 192.168.24.3 you can find it by using the command ifconfig the IP address is the inet one.

    The VM dir you are mapping this to must exist a common place on opensuse to put this is in /media so create a dir mkdir /media/<dir> to match your entry in /etc/fstab

    To see if this is now working do:

    sudo mount -a

    and look in /media/<dir> to see if files have appeared. You should have read, write and execute permissions into this directory and ln -s will now work.

    At least it did for me!

    Note all commands above will require root access, so be careful!

    Thanks for the tips that allowed me to find this solution.

    Cheers,
    Mark
     

Share This Page