뭐 일단 Virtual Box를 설치해서 새로운 우분투를 설치하기 전에 wsl에 대해서 알아보겠다.(가상머신을 새로 올리기는게 이해하기는 쉬울수도 있다.)
# WSL(Window Subsystem for Linux)
wsl에도 1과 2가 있는데 둘의 차이를 간단하게만 이야기하면 wsl1은 윈도우 기반 리눅스 interface이지만, wsl2는 순수 리눅스 Kernel을 사용한다.
Interface를 사용하는 것과 핵심 코어인 kernel을 사용하는것은 분명히 다를것이다. 인터페이스는 결론적으로 내가 리눅스와 윈도우의 사이를 통신하기 위해서는 해당 말로 전달하거나 이해 받을 수 있는 번역기 같은 것이 필요하게 된다.
결국에는 리눅스에서 System Call을 하면 윈도우즈 System Call로 번역되어서 실행된다. 즉, 이 의미는 파일의 접근 속도가 한번 번역해야하는 과정을 거치기 때문에 느리고 Linux Kernel에 종속적인 프로그램은 실행이 불가능하다는 것이다.
결국, 반만 동작하는것이랑 다름이 없기 때문에 wsl1의 문제를 해결하고자 리눅스 kernel을 온전히 사용할 수 있는 wsl2가 나왔다. 어떻게 한개의 OS에 두개의 Kernel이 있을 수 있을까? 이유는 가상화(virtualization)이다.
# 가상화(Virtulization)
사전적 의미를 보묜 컴퓨터의 리소스를 abstract(추상화)를 일컫는 넓은 광범위한 용어이다. 사실 그림으로 보는게 더 편하다.
위의 그림을 보면 저렇게 VMware에 OS를 여러개 띄울 수 있게된다. 즉 한개의 컴퓨터로 여러개의 가상 컴퓨터를 추상화하여 여러개를 만들 수 있는것이다. 이전에 살펴보았던, Container도 같은 내용이다. (몇가지 더 이점이 있지만, 차차 더 알아보기로하며)
그렇게 되면 결국 한 PC에는 여러개의 OS Kernel을 만들 수 있다는 이야기이다. 뭐 더 깊게 들어가서는 wsl2는 하드웨어 자체인 cpu를 가상화하는 hpervisor type2를 사용하는데 우리의 목적은 어쨌든 wsl2와 wsl1의 차이를 알고 왜 wsl2를 사용하고 있는지 알아야한다는 것이다.
결국 wsl2는 윈도우즈 시스템을 linux로서 활용할 수 잇다는 것인데, 이렇게 되면 한가지 의문점이 생기기 마련이다. 어떻게 리눅스가 윈도우 파일시스템에 접근하고 윈도우 파일 시스템이 어떻게 리눅스 파일 시스템에 접근이 가능할까?
그 이유는 9P protocol server를 실행하기 때문이다.
🤔 9P protocol 분산시스템 환경에서 컴퓨터 간의 파일을 공유하고 통신할 수 있게 해주는 네트워크 프로토콜이다. 이는 모든 것은 파일이다라는 UNIX진영의 철학이 확장되어서 들어오는 모든 리소스들을 파일로 취급하여 표준화된 방식으로 접근하게 된다. |
결론적으로 윈도우와 linux의 파일 시스템은 다르다. 그러니깐 둘간 파일 공유를 위해서는 모든 리소스를 파일 취급하는 9P Protocol만한 프로토콜이 없다는 것이다. 비록, 설명에서는 분산시스템 환경에서 사용한다고 했지만 wsl2에서는 리눅스와 윈도우 커널을 가상화화여 실행하는 환경을 제공한다. (9P protocol이라는 개념조차 생소하다.)
이로써, 파일이 공유 될 수 있는 것이다. 그렇다면 다음은 설치다.
# wsl2 설치
어렵지 않다. MS의 official Document는 이미 잘 나와있다.
나는 Win11 기준이다.
먼저 Powershell을 관리자 권한으로 실행하고 아래 명령어를 입력하고 실행한다.
wsl --install
알아서 설치되고 PC가 리부팅되면서 wsl2가 올라온다. 그리고, 사용자 이름이랑 pwd를 입력하면 설치가 완료된다.
https://learn.microsoft.com/ko-kr/windows/wsl/install
위의 document를 따라하면 쉽게 쉽게 되니깐 한번 확인해보면 된다.
그러면 내가 설치한 OS가 어떤건지 한번 명령어를 통해 알아보자.
:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
22.04.3 LTS jammy jellyfish가 설치된걸 확인 할 수 있다.
리소스를 살펴보겠다.
일단 패키지 공부를 하기 전이니깐 리소스 관련 디렉토리들은 /proc에 들어가있다. 이는 process의 줄임 말이다. 거기서 우리가 cpu나 memory정보, 사용하고 있는 io port, device 정보를 알 수 있다.
## process의 정보가 담긴 디렉토리
cd /proc
## cpu 정보
cat cpuinfo
## memory 정보
cat meminfo
## 장치관리자
cat devices
## 파일시스템 정보
cat filesystem
## 시스템 가동시간
cat uptime
## 커널 버전
cat version
그외 다수
사실은 뭐가 어디에 있는지 다 외울 수는 없다. 하지만 트리구조이기 때문에 디렉토리 구조에 대해서는 알수 있으니 다음번에는 처음에 설치될때 디렉토리 구조에대해서 알아보겠다.
오늘 기억할건 /proc에는 process관련 정보들이 담겨있다는 것이다!
'Operation System > Linux' 카테고리의 다른 글
[Linux] 디렉토리 구조 (0) | 2024.02.16 |
---|---|
[Linux] Linux 배포판의 종류 (0) | 2024.02.07 |