일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- IOS
- LLM
- apache
- 정보관리기술사
- OSX
- 파인튜닝
- ai 모델 학습시키기
- persona
- vibe coding
- VirtualBox
- MacOS
- apple gpu
- HTTP
- MCP
- WWDC
- MAC
- ollama
- Xcode
- Quantization
- SwiftUI
- 양자화
- Fine Tuning
- Llama
- python
- AI
- swift
- php
- 클로드
- finetuning
- Claude
- Today
- Total
Project Jo
WSL (Windows Subsystem for Linux) 본문
웹 개발 환경을 위해 MAC 에서 작업하는 경우 Docker 를 이용해 리눅스를 개발하면 된다.
하지만 윈도우에서 개발하기에는 지금까지 VirtualBox 에 리눅스를 올려 작업하고 있었다.
최근 정전으로 인해 vbox 파일이 깨지며 조금더 안정적인 방법을 찾아보던중 WSL 의 존제를 알게 되었다.
WSL + VS Code 를 이용한 개발 환경 구축에 흥미를 느꼈고, 진행한 내용을 여기에 정리한다.
1. 설치
Microsoft Store 에서 WSL 을 설치 한다. (이전에는 Windows PowerShell에서 wsl --install를 입력 했지만 이제는 딸깍! 한번!)
Windows Subsystem for Linux - Microsoft Apps
Windows Subsystem for Linux lets developers run a GNU/Linux environment -- including most command-line tools, utilities, and applications -- directly on Windows, unmodified, without the overhead of a traditional virtual machine or dualboot setup.
apps.microsoft.com
단, 설치 했지만 동작하지 않는 경우가 종종 있는 PC 를 보았다.
문제가 있는경우 Windows PowerShell 을 관리자 권한으로 실행하고 wsl --install 을 입력해 설치하면 된다.
2. OS 설치
마찬가지로 Microsoft Store 에서 Ubuntu 를 검색해서 다운로드 한다. (딸깍!)
Ubuntu - Windows에서 무료 다운로드 및 설치 | Microsoft Store
Install a complete Ubuntu terminal environment in minutes with Windows Subsystem for Linux (WSL). Develop cross-platform applications, improve your data science or web development workflows and manage IT infrastructure without leaving Windows. Key features
apps.microsoft.com
3. 실행
설치된 Ubuntu 를 실행한다.... 끝...!
4. Rocky OS
Rocky OS 는 Microsoft Store 에서 제공하지 않는다. 이럴때는 명령어를 통해 직접 이미지를 넣어주면 된다.
# wsl --import <machine-name> <path-to-vm-dir> <path-to/rocky-9-image.tar.xz> --version 2
wsl --import RockyLinux9 RockyLinux9 .\Downloads\Rocky-9-Container-Base.latest.x86_64.tar.xz --version 2
다운로드 링크와 자세한 설명은 공식 페이지를 참고하자.
Rocky Linux를 WSL 또는 WSL2로 가져오기 - Documentation
wsl wsl2 상호 운용성 윈도우Rocky Linux를 WSL로 가져오기필요 사항Windows Subsystem for Linux 기능이 활성화되어 있어야 합니다. 이를 위해서 다음 중 하나의 방법을 사용할 수 있습니다.매우 최근에 Microso
docs.rockylinux.org
시작 메뉴를 눌러 설치된 RockyLinux9 를 실행한다. (딸깍!)
5. systemctl
WSL 로 구성된 Linux 시스템은 기본적으로 systemd 명령의 사용이 꺼져있다.
"vi /etc/wsl.conf" 로 파일을 열고 다음줄을 추가하여 systemd에 사용되는 init를 변경한다.
[boot]
systemd=true
PowerShell에서 명령 wsl.exe --shutdown 를 이용해 사용하여 모든 WSL 인스턴스를 다시 시작한다.
6. VS Code 연동
확장앱 에서 Remote Development 을 검색하여 설치해준다. (이후 Docker 나 기타 접속 확장을 위해)
원격 탐색기 에서 설치된 WSL 을 눌러 접속하면 된다.
7. 패키지 설치
WSL 에 설치된 OS 는 정말 최소한 구동만 가능한 OS 이다.
내가 사용해야 하는 Rocky 서버는 GUI 설치 화면에서 Minimal Install -> Standard, Development Tools 을 선택 해서 설치하기에 추가적인 패키지 설치가 필요하다.
아래의 명령어로 설치하고, 권한이 없는경우 앞에 sudo 를 추가해 실행한다.
dnf groupinstall "Server" --allowerasing
dnf groupinstall "Development Tools" --allowerasing
8. 포트 포워딩
WSL 환경은 외부 환경에서 접속이 되지 않는다.
SSH 나 웹을 외부에서 접근하려면 포트 포워딩을 해줘야 하는데, VSCode 에 있는 포트 포워딩은 Private 으로 내부 PC 에서만 사용하기에 적용이 안된다.
따라서 다음 코드를 ports_wsl.ps1 라는 이름으로 적용하고, PowerShell 을 관리자 권한으로 실행 후 스크립트를 동작 시킨다.
(PC 를 재부팅하면 WSL 의 IP 주소가 바뀌기 때문에, 재부팅 후 항상 코드를 실행해 주자.)
# WSL 2에서 IP 주소 가져오기
$remoteport = bash.exe -c "ifconfig eth0 | grep 'inet '"
$found = $remoteport -match '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
if( $found ){
$remoteport = $matches[0];
} else{
echo "The Script Exited, the ip address of WSL 2
cannot be found";
exit;
}
#[Ports]
#전달하려는 모든 포트를 쉼표로 구분하여 입력하세요.
$ports=@(80, 443, 22);
#[Static ip]
#특정 주소를 수신하려면 IP 구성의 주소를 변경할 수 있습니다.
$addr='0.0.0.0';
$ports_a = $ports -join ",";
#방화벽 예외 규칙 제거
iex "Remove-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' ";
#인바운드 및 아웃바운드 규칙에 대한 예외 규칙 추가
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Outbound -LocalPort $ports_a -Action Allow -Protocol TCP";
iex "New-NetFireWallRule -DisplayName 'WSL 2 Firewall Unlock' -Direction Inbound -LocalPort $ports_a -Action Allow -Protocol TCP";
for( $i = 0; $i -lt $ports.length; $i++ ){
$port = $ports[$i];
iex "netsh interface portproxy delete v4tov4 listenport=$port listenaddress=$addr";
iex "netsh interface portproxy add v4tov4 listenport=$port listenaddress=$addr connectport=$port connectaddress=$remoteport";
}
#포트 포워딩 설정 정보를 확인
Invoke-Expression "netsh interface portproxy show v4tov4";
실행중 "이 시스템에서 스크립트를 실행할 수 없으므로 C:wsl_port.ps1 파일을 로드할 수 없습니다" 에러가 발생하면 다음 명령어를 실행후 다시 시도한다.
Set-ExecutionPolicy RemoteSigned
'Developer' 카테고리의 다른 글
Xcode 용량 확보 (0) | 2025.05.07 |
---|---|
파이썬 UI 개발 wxPython (0) | 2025.04.25 |
compiling for java version '1.7' is no longer supported. minimal supported version is '1.8' eclipse (0) | 2025.04.04 |
MAC + Python + VS Code (0) | 2025.02.28 |
MAC OS 클린 설치 (0) | 2025.02.28 |