주요참조 : https://www.lesstif.com/software-architect/wsl-2-windows-subsystem-for-linux-2-89555812.html
## WSL 2 설치 하기
WSL2 를 설치하려면 먼저 Windows 10 2004 이상이면 됨
대략적으로 2020년 이후 윈도우즈 업데이트를 하셨으면 조건 충족!
1. PowerShell 을 관리자로 열고 다음 명령을 실행해서 WSL 을 활성화=설치 해줍니다
- dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
2. 이제 WSL 2 가 사용하는 VM platform 옵션을 활성화 해줍니다.
- dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
3. VM 플랫폼을 활성화한 후에 Windows 를 재부팅합니다.
4. 부팅후에 https://docs.microsoft.com/ko-KR/windows/wsl/wsl2-kernel 에 연결해서 리눅스 커널 구성요소 업데이트 실행
- wsl_update_x64.msi 파일 설치 하면 됨
5. 설치를 완료했으면 다시 Windows 를 재부팅
6. PowerShell으로 기본 ubuntu / 특정 배포판 설치
- wsl --install
- wsl --install Ubuntu-22.04
- 설치시 Enter new UNIX username: New password: 물어봄
- wsl 2 유효한 배포 목록을 보려면 'wsl.exe --list --online'을 사용
## 설치 끝. 다음은 WSL 사용법
1. 배포판 관리 - WSL 기본 명령어
- 기존에 설치한 WSL 배포 목록 확인 : wsl -l -v
- Version 2로 변환하려면 wsl --set-version DISTO_NAME 2 를 실행
- 모든 Linux 배포판 포맷을 WSL 2 로 설정하려면 wsl --set-default-version 2 명령
- 설치된 배포중에 특정 배포를 기본으로 설정하려면 wsl --set-default DISTRO_NAME 명령을 실행
-> wsl 명령을 옵션없이 실행했을때 기본 배포판으로 진입
- wsl --unregister DISTRO 명령으로 배포를 삭제
- 실행중인 모든 배포와 WSL 2 경량 가상 머신을 종료 : wsl --shutdown
2. WSl 사용 - WSL 기본 명령어
- 배포판 진입 : wsl -d Ubuntu
- exit를 하면 시스템이 멈추는 듯;;
- WSL exit시 시스템 안 멈추게 하는 방법
- 해당 배포판 시스템 중 서비스를 하나 띄워 놓으면 됨 (service .... )
- docker를 써도 됨 => 아래에 정리 함. 6. WSL 2에서 Docker 사용
3. 특정 서비스 (postgreSQL WSL 설치) 및 자동 실행
- wsl -d 배포판명
- #apt-get update && apt-get upgrade
- #apt-get install aptitude #apt 패키지관리자 설치
- #aptitude #apt 패키지관리자 실행
- 검색 창 띄우기 : / 키
- 검색키워드 : ^postgresql
- 설치할 패키지에 + 키를 누르면 관련 패키지 통합 설치 선택됨
- 설치 작업 : g 키
- 빠져나오기 : q 키
- ps -ef 로 프로세스 확인
- postgresql 세팅 - 간단 로컬세팅
- 윈도우의 시작 - 모든 프로그램 - 시작 프로그램 폴더에 파일 등록
- bat파일 (스크립트 파일) 작성
- wsl sudo service postgresql start
- 또는 wsl -d Ubuntu-22.04 sudo service postgresql start (-d 실행하고싶은배포판명)
- wsl2를 실행시켜 sudo visudo 명령어를 입력
- %sudo ALL=NOPASSWD: /usr/sbin/service
- 모든 service명령어를 비밀번호 해제
- 특정 서비스 비밀번호 해제
- %sudo ALL=(ALL) NOPASSWD: /usr/sbin/service mysql *
- %sudo ALL=(ALL) NOPASSWD: /usr/sbin/service ssh *
- %sudo ALL=(ALL:ALL) ALL 명령어보다 아래에 작성해야함
- 시작 프로그램 폴더에 파일 등록
- window + R을 눌러 shell:startup을 입력하여 폴더를 열어 .bat파일을 이 폴더 안에 복사 해주면 된다.
4. WSL 팁
- service 는 root 만 사용할 수 있는 명령어이므로 sudo visudo 실행하여 /etc/sudoers 에 한 줄을 추가해 주면 편리하게 구동
- %sudo ALL=NOPASSWD: /usr/sbin/service
- WSL 에 연결한 후에 explorer.exe . 를 실행하면 바로 탐색기에서 리눅스 파일시스템을 열수 있습니다.
- WSL 을 사용해도 IDE 나 편집기는 Windows 에서 사용하므로 프로젝트 등록시 WSL 에 있는 경로를 지정해 줘야 합니다.
- "네트워크 드라이브 연결" 을 해서 드라이브 번호를 하나 할당하는 방법
5. 배포판 백업 내보내기 => 사실은 배보판 복사 ㅎㅎ
- 내용 참조 : https://wslhub.com/wsl-firststep/advanced/copy-distro/
- wsl.exe --shutdown
- 백업
- wsl.exe --export Ubuntu-22.04 C:\Users\윈도우사용자명\Documents\Ubuntu-22.04.tar
- 백업 확인
- dir C:\Users\윈도우사용자명\Documents\Ubuntu-22.04.tar
- => 대략 1G 정도 되네
- 복원
- mkdir C:\Distro\MyUbuntu
- wsl.exe --import Ubuntu-2204-ek C:\Distro\MyUbuntu C:\Users\윈도우사용자명\Documents\Ubuntu-22.04.tar --version 2
- => 백업 tar 파일을 MyUbuntu 라는 이름으로 C:\Distro\MyUbuntu 폴더에 WSL v2로 복원
- 복원된 wsl 접속하면 root로 만 접속됨
- => 사용자 ID 값을 레지스트리에 설정해야 합니다. 관리자 권한으로 권한 상승한 PowerShell 프롬프트에서 다음의 명령어를 입력
- => 하는데 난 안함
$DistroName='배포판명'
$UserId='윈도우사용자명'
$DefaultUid=(wsl.exe --distribution $DistroName --user $UserId -- id -u)
Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\*\ DistributionName | Where-Object -Property DistributionName -eq $DistroName | Set-ItemProperty -Name DefaultUid -Value $DefaultUid
6. WSL 2에서 Docker 사용
- https://docs.docker.com/desktop/install/windows-install/
- 무지성 다운로드 및 설치
- 설치하고 docker 를 실행한 후에 트레이에서 docker 를 찾은 후에 마우스 우 클릭해서 Settings 메뉴를 선택
- 설정 화면에서 General → Use the WSL2 based engine 이 체크되어 있는지 확인
- Resources → WSL Integration 에서 docker 를 사용할 WSL 을 체크한 후에 Apply & Restart 를 클릭
- 이제 WSL 인스턴스를 열고 명령행에서 docker 를 실행해 봅니다.
- 정상 동작 여부를 확인하기 위해 hello-world 컨테이너를 실행해 봅니다. $ sudo docker run hello-world
기타
윈도우즈 터미널(Windows Terminal) 설정하기
https://www.lesstif.com/software-architect/windows-terminal-89555840.html
Windows 11 에서 WSLg( Windows Subsystem for Linux GUI ) 사용
https://www.lesstif.com/software-architect/windows-11-wslg-windows-subsystem-for-linux-gui-129007984.html