본문

VirtuaBox 공유폴더 사용시 Read-only file system 해결하기

이 문제를 찾다보니 'Fixing your virtualbox shared folder symlink error'라는 글에 이에 관한 설명이 잘 나와있길래 이를 인용하며 작성해 본다. 우선 여기에서 제시하는 문제점 확인 방법은 'ln -fs out/Release/node node '을 쳐보는 것이다. 이때 아래와 같이 오류가 발생하면 이 포스팅의 대상이 된다.


ln: failed to create symbolic link `node': Read-only file system


윈도우 호스트 환경 + 공유폴더 사용 환경상에서, 리눅스 게스트가 node.js나 python virtualenv등을 설치하려 할 때 이와 같은 오류가 발생한다고 하며, 개인적인 원인으로는, Android 소스를 받기위해 실행한 repo 스크립트에서 os.symlink(os.path.relpath(stock_hook, os.path.dirname(dst)), dst) 와 같은 파이선 코드가 실행되는 과정에서 위 문제가 발생한 것이었다. 


이를 해결하기 위해 아래 코드를 실행시켜서 문제를 처리하기 위한 설정을 하고, (VM_NAME은 가상머신 이름, 그리고 SHARE_NAME은 공유폴더 이름을 가리킨다) 

VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARE_NAME 1  


아래 코드를 실행시켜서 설정이 잘 저장되었는지 확인할 수 있다.

VBoxManage getextradata VM_NAME enumerate


[그림 1, 2] Symbolic Link 문제를 해결하기 위해 실행하는 명령들


그 후 '관리자 권한으로 실행'을 사용하여 VirtualBox를 실행하면 문제를 해결할 수 있다. 만약 사용자 계정이 관리자 그룹에 없는 경우에는 secpol.msc 상에서 “Local Policies-User Rights Assignments(로컬 정책-사용자 권한 할당” 트리에서 “Create symbolic links(심볼 링크 만들기)” 페이지로 들어가 [그림 2]처럼 사용자를 추가하면 된다고 한다... 라고 하는데 확실한 방법은 아닌것 같기도 하다. -추후 추가 : http://superuser.com/questions/124679/how-do-i-create-a-link-in-windows-7-home-premium-as-a-regular-user?answertab=votes#311078


그리고 여기서 끝나지 않았을 경우가 있다! 위 과정을 마치고 프로그램을 실행시키려고 하면 'Failed to create the VirtualBox COM object. The application will now terminate.' 오류가 발생할 수 있다. 아무래도 관리자 권한으로 실행하는 경우 기존 계정과 설정상에 충돌이 일어나는듯 한데(추측) 이 역시 간단하게 해결할 수 있다. 기존 계정의 .VirtualBox 폴더를 제거하면 이 폴더가 다시 생성되면서 오류가 해결된다. 즉, 윈7에서 USER라는 계정을 사용한다면 C:\Users\USER\.VirtualBox 에서 이 폴더를 찾아 제거하면 된다. 이떄의 문제는 VirtualBox상에서 설정했던 사항들(언어 설정이나 가상장치 기록등)이 사라질 수 있다는것인데 뭐 그것쯤은...



[그림 3]  'Failed to create the VirtualBox COM object. The application will now terminate.' 오류

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.