WSL 2는 Linux용 Windows 하위 시스템 아키텍처의 새로운 버전으로, Linux용 Windows 하위 시스템이 Windows에서 ELF64 Linux 이진 파일을 실행할 수 있게 해줍니다. WSL 2의 주 목표는 파일 시스템 성능을 높이고 전체 시스템 호출 호환성 을 추가하는 것입니다.
이 새 아키텍처는 이러한 Linux 이진 파일이 Windows 및 컴퓨터의 하드웨어와 상호 작용하는 방식을 변경하되, WSL 1(현재 널리 사용 가능한 버전)과 동일한 사용자 환경을 제공합니다.
개별 Linux 배포는 WSL 1 또는 WSL 2 아키텍처를 사용하여 실행할 수 있습니다. 언제든지 각 배포를 업그레이드하거나 다운그레이드할 수 있으며 WSL 1 및 WSL 2 배포를 함께 실행할 수 있습니다. WSL 2는 실제 Linux 커널을 실행하는 이점을 제공하는 완전히 새로운 아키텍처를 사용합니다.
쉽게 말해서, 윈도우에서 리눅스를 사용하기 위한 도구라 보면 됩니다.
특히 흔히 아는docker
도linux
기반으로 동작하기 때문에,WSL
이 없었다면vm ware
등을 사용하여 리눅스를 설치했어야 했을 것입니다.
WSL 설치 : https://docs.microsoft.com/ko-kr/windows/wsl/install-win10
노마드 코더 윈도우 셋업 링크 : https://nomadcoders.co/windows-setup-for-developers
처음에 docker
를 사용하려고 알아보니, WSL
이 필요하다고 해서 설치하게 되었습니다.
하지만 /mnt/c/~~
경로에서 리눅스 커널로 작업을 하게 되면, 너무너무너무 느렸습니다.
처음엔 원래 이렇게 느린가? 하고 사용하다, gradlew build
가 30분이 걸려 왜 그런지 찾아보게 되었습니다.
The Windows Subsystem for Linux must translate various Linux file system operations into NT kernel operations. WSL must provide a place where Linux system files can exist, with all the functionality required for that including Linux permissions, symbolic links and other special files such as FIFOs; it must provide access to the Windows volumes on your system; and it must provide special file systems such as ProcFs.
WSL provides access to Windows files by emulating full Linux behavior for the internal Linux file system with VolFs, and by providing full access to Windows drives and files through DrvFs. As of this writing, DrvFs enables some of the functionality of Linux file systems, such as case sensitivity and symbolic links, while still supporting interoperability with Windows.
해당 정보 링크 : https://docs.microsoft.com/ko-kr/archive/blogs/wsl/wsl-file-system-support
뭔 말인진 잘 모르겠네요..
우선 윈도우에 있는 프로젝트 디렉토리를 \\wsl$\
하위의 $HOME/username
으로 mv
하였으며,
GIT client GUI (FORK), IDE (IntelliJ IDEA) 도 최근 버전을 설치하면 WSL2를 지원한다는 정보를 입수하고 최근 버전을 설치하였습니다.
특히 Jetbrains은 유저들의 많은 불만 사항을 반영하여 올해부터 IntelliJ
에서 WSL
을 지원한 것으로 알고 있습니다.
(이미 visual studio code는 remote wsl을 지원함)
File I/O
(gradlew build, npm i, npm build
등 모든 명령어가 빠른 속도의 I/O
를 보입니다.IntelliJ
에서 Android plugin
을 비활성화 해줘야합니다. (이건 뒤에 두번째 시도에서도 마찬가지)
IntelliJ
의 Run
이 어떻게 동작하는지 자세히는 모르지만, SpringBootApplication
run
시 PropertySource
의 주입이 제대로 되지 않았습니다..QueryDSL
사용 후 test
run
에 대해서 Q class
가 인식이 안되어build and run using & Run test using
을 gradle
-> IntelliJ IDEA
로 변경하니 test
run
은 제대로 동작하였습니다.classpath
가 IntelliJ
에서 제대로 작동하지 않았습니다.2020년 중순, WSL2의 등장으로 한 마이크로소프트 개발자분은 Linux GUI를 Window에서 실행하는 방법을 포스팅했습니다.
저는 그 중 첫번째 옵션을 진행할 계획입니다. (X 서버를 이용하여 IntelliJ를 shorcut으로 실행하는 것까지 기술)
반드시 Disable access control
을 체크합니다.
Save Configuration
파일 저장 후 키보드로 window + R
을 누릅니다
shell:startup
을 입력 후 엔터 -> configuration
파일을 복사 붙여넣기 합니다.
bash.exe
를 열고 (cmd
에서 %WINDIR%\System32\bash.exe
엔터 치시면 리눅스 커널을 사용할 수 있습니다.)vi /etc/bash.bashrc
export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
esc :wq로 나옵니다. (혹시 readonly이면 sudo vi /etc/bash.bashrc
입력해줍니다)
sh /etc/bash.bashrc
여기서 만약 zshrc를 사용하시는 분이라면
vi ~/.zshrc
에다가 export DISPLAY="`grep nameserver /etc/resolv.conf | sed 's/nameserver //'`:0"
를 입력해야합니다.
wget https://github.com/naver/d2codingfont/raw/master/D2Coding-Ver1.3.2-20180524.zip
unzip D2Coding-Ver1.3.2-20180524.zip
sudo cp D2Coding/D2Coding-Ver1.3.2-20180524.ttf /usr/local/share/fonts
명령어를 입력해줘 font 설치 합니다.
혹시 jdk를 설치하지 않으셨다면,
sudo apt install openjdk-8-jdk
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1
sudo update-alternatives --config java
(추가한 number 입력)
sudo apt install fcitx fcitx-hangul fonts-noto-cjk dbus-x11
im-config
fcitx만 선택하고 나머지는 그냥 Yes나 OK를 누르시면 됩니다.
vi ~/.bashrc 를 실행하시고
맨 마지막에
export QT_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
fcitx-autostart >/dev/null 2>&1
를 붙여넣고 :wq 로 나옵니다.
sh ~/.bashrc
fcitx-config-gtk3
여기서 + 버튼을 클릭해 Hangul과 English를 추가해주시면 됩니다. (Korean 삭제 (-))
사진대로 만들어 주시면 됩니다.
한글을 테스트 해보기 위해
Chromium을 설치해보고 실행해보겠습니다.
sudo add-apt-repository ppa:saiarcot895/chromium-dev
sudo apt-get update
sudo apt-get install chromium-browser
설치 후
chromium-browser
를 입력하게 되면 브라우저가 뜰 것이고,
한/영키를 눌렀을 때 정상적으로 한글이 입력된다면 성공입니다!
IntelliJ
는 Jetbrains toolbox로 설치해보도록 하겠습니다.
cd
wget https://download-cdn.jetbrains.com/toolbox/jetbrains-toolbox-1.21.9712.tar.gz
tar xzvf jetbrains-toolbox-1.21.9712.tar.gz
cd jetbrains-toolbox-1.21.9712
./jetbrains-toolbox
window에서 바로 shortcut(바로가기)로 이용할 수 있도록 sh 파일을 생성해줍니다.
find ~/.local/share/JetBrains/Toolbox/apps -name idea.sh > ~/idea.sh
:wq
vi ~/toolbox.sh
#!/bin/bash
/home/xonic/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox
:wq
또는
find ~/.local/share/JetBrains/Toolbox/bin -name jetbrains-toolbox > ~/toolbox.sh
IntelliJ IDEA
%WINDIR%\System32\bash.exe -i -c "sh /home/{username}/idea.sh"
Toolbox
%WINDIR%\System32\bash.exe -i -c "sh /home/{username}/toolbox.sh"