IT_WSL_logo

Windows 10 에서 WSL (Windows Subsystem for Linux) 사용하기


기존 집에 있는 1U 서버에서 Linux(Debian)를 사용하다 Windows 10 으로 바꾸면서 Linux 에서 돌리던 Minecraft 서버를 그대로 Linux 상태에서 돌리고 싶어 시작하게 되었습니다.

사실 꼭 Linux 가 아니더라도 Minecraft 는 Java 를 통해 돌리면 되기는 하지만 Linux 를 좋아하는 저는 두개 다 사용하고 싶어졌었죠.

기본적으로 Linux 를 돌리기 위하여 Microsoft 에서 자신있게 내놓은 WSL 을 사용하는 방법을 설명해드립니다.

방법은 Microsoft Documents 공식 홈페이지에도 있으니 참고하시면 됩니다.

https://docs.microsoft.com/en-us/windows/wsl/install-win10


System 요구사항

1. x64 System : Windows 10 Version 1903 이상
2. ARM64 System : Windows 10 Version 2004 이상

3. BIOS 에서 Virtualization (VT-x/EPT, AMD-V/RVI) 옵션 활성화 상태



1. WSL 활성화



기본적으로 Windows 10 에서는 WSL 이 활성화 되어있지 않습니다.

Powershell 을 사용하여 WSL 을 활성화 합니다.





Winkey + R 를 입력하여 실행을 켜줍니다.
그 다음 “powershell” 을 입력 후 Ctrl + Shift + Enter 를 입력하여 관리자권한으로 Powershell 을 실행 시킵니다.

창 위쪽 상태줄에 관리자인지 확인 후 다음과 같이 입력하여 WSL 을 활성화 시켜줍니다.


dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart





2. Virtual Machine 활성화



Windows 10 을 일반적으로 설치했을때에는 VM 옵션이 활성화 되어있지 않습니다.

간단하게 Powershell 에서 다음과 같은 명령어로 쉽게 활성화 시킵니다.
작업전에 필수로 System 요구사항과 같이 BIOS 에서 Virtualization 옵션이 활성화 되어있는지 먼저 확인합니다.


dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart





3. Linux 사용을 위한 Kernel Package 설치 및 WSL Version 설정



WSL 은 결국 Linux Package 를 그대로 가져오는 것과 같다 봐도 됩니다.
Linux 를 사용해보신분은 아시겠지만, Kernel 은 Linux 에서 핵심적인 Core 중 하나입니다.

우선 Kernel 설치 전 “wsl” 을 입력하여 정상적으로 활성화가 되었는지 확인해봅니다.





위와 같이 뜬다면 WSL 은 정상적으로 활성화 된 상태입니다.
다만 Kernel Package 가 빠져 있어서, 매세지가 뜹니다.

다음의 링크를 이용하여 Kernel Package 를 받고 설치합니다.

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi



설치가 완료 되었다면 설치가 정상적으로 되었는지 확인과 WSL Version 을 2 로 고정 하는 작업을 같이 합니다.

Powershell 로 돌아와 다음과 같이 입력하여 WSL 관련 매세지가 뜬다하면 정상적으로 설치 및 Version 고정이 된 것입니다.

만약 WSL 이 “설치되어 있지 않습니다.” 라고 나오면 다시 한번 Kernel Package 설치를 진행해봅니다.


wsl --set-default-version 2





4. Linux (Ubuntu) 설치







Windows Store 에서 제공하는 Linux 는 대표적으로 Ubuntu, Debian, openSUSE, Kali, Alpine 가 있습니다.

아마 향후에 Microsoft 에서 지원을 본격적으로 더 한다면 CentOS 와 같은 Redhat 계열도 지원하지 않을까 싶습니다.

마음에 드는 배포판으로 설치하면 됩니다.

저는 Linux 중 사람들에게 가장 친숙하게 다가오는 Ubuntu 를 설치해보았습니다.





설치가 완료되면 위와 같이 “이 제품은 설치되어 있습니다.” 라고 뜹니다.


“시작”에서 보이는 Ubuntu 항목


또한 정상적으로 설치 되었다면 “시작” 에서도 보이게됩니다.

일반적으로 “시작” 에서는 모든 프로그램의 설치항목들이 보이기때문에 Windows Store 에서 설치 한 항목도 동일하게 보인다 보시면 됩니다.





Powershell 의 WSL 명령어를 통해서도 정상적으로 확인이 가능합니다.

Powershell 에서까지 정상적으로 설치를 확인했다면, 완벽하게 배포판이 설치 된것입니다.

또한 WSL 명령어를 통하여 WSL 에서 구동하는 Linux 의 순위를 설정할 수 있습니다.

순위는 향후 System resource 관리에 중점이 됩니다.


5. Linux (Ubuntu) 실행



설치가 다 되었다면 실행도 해봐야겠죠?

간단하게 “시작” 에서 Ubuntu 를 클릭하여 실행합니다.





