윈도우10 2004 업데이트를 하고 나서, WSL2를 정말 잘 사용하고 있습니다. Docker도 잘 사용하고 있고, JetBrain IDE도 최근 업데이트로 WSL2 기반의 git을 사용할 수 있게 되어, 개발 환경이 한층 더 쾌적해짐을 느끼고 있습니다. git은 윈도우에서 쓸 때 느린 반응 때문에 항상 불편했었거든요.
그런데, 최근 궁금한게 생겼습니다. wsl2에서 윈도우에서 사용하는 드라이브를 직접 접근할 수 있는데, 이는 /mnt/에 마운트 되어있습니다. 그러면 / 아래의 /home, /etc, /var 같은 공간은 대체 어디에 있을지 궁금함이 생겼습니다.
좀 찾아보니, 설치되는 위치는 마이크로소프트 스토어에서 설치한 wsl distro에 따라서 다르며 ubuntu의 경우는 "C:\Users\{username}\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79 rhkp1 fndgsc\LocalState"에 있었습니다.
두 공간이 사용하는 크기가 유사한 걸로 보아, WSL2에서 사용하는 공간이 맞는 걸로 보입니다. 실제 윈도우 파일 시스템은 아니고, 가상공간을 위한 디스크이기 때문에 탐색기로는 파일 내의 공간을 읽을 수는 없었습니다.
그런데 저는, C드라이브에는 OS를 위한 공간으로 애플리케이션을 설치하거나, 데이터들은 D드라이브를 사용합니다. 추후 OS를 다시 설치한다던가 할 때, 데이터를 보호하기 위함인데, 그런 이유로 저 공간도 다른 곳으로 이동하고 싶었습니다.
GitHub에 저와 같은 시도를 했던 사람들이 있었는데, GitHub에는 관련해서 이슈가 있었습니다.
github.com/MicrosoftDocs/WSL/issues/412#issuecomment-575923176
wsl --export와 wsl --import 명령으로 위치를 이동할 수 있다고 되어있어서 시도해 보기 직전에, 맨 아래 관련된 이슈를 발견했습니다.
https://github.com/microsoft/WSL/issues/5605
WSL2에서 위치를 이동한 후, KB4565503 업데이트 이후 permission denied가 발생하고 있다는 이슈입니다. 원인은 업데이트를 하면서 ext4.vhdx 파일 시스템의 권한을 읽기 전용으로 만드는 것 같은데, 권한을 모든 권한으로 변경하면 해결되는 것 같습니다.
실제 파일시스템이 저장되는 위치도 알았고, 위치를 변경하는 방법도 알았으나, 변경하지는 않았습니다. 이유는 wsl이 아직은 완벽하지 않은데, 위험요소를 추가하고 싶지 않았기 때문이고, C드라이브의 여유공간이 아직은 많이 있기 때문입니다.
wsl2 때문에 많은 것들이 (저한테는) 좋아졌습니다. 하지만, 아직은 발전해가는 중이고, 계속 보완해 나가는 것을 볼 수 있어 앞으로가 더욱 기대가 됩니다. 하지만, 아직은 좀 부족한 부분이 있는 점이 있기에 당분간은 그들이 제시하는 대로 사용하기로 했습니다.