WSL에서 자주 발생하는 문제와 해결 방법

1. 이 기사의 내용


WSL(Windows Subsystem for Linux)을 사용하고 있어 자주 있는 트러블과 그 대처 방법을 소개합니다.
새로운 트러블이 생겼을 때는, 수시로, 추기해 가고 싶습니다.

1-1.사용 환경


  • Windows 10
  • Windows Subsystem for Linux 2
  • Ubuntu 18.04.5 LTS


  • 2.좋은 문제와 대책


    2-1. PowerShell에서 WSL에 로그인할 수 없다 / 갑자기 WSL이 떨어진다


    PowerShell에서 WSL을 시작한 후 오류 메시지 등이 표시되지 않고 로그인 할 수 없거나 갑자기 강제 로그 아웃되는 현상이 발생할 수 있습니다.
    원인은 불분명합니다만, 아래의 순서로 LxssManager를 기동하는 것으로, 문제를 해소할 수 있습니다.
  • PowerShell을 관리자 권한으로 시작
  • 다음 명령을 실행하여 LxssManager 시작
  • 
    > net start LxssManager
    
    ※LxssManager가 떨어지지 않은 경우도 있는 것 같고, 그 경우는 LxssManager를 stop 후에 start한다
    
    > net stop LxssManager
    > net start LxssManager
    

    2-2. WSL에서 nvidia-docker를 시작할 수 없음(GPU에 연결할 수 없음)


    WSL에서 nvidia-docker run 명령을 실행하면 다음과 같은 메시지가 표시되고 Docker 컨테이너를 시작하지 못할 수 있습니다.
    ※오류 메시지 전문은 삼가할 수 없고, 일부만입니다.
    
    docker: Error response from daemon: OCI runtime create failed: container_linux.go ~
    
    WSL에서 nvidia-docker로 GPU 연결하는 경우에는 표준 드라이버가 아닌 CUDA on Windows Subsystem for Linux (WSL) - Public Preview 설치가 필요하지만 드라이버의 자동 업데이트로 WSL 비 호환 드라이버로 업데이트되는 경우가있는 것 같습니다. .
    CUDA on Windows Subsystem for Linux (WSL) - Public Preview에서 드라이버를 다운로드하고 업데이트하여 문제를 해결할 수 있습니다.

    2-3. WSL에서 시작한 Docker 컨테이너의 웹 서버에 localhost로 연결할 수 없음


    호스트 시스템의 localhost와 Docker 컨테이너의 localhost가 다르기 때문에 주소 확인이 불가능하기 때문입니다.
    아래 2 점의 대응으로 문제를 해결할 수 있습니다.
  • docker 실행 중에 -p 옵션으로 포트 지정
  • 서버를 "0.0.0.0"으로 LISTEN

  • 2-3-1. 과제 개요



    2-3-2. 해결 방법 개요



    2-3-3. 서버를 "0.0.0.0"으로 LISTEN하는 방법 (예)


    Gulp


    gulpfile.js에 다음 줄을 추가합니다.
    
    host: "0.0.0.0"
    
    구체적인 예:
    
    // Local server pointing on build folder
    const connect = () => {
            return plugins.connect.server({
                    root: config.destDir,
                    host: "0.0.0.0",
                    port: config.port || 3333,
                    livereload: true
            });
    };
    

    2-4.mkfifo에서 FIFO를 생성할 수 없음


    WSL로 FIFO를 생성 할 때 생성 대상 디렉토리를 Windows 파일 시스템으로 설정하면 다음 오류가 발생하여 FIFO 생성에 실패합니다.
    $ mkfifo /mnt/c/Users/<user name>/fifo_test
    mkfifo: cannot create fifo '/mnt/c/Users/<user name>/fifo_test': Operation not supported
    
    ~//tmp와 같은 Linux 시스템 영역에서만 생성 할 수 있습니다.
    $ cd ~
    $ mkfifo fifo_test
    $ ls
    fifo_test
    

    2-5. 네트워크에 연결할 수 없음


    WSL2에서 다음과 같이 네트워크에 연결할 수없는 경우 /etc/resolv.confnameserver 8.8.8.8를 지정하면 해결되었습니다.
    8.8.8.8은 Google이 공개하는 공개 DNS입니다.
    8.8.8.8이 아니어도 설정에 따라서는 접속할 수 있는 경우도 있는 것 같습니다만, Windows Update등의 갱신으로 드물게 변화가 생기는 것 같습니다.

    연결할 수 없는 경우의 예

    $ host google.com
    ;; connection timed out; no servers could be reached
    

    연결할 수 있는 경우의 예

    $ host google.com
    google.com has address 142.250.207.110
    google.com has IPv6 address 2404:6800:400a:805::200e
    google.com mail is handled by 40 alt3.aspmx.l.google.com.
    google.com mail is handled by 10 aspmx.l.google.com.
    google.com mail is handled by 20 alt1.aspmx.l.google.com.
    google.com mail is handled by 30 alt2.aspmx.l.google.com.
    google.com mail is handled by 50 alt4.aspmx.l.google.com.
    

    3.사이고에게


    DeepLearning 환경으로 WSL을 활용하는 중에 발생하는 트러블과 대책을 정리해 왔습니다.
    Insider Preview는 Windows 업데이트가 자주 발생하기 때문에 새로운 문제도 발생할 수 있지만, 지금까지 활용해 온 중에서는 생각했던 것처럼 문제는 적은 인상입니다.

    4. 관련 링크



  • 2-1. PowerShell에서 WSL에 로그인할 수 없다 / 갑자기 WSL이 떨어진다
  • CUDA on WSL User Guide
  • CUDA on Windows Subsystem for Linux (WSL) - Public Preview


  • 2-2. WSL에서 nvidia-docker를 시작할 수 없음(GPU에 연결할 수 없음)
  • 【2020/12월 ver】WSL2에서 CUDA를 이용한다면 자동 업데이트에 주의하자는 이야기와 그 대처법


  • 2-3. WSL에서 시작한 Docker 컨테이너의 웹 서버에 localhost로 연결할 수 없음
  • docker의 앱에 localhost로 액세스하면 ERR_EMPTY_RESPONSE가 나옵니다.
  • WSL2 Docker로 웹 서버를 설정하고 Widnows10 브라우저에서 액세스하는 방법
  • Node나 Gulp에서 host: "0.0.0.0" 을 지정해 서버를 시작했을 때, listen EADDRINUSE 라고 하는 에러가 나왔을 경우의 대응


  • 2-5. 네트워크에 연결할 수 없음
  • Google Public DNS

  • 좋은 웹페이지 즐겨찾기