Ubuntu 를 Docker 같은 Container 상태로 실행해보신 분들이라면 보실수 있는 계정설정 입니다.

간단하게 Ubuntu 에서 사용할 수 있는 ID 및 P/W 를 설정합니다.





ID 및 P/W 설정이 완료 되었다면, 위와 같이 Ubuntu 화면을 볼 수 있습니다.
여기까지 되었다면 정상적으로 WSL 이 설치 된 것입니다.

“sudo apt update” 와 같은 명령어로 Linux Package 를 잘 가져오는지 인터넷 확인도 해본 뒤 자유롭게 사용 하시면 됩니다.

다만, WSL 2 에서는 Network 가 Virtual Bridge 를 이용하기 때문에 Windows 10 에서 Port Forwarding 을 안해준다면 Port 를 사용하는 Service 는 사용하기 힘듭니다.

추후에 WSL 에서 Port Forwarding 하는 방법을 알려드리겠습니다.

IT_Linux_logo

Linux에서 find 명령어 사용하기


NAS의 다운로드 스테이션 임시 디렉토리 @incoming 폴더에 7일이라는 기간을 두고,
파일이 생성된 지 7일 이후 삭제 되는 것을 스케줄링 해놓는게 어떨까 해서 찾아본 명령어 입니다.

사실 제한을 두기 시작한 계기는 지금은 2TB 인 임시 디렉토리였지만 이전에는 기껏해봐야 64GB 였다는 것 입니다.

64GB 로는 요즘 Torrent 에서 4K Blu-ray 하나만 받아도 80GB 가 넘기 때문에 저장소에 많은 파일이 쌓이면 다음 사람을 위해 그 만큼 정리를 해주는 것이 좋지 않을까 라고 생각하여 찾아본 방법입니다.

설명 전에 기본적으로 ‘*’와 ‘.’ 그리고 ‘/’에 대해 설명이 필요하다 생각해서 써봤습니다.
‘*’는 와일드카드로 “모든 것” 이라고 보시면 됩니다.
‘.’는 현재 디렉토리 입니다.
‘/’는 리눅스의 root(루트) 디렉토리입니다.
이해가 잘 안된다면 설명 후 예시가 나오는데 예시를 보면 됩니다.

Windows 를 제외한 대부분의 Server 는 Linux 로 운영 되기 때문에 Linux 명령어 중 find 에 대하여 구체적으로 적어봅니다.

find 명령어는 뜻 그대로 파일 or 디렉토리를 검색하기 위하여 사용됩니다.

보통 파일 검색의 조건은 다음 범위 내라고 생각하면 됩니다.

  • 특정 파일명을 찾고자 하는 경우
  • 특정 디렉토리를 찾고자 하는 경우
  • 특정 권한을 가진 파일을 찾고자 하는 경우
  • 특정 소유자의 파일을 찾고자 하는 경우
  • 특정 그룹의 파일을 찾고자 하는 경우
  • 특정 용량 기준으로 파일을 찾고자 하는 경우
  • 특정 시간 기준으로 파일을 찾고자 하는 경우




find 명령어의 기본은 다음과 같습니다.

find [찾고자 하는 디렉토리의 경로] [옵션]

옵션에 조건을 얼마나 잘 넣는냐에 따라 필요한 결과를 찾아낼 수 있습니다.





1. 특정 파일명을 찾고자 하는 경우


기본 사용법

find [디렉토리] -name '[파일명]'




# 현재 디렉토리에서 txt 파일을 모두 찾으려는 경우

find . -name '*.txt'

# temp 디렉토리 안에서 이름이 “1” 인 모든 확장자를 찾아내려는 경우

find ./temp/ -name '1.*'






2. 특정 디렉토리를 찾고자 하는 경우


기본 사용법

find [디렉토리] -type d -name '[디렉토리명]'




# root 에서 temp 디렉토리를 찾는 경우

find / -type d -name 'temp'

# 현재 디렉토리에서 tar이 포함되는 디렉토리명을 찾는 경우

find . -type d -name '*tar*'






3. 특정 권한을 가진 파일을 찾고자 하는 경우


기본 사용법

find [디렉토리] -perm [권한 숫자] -name '[파일명]'


여기에서 [권한 숫자] 이라는 것이 있는데, Linux 는 기본적으로 디렉토리나 파일에 대하여 10자의 Permission 기호가 있습니다.

예를 들어 ‘-rwx—r-x’ 가 있다고 가정했을때 이것을 네 분류로 나눠서 보면 됩니다.
‘-‘ 처음 – 의 표시는 파일을 의미하며 d 로 표시되면 디렉토리를 의미합니다.
‘rwx’ 두번째 rwx 는 소유자(Owner)를 의미하고요.
‘—‘ 세번째 — 의 표시는 그룹(Group) 사용자를 의미합니다.
‘r-x’ 그리고 마지막의 r-x 의 표시는 기타(Other) 사용자를 의미합니다.

