2025년 8월 11일 월요일

기술노트14: WSL2 다시!

기술노트14: WSL2 다시!

목차:

1. 개요

2. WSL2 설치
    2-1. 가상화 기술 활성화
    2-2. 윈도우즈 기능 켜기/끄기
    2-3. WSL2  갱신 설치
    2-4. 우분투 리눅스 24.04. 설치
    2-5. WSL 기본 사용자 설정

3. 비주얼 스튜디오 코드 설치

4. WSL 가상 디스크 경로변경
    4-1. WSL의 가상 디스크 옮기기
    4-2. WSL 가상 디스크 변경
    4-3. 외장 HDD 의 접근 제한

5. 맺음말

---------------------------------------------------------------

1. 개요

가상 머신(VirtualBox 또는 VMware)으로 리눅스를 운용할 경우 데스크 탑 그래픽을 동작 시키기 위해서 성능 부담을 준다. 대부분 EDA 도구들은 터미널에서 명령줄을 사용하므로 굳이 그래픽 인터페이스를 항상 띄울 필요는 없다. WSL에 설치된 리눅스는 데스크 탑이 없이 터미널로 운용된다. 그래픽을 사용하는 응용 프로그램(X-Windows 등)은 문제없이 작동한다. 성능이 제한적인 랩-톱 PC에서 리눅스를 운용한다면 조금이라도 도움이 되길 바라며 다시 WSL2!

2. WSL2 설치

2-1. 가상화 기술 활성화

요즘 CPU는 가상화(Virtualization)을 모두 지원 한다. 간혹 해당 기능을 꺼놓은 경우가 있다. '작업 관리자'에서 확인 할 수 있다.

만일 가상화 기능이 꺼져 있는 경우 컴퓨터의 BIOS 설정에서 가상화 기술(Virtualization Technology, VT-x) 항목을 활성화 한다.

2-2. 윈도우즈 기능 켜기/끄기

Windows 기능 켜기/끄기(Windows Features) 창을 열어 아래 두가지 기능을 켠다.

    - Windows 하위 시스템 리눅스 (Windows Subsystem for Linux)

    - 가상머신 플랫 폼(Virtual Machine Platform)

2-3. WSL2  갱신 설치

윈도우즈를 재 부팅 후 파워쉘(Windows Power Shell)을 관리자 권한으로 열어 아래 명령 실행한다.

    PS> wsl --update

    PS> wsl --set-default-version 2

[주] 윈도우즈 파워 쉘(Windows Power Shell)이 7.5 이하라면 최신 버젼을 설치한다. 

2-4. 우분투 리눅스 24.04. 설치

마이크로소프트 스토어에서 Ubuntu를 검색하여 24.04.1 LTS 를 다운 받아 설치한다.

터미널 창에 우분투 리눅스의 기본 사용자를 지정하라는 프롬프트가 뜨면 아이디와 비밀번호를 입력한다. 아래 예는 기본 사용자 아이디를 mychip 으로 하였다.

    Please create a default UNIX user account.

    The username does not need to match your Windows username.

    For more information visit: https://aka.ms/wslusers

    Enter new UNIX username: mychip

    New password:

    Retype new password:

    passwd: password updated successfully

    Installation successful!

WSL에  우분투 리눅스의 설치가 성공적으로 완료됐다.

2-5. WSL 기본 사용자 설정

WSL에 우분투 리눅스를 설치 후 터미널을 열었을 때 root 로 로그인 된다면 /etc/wsl.conf 파일을 vi 로 열어 아래의 내용을 추가해 준다.

    [user]
    default=mychip

    [interop]
    appendWindowsPath=false

[interop] 은 리눅스 환경 변수 PATH에 윈도우스 실행 경로를 덧붙이지 않도록 하기 위한 것이다.

3. 비주얼 스튜디오 코드 설치

WSL의 리눅스는 터미널 기반으로 운용된다. 비주얼 스튜디오 코드(Visual Studio Code)는 WSL에 설치된 리눅스를 원격 연결하여 파일 탐색, 코드 편집, 터미널등 편리하게 사용할 수 있도록 도와준다. 아래 링크에서 윈도우즈 버젼을 다운 받아 설치한다.

https://code.visualstudio.com/

윈도우즈 버젼이지만 리모트로 WSL의 리눅스에  연결해준다.

좌측 하단에 원격 연결 버튼을 누르면 상단의 탐색 칸에 WSL 과 연결 할 수 있다.

WSL의 리눅스 파일을 탐색하고 원격 터미널을 열 수 있다. 비주얼 스튜디오 코드를 사용하면 편리하지만 컴퓨터 메모리를 좀 더 차지한다.

4. WSL 가상 디스크 경로변경

