Linux 의 Run Level

Run Level 은 Unix System V 스타일의 초기화를 구현하는 OS의 작동 모드를 말한다.

작동 모드는 각 OS 마다 조금씩 차이가 있지만 대체로

  • 0(Shutdown)
    OS를 종료
  • 1(Single User Mode)
    네트워크와 대다수의 대몬을 실행하지 않는 단일 사용자 모드
    마치 Windows의 안전모드 명령프롬프트와 유사한 형태
  • 6(Reboot)
    OS를 재시작

그리고 Linux의 일반적인 모드는 위의 모드에 추가로 아래와 같은 것들이 있다.

  • 2(Multi User Mode)
    네트워크 안되는 다중 사용자 모드
  • 3(Multi User Mode with Networking)
    CLI 기반의 대부분의 동작을 모두 수행하는 다중 사용자 모드
    보통 서버 환경에서 사용하는 모드
  • 5(with Display manager)
    Runlevel 3에다가 GUI를 위한 display manager를 추가한 모드
    보통 display manager는 X11 을 많이 사용한다.

[참고 자료: 위키의 설명: https://en.wikipedia.org/wiki/Runlevel]

현재 runlevel을 확인하는 방법은

runlevel
who -r

Linux Desktop 에 폰트 설치

Ubuntu + D2Coding 폰트를 기준으로 설명하자면

압축 해제 프로그램 설치
폰트 받기
압축 풀기
D2Coding/*.ttf 를 복사
폰트 캐싱하기

apt-get install unzip
wget https://github.com/naver/d2codingfont/releases/download/VER1.3.2/D2Coding-Ver1.3.2-20180524.zip
unzip D2Coding-Ver1.3.2-20180524.zip
mkdir /usr/share/fonts/truetype/D2Coding
cp ./D2Coding/*.ttf /usr/share/fonts/truetype/D2Coding/
fc-cache -v

Linux 소개

Linus Benedict Torvalds에 의해 시작된 Linux Kernel 을 사용하는 OS를 묶어서 부르는 용어.
Unix 비슷한 시스템이지만 Unix는 아니다.
우리가 사용하는 Windows와 macOS를 제외한 나머지 컴퓨터들이 많이 사용한다.
예를 들면, 가정에서 사용하는 유무선 공유기, IPTV 셋탑박스, 이동통신 장비들, 안드로이드 휴대폰, …
2017년 11월 기준으로 세계 500위 안에 들어가는 슈퍼 컴퓨터는 모두 리눅스를 사용하고 있다고 한다.
1991년에 학부생이 자신의 PC에서 시작한 프로젝트가 이제는 전세계를 움직이고 있다.

리눅스 배포판

Linux 라는 것은 Kernel의 이름이다.
이 Kernel을 이용해서 다양한 OS가 만들어졌는데, 이들을 리눅스 배포판이라 부른다.

Desktop용 리눅스 배포판

BS가 처음 리눅스를 접하던 당시에는 정말 다양한 배포판들이 경쟁하고 있었다.
Red Hat, Gentoo, 심지어 한컴까지도…
시간이 흘러 데스크탑 PC를 위한 리눅스는 거의 시장에서 사라지고,
Ubuntu 정도가 쓸만하지 않을까 생각된다.

Server용 리눅스 배포판

서버용 배포판은 아직도 전쟁 중이다.
대표적인 배포판은
Ubuntu, Red Hat, SUSE 정도이다. (이 기준은 상용 클라우딩 컴퓨터 환경에서 지원하는가에 맞췄다.)
그 중 자유로운 것은 Ubuntu 뿐…
Red Hat 자유 버전정도로 생각할 수 있는 CentOS도 있긴하다…

그 외 배포판…

알 수 없다… 삼성 갤럭시 S7을 사용 중이지만 삼성이 핸드폰에 어떤 리눅스 배포판을 사용했는지 알려주지 않으니까…
마찬가지로 공유기를 사용하지만 어떤 배포판을 사용했는지 알려주지 않는다.
알 수 없도록 엄청 커스터마이징을 한 이유도 있다.
알아내고 싶은 생각도 없다.

WSL – Windows Subsystem for Linux

  • Windows 에서 Linux 프로그램을 맛볼 수 있는 기능
  • Windows 10 1607 에서 시작
  • 64비트만 가능
    당연히 이 가짜 Linux에서 실행되는 프로그램도 64비트용이어야 하고
  • Windows Server 2019 부터 서버 제품에도 포함되었음

처음에는 Ubuntu 만 가능했지만 Windows 1709 부터 Windows Store 를 통해 배포되는 형식으로 바뀌면서 Fedora, SUSE 이미지도 제공됨… 그리고 점점 늘어나고 있긴 함.

그런데 이걸 어디다가 써먹지!!!???

일단은 무조건 개발자를 위한 도구라는 것!!!
일반적인 Linux 로 생각하고 사용하기에는 성능이 너무 너무 떨어짐.
Hyper-V에 Linux 설치한 것이 더 빠를지도 모름

BS 생각엔…
MS가 생각하길… 이대로 있다가는 안될 거 같아. 뭔가 변화가 필요해…
그리하여 MS는 Linux와 친해지고, Open Source Project 들과 친해지는 과정을 가는데…
GitHub를 인수하고, Eclipse 재단에 가입하고, MS의 OS가 아닌 환경을 위한 Visual Studio Code를 만들고, 몇몇 MS의 제품을 Open Source로 바꾸고…
그런 일련의 변화 중에서 Linux 개발을 위해 MS Windows 를 버리고 Linux 나 macOS 를 사용할 필요가 없이 Windows 하나로 모두 해결 가능한 상태를 만들고 싶었고,
Windows NT 시절의 그 모습이 떠올랐던게 아닐까? [위키의 Windows NT 구조]

아직은 갈 길이 멀지만… 업계에서 핫한 소프트웨어들 중심으로 점차 안정적인 모습을 갖춰가고 있음.

참고자료
[MS의 릴리즈 노트]

Bash 스크립트 파일의 경로

Windows 의 %~dp0 와 비슷한 것을 하면서 더 많은 것을 하는 예제 코드

#!/bin/bash
 
# 현재 스크립트 파일을 SOURCE로 가져옴
SOURCE="${BASH_SOURCE[0]}"
 
# SOURCE가 가르키는 파일이 심볼릭이명 계속 따라감
while [ -h "$SOURCE" ]; do
  TARGET="$(readlink "$SOURCE")"
  if [[ $TARGET == /* ]]; then
    # 절대 경로로 생성된 심볼릭 링크
    echo "SOURCE '$SOURCE' is an absolute symlink to '$TARGET'"
    SOURCE="$TARGET"
  else
    # 상대 경로로 생성된 심볼릭 링크
    # SOURCE의 디렉토리 + 상대 경로로 링크 대상 경로를 생성
    DIR="$( dirname "$SOURCE" )"
    echo "SOURCE '$SOURCE' is a relative symlink to '$TARGET' (relative to '$DIR')"
    SOURCE="$DIR/$TARGET"
  fi
done
 
# 심볼릭 아닌 소스를 찾음
echo "SOURCE is '$SOURCE'"
 
# 스크립트 소스의 작업 디렉토리로부터의 상대 경로를 구함
RDIR="$( dirname "$SOURCE" )"
 
# 상대 경로로 이동해서 pwd로 절대 경로를 확인
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
if [ "$DIR" != "$RDIR" ]; then
  echo "DIR '$RDIR' resolves to '$DIR'"
fi
echo "DIR is '$DIR'"

결과

SOURCE './scriptdir.sh' is a relative symlink to 'sym2/scriptdir.sh' (relative to '.')
SOURCE is './sym2/scriptdir.sh'
DIR './sym2' resolves to '/home/ubuntu/dotfiles/fo fo/real/real1/real2'
DIR is '/home/ubuntu/dotfiles/fo fo/real/real1/real2'