r 은 Read(읽기)의 약자, w 는 Write(쓰기)의 약자, x는 Execute(실행)의 약자입니다.

그리고 이것들을 숫자로 표현하게 된다면, r = 4 / w = 2 / x = 1 로 표현됩니다.
총합이 7 이며 즉 7 은 모든 권한이죠.




# 현재 디렉토리에서 777(모든권한)을 가지며 txt 파일을 모두 찾는 경우

find . -perm 777 -name '*.txt'






4. 특정 소유자의 파일을 찾고자 하는 경우


기본 사용법

find [디렉토리] -group [그룹명] -name '[파일명]'




# temp 디렉토리에서 root 가 소유자인 txt 파일을 모두 찾는 경우

find ./temp/ -user root -name '*.txt'






5. 특정 그룹의 파일을 찾고자 하는 경우


기본 사용법

find [디렉토리] -group [그룹명] -name '[파일명]'




# root 디렉토리에서 web 그룹 소유권이 있는 파일을 찾는 경우

find / -group web

# 현재 디렉토리에서 web 그룹에게 소유권이 있는 테스트.txt 파일을 찾는 경우

find . -group web -name '테스트.txt'






6. 특정 용량 기준으로 파일을 찾고자 하는 경우


기본 사용법

find [디렉토리] -size [용량] -name '[파일명]'


[용량] 옵션에는 다음과 같은 용량 표기를 사용할 수 있습니다.

  • c : 바이트
  • k : 킬로바이트
  • M : 메가바이트
  • G : 기가바이트




# 현재 디렉토리에서 2M 이상 되는 파일을 찾는 경우

find . -size +2M

# temp 디렉토리에서 용량이 2k 이상 4k 미만이 되는 파일을 찾는 경우

find ./temp/ -size +2k -size 4k






7. 특정 시간 기준으로 파일을 찾고자 하는 경우


기본 사용법

find [디렉토리] -atime [시간 옵션] -name '[파일명]'
find [디렉토리] -mtime [시간 옵션] -name '[파일명]'
find [디렉토리] -ctime [시간 옵션] -name '[파일명]'


[시간 옵션] 앞에 옵션은 Linux 시간 표기법 의해 3가지로 구분이 됩니다.

  • atime (Access Time) : 마지막으로 파일에 접근한 시간, vi 및 cat 등의 명령어로 열람한 시간들이 이에 해당됨
  • mtime (Modification Time) : 마지막으로 파일의 내용을 수정한 시간
  • ctime (Change time) : chmod 나 chown 등 파일의 속성 및 권한을 변경한 시간


* 참고 사항
일반적으로 쓰이는 ls 의 명령어에서 보이는 시간은 mtime 입니다.
ctime 은 ls -lc 의 명령어로 확인이 가능하며,
atime 은 ls -lu 의 명령어로 확인을 할 수 있습니다.




# 사용자 디렉토리에서 마지막으로 수정한지 2달 이상 된 파일을 찾는 경우

find ~/ -mtime +60

# 사용자 디렉토리에서 마지막으로 수정한지 4달 이상 된 txt 파일을 찾는 경우

find ~/ -mtime +120 -name '*.txt'

# etc 디렉토리에서 파일의 속성을 변경한지 1달 이상 된 파일을 찾는 경우

find /etc -ctime +30







이상으로 find 명령어에 대하여 다 써봤는데, 확실히 Linux 는 Windows 와는 차별이 다른 검색을 제공합니다.

find 명령어 뒤에는 exec 라는 옵션을 붙여서 검색된 대상에 명령을 실행 할 수 도있어요.

Linux는 정말 좋은 OS 같습니다.
물론 CLI 환경에서만 말이죠.
GUI 는 아직 많이 부족한 면이 있으나, 지속적으로 개발하고 있으니 점점 좋아지겠죠.
GUI 는 아직 Windows 가 월등히 좋은 것 같습니다.

IT_Ubuntu_logo

Ubuntu에 Chrome 설치하기

테스트한 버전은 Ubuntu 16.04.1 입니다.

Chrome 홈페이지가 아직 변하지 않아 Ubuntu 20.04 에서도 동일하게 작동할 것으로 예상됩니다.

Ctrl + Alt + T 를 눌러 Terminal 을 띄웁니다.

Terminal 에서 다음과 같이 입력하여 deb 파일을 받아 패키지를 설치합니다.

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb






진행하다 위 스크린샷과 같이 의존성 패키지에서 Error 가 발생한다면 다음과 같이 입력하여 의존성 패키지를 가져옵니다.

sudo apt-get -f install

의존성까지 해결이 되고 정상 설치가 진행 됐다면 Ubuntu Menu 에서 Chrome 을 검색해봅니다.

정상적으로 뜬다면 Chrome 이 잘 설치 된 것으로 확인됩니다.