윈도우즈와 리눅스는 파일 시스템의 호환성이 없다. 리눅스는 가상 디스크(.vhdx)에 설치되고 네트워크 드라이브로 윈도우즈 파일 탐색기에 연결된다. 가상 디스크는 기본적으로 C: 디스크에 만들어 진다. 위치는 아래와 같다.

    %LocalAppData%\Packages\<Distribution_Package_Name>\LocalState\ext4.vhdx

 설계 도구들을 설치하고 운용하다보면 가상 디스크의 크기가 증가한다. 오픈-소스 EDA 도구들과 아듀이노 IDE, FPGA 개발 도구들(Quartus, VitisHLS)을 모두 설치하면 120GByte를  넘긴다. 하드 디스크의 용량이 제한적인 랩-톱  컴퓨터를 사용한다면 USB 외장 HDD에 옮겨도 좋다. 리눅스 운용체제와 반도체 설계 도구들은 가볍기 때문에 USB 3.x 에 부착된 외장 HDD로도 충분히 작동한다. 약간의 인내심이 필요하긴 하다.

    [주]  USB 드라이브는 너무 느려서 않된다.

4-1. WSL의 가상 디스크 옮기기

외장 HDD 가 D: 로 할당 되었을 경우를 상정하고 설명한다.

a. 파워 쉘  명령창을 열고 외장 HDD  에 WSL2 라는 폴더를 생성한다.

    C:\> d:

    D:\> mkdir WSL2

b. 아래 깃 허브에서 Move-WSL 스크립트를 내려 받는다.

    https://github.com/pxlrbt/move-wsl

zip 압축으로 받았다면 적당한 위치에 압축을 풀어 move-wsl/move-wsl.ps1 가 있을 것이다.

c. 관리자 권한으로 파워 쉘을 열고 WSL을 중지 시킨 후 스크립트를 실행한다.

    PS> wsl --shutdown

    PS> cd move-wsl

    PS> ./move-wsl.ps1

만일 스크립트 실행 권한이 없다는 메시지를 보게 되면 다음과 같이 보안을 풀어준 후 스크립트를 다시 실행한다.

    PS> Set-ExecutionPolicy bypass

    PS> D:\WSL2\move-wsl> ./move-wsl.ps1

현재 설치된 WSL의 리눅스 배포판이 나열될 것이다. 옮길 리눅스를 선택한다.

    Getting distros...
    Select distro to move:

    1: Ubuntu-24.04

    1

옮겨갈 위치를 입력한다. 아래의 예는 외장 HDD의 드라이브가 D: 다.

    Enter WSL target directory:

    D:\WSL2

    Move Ubuntu-22.04 to "d:\WSL2"? (Y|n): Y

    Exporting VHDX to "d:\WSL2\Ubuntu-24.04.tar" ...

    Export in progress, this may take a few minutes..wsl:         

    The operation completed successfully.

    Done!

가상 디스크를 옮긴 후 root로 로그인 될 경우 위의  기본 사용자 변경 절차를 따른다.


4-2. WSL 가상 디스크 변경

WSL의 리눅스가 설치된 가상 디스크의 기본 파일명은  ext4.vhdx 다. 이 가상 디스크 파일은 파일명을 바꿔 백-업 해 두거나 다른 WSL이 설치된 윈도우즈 PC 로 옮겨 사용할 수 있다. 레지스트리에서 아래 항목을 찾는다.

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss]

[UUID] 키 아래에 BasePath, VhdFileName 키 값을 변경하면 가상 디스크 파일을 이동하여 사용할 수 있다. 외장 HDD의 D:\WSL2 경로에 가상 디스크 파일명을 ext4_mychip.vhdx 로 변경한 예는 아래와 같다.

4-3. 외장 HDD 의 접근 제한

윈도우즈 파일 탐색기는 WSL의 가상 디스크를 원격 연결 한다. WSL의 가상 디스크를 외장 HDD로 옮긴 후에 아래와 같은 윈도우즈 파일 탐색기 오류가 나는 경우가 발생한다.

외장 HDD에 접근 할 수 있는 권한이 제한되어 있어서 발생한다. 외장 HDD의 보안 속성을 모든 권한으로 바꿔준다.

5. 맺음말

가상머신에서 다시 WSL로 돌아온 이유는 가볍기 때문이다. WSL2 호환성(리눅스 시스템 콜의 일부)의 문제가 있다지만 오픈-소스 EDA 도구를 사용하는데 어려움은 (아직) 없다. WSL2는 계속 갱신되고 있다. 

-------------------------------------

[참고]

https://fun-teaching-goodkook.blogspot.com/2025/01/wslubuntu-2204.html