Linux를 사용한다는 것

배경지식

UNIX

  • 역사적으로 모든 것은 UNIX에서 시작되었다고 볼 수 있다.
  • UNIX의 혁신요소는 (1)C언어 (2)개방성 (3)네트워크 등이었다.
  • (1)은 어셈블리어 대신 C언어를 사용해서 시스템을 만들어나갔다는 점(대체로)인데, 덕분에 이식성이 매우 좋아져서 컴퓨터의 CPU나 하드웨어가 달라져도 여기저기 이식해서 쓰기에 좋아졌다. 그래서 마치 바이러스처럼 퍼져나갈 수 있었다.
  • (2)는 해커 정신으로 회사 몰래 만들어진 물건이라서, 소스코드를 꽁꽁 감춰두지 않고 다 공개해 버렸다. 기술 자체가 다 개방되어서 발전이 가속화되었고 점점 더 괴물이 되어갔다.
  • (3)은 TCP/IP 인터넷 프로토콜 개발과 함께한 거나 마찬가지였다. 따라서 인터넷의 발전을 이끌수 있었다. 초창기 인터넷은 당연히 UNIX 시스템을 갖추는게 정석.
  • 그런데 지금은 왜 UNIX가 거의 다 망했는가? 기술문제가 아니고 돈 문제 때문이다. 몇가지 종류의 UNIX를 소유한 기업들이 서로 사분오열 하면서 우왕좌왕 하는 짓을 20년 정도 계속 하더니 저절로 자멸해 버렸다. 또 윈텔 진영의 PC발전 때문에 UNIX 워크스테이션도 가격경쟁력 및 편의성에서 밀려나 버렸다. 최고로 잘 나가던 SUN사의 멸망이 그점을 잘 대변해 준다.
  • UNIX의 계보는 크게 2가지로 나뉜다.
  • 오리지널 UNIX의 직계 후손은 AT&T사의 System V이다. 하지만 System VI는 결국 나오지 못했고, System V의 소스코드 소유권은 이리저리 전전해 가다가 흐지부지 되어 버렸다. 하지만 이것의 주요한 기능과 특징들은 현재까지도 계속 이어지고 있다.
  • 또 버클리 대학원생이었던 빌조이 등이 만든 BSD가 있다. BSD가 비주류가 되어버린 이유는 다른 UNIX 회사들이 BSD를 짝퉁이라고 비난하면서 배낀 거라고 소송을 걸어서 몇년동안 소송한다고 삽질한 덕분에 시간이 낭비되어 뒤쳐지고 말았다. 나중에 스티브잡스가 Next 컴퓨터 만들면서 이걸 갖다 썼고, 이게 계속 이어져서 iOS 및 OS X이 되었다.
  • 지금은 사실 사용자 입장에서는 System V 및 BSD 구분하는게 별 의미가 없는거나 마찬가지다. 시스템을 구성하는 유틸리티들이 거의 다 비슷비슷하기 때문에 사용하는데 별 차이도 없다.
  • 게다가 오리지널 UNIX냐 아니냐 하는 것도 의미가 없다. 그건 그냥 상표권 및 원본 소스코드 소유권에 관계된 자기들 끼리의 돈 문제일 뿐이다.

GNU

  • GNU의 시초인 리처드 스톨만의 전설적인 용기와 기여는 모르는 사람이 이제 별로 없을것 같다.
  • 리처드 스톨만이 소프트웨어의 상업화에 반대하여, 완전히 소스코드 오픈되며 동시에 소스코드를 감춰둘 수 없도록 강제하는 계약서인 GPL 라이센스를 고안해 낸 것이 결국 신의 한 수가 되었다. 그가 이 활동을 시작할 때는 미친 사람 처럼 보였지만, 지금은 이게 없었다면 완전히 다른 소프트웨어 생태계가 조성되어 있었을 것이다.
  • 그는 UNIX 소스코드를 직접 참고하지 않고 UNIX처럼 쓸 수 있는 시스템을 만들면, 그 위에 올라가는 전체 소프트웨어 생태계를 전부 Free하게 만들 수 있다고 보았다.
  • 그리고 UNIX를 구성하는 많은 것들 중에서 그가 직접 제일 먼저 만든 것이 바로 GCC 컴파일러와 EMACS 편집기였다.
  • GCC 컴파일러는 원래 직접 개발하지 않고, 이미 존재하는 컴파일러를 갖다 써서 편하게 가려고 했었다고 한다. 그래서 당시 존재하는 것들 중에서 학교에서 만든 거라면 소스코드 오픈에 동의할 거라는 기대를 안고 캐나다 워털루 대학교에 연락했다. "워털루 C 컴파일러의 소스코드를 공개하고 우리가 쓸 수 있게 복사해 주세요." 워털루 대학교에서는 피식 하고 비웃고 씹었다고 한다. 스톨만은 결국 열받아서 GCC를 만들었다는 이야기. 20년 정도 지나서 왓콤사를 설립해서 사업하던 워털루 C는 결국 망했다. GCC는 뭐 설명이 필요없는 위치를 점유하고 있고.
  • EMACS 편집기는 일반인들은 사용하기가 매우 부담스러운 전문적인 물건이라서 잘 알려져 있지 않으나, UNIX 쪽에서 일하는 해커와 프로그래머들에게는 아주 중요한 물건이 되었다. 프로그래머가 아닌 일반 엔지니어라면 이걸 쓰기에는 불필요하게 학습곡선이 가파르게 되기 때문에 효율을 위해서 좀 더 쉬운 편집기를 쓰는게 나을 것 같다.
  • 아무튼 그런식으로 대부분의 시스템 유틸리티들을 다 구현했고, 마지막으로 OS커널만 개발하면 되는 단계까지 도달했다. HURD라는 이름으로 커널 개발에 도전했는데, 결국 이것은 실패했다. 너무 이상적인 아키텍쳐를 채택해서 개발속도가 너무 느려졌고, 그 동안 다른 대안이 나왔던 것이다.

MIT X-Window

  • GNU와는 별도로, MIT에서는 1980년대 초반에 교내 교육용 UNIX 네트워크를 굉장히 수준높게 구축하고 있었다. 간단히 말해 요즘 유행하는 '클라우드 컴퓨팅' 같은 것과 비슷한 개념이었다. (단, 이때의 클라이언트는 UNIX 워크스테이션 급을 상정하고 있었으므로 목적 자체는 달랐음)
  • 서버 쪽에서 빵빵한 컴퓨팅 자원을 제공하고, 클라이언트 쪽에서는 편리한 GUI 환경을 통해 결과를 볼 수 있게 해 주는 개념이었는데, 당시에는 UNIX용 GUI가 제대로 된 것이 없었으므로 MIT 자체적으로 완전히 새로 개발했다. 그것이 X-Window 시스템이다.
  • 이 개념에 의해서, X-Window는 서버-클라이언트 개념을 가지게 되었다. 즉 서버 쪽에서 많은 자원을 사용하는 그래픽 관련 작업들을 다 해 주고, 클라이언트 쪽으로 최소한의 정보만 뿌려주면 예쁘게 화면이 구성될 수 있게 해 주는 것이었다. 이 프로젝트는 성공적으로 개발완료되어 MIT 내부에서는 굉장히 풍부한 컴퓨팅 환경을 가지고 수준높은 공학교육이 가능했다. 당시 MIT 학생들은 MATLAB 같은 공학용 소프트웨어들을 학교내 아무 컴퓨터에서나 다 쓸 수 있는 수준이었다고 한다.
  • X-Window의 개발 목적이 교육용이었고, 상업적 목적을 가지지 않았기 때문에 MIT는 자체적인 오픈소스 라이센스 계약조건을 만들어서 배포하였다. 덕분에 이후 많은 해커들이 이 시스템을 가지고 마음대로 응용해도 되게 되었다.
  • 결국 X-Window는 UNIX 워크스테이션의 사실상의 표준 GUI 환경이 되었다. 나중에 Linux가 나왔을 때도, 당연히 X-Window를 포팅해서 GUI 환경을 갖추게 되었다.
  • 그러나 X-Window가 등장한지 30여년이 지났음에도 불구하고 근본적인 발전이 없었고, 네트워크 컴퓨팅 모델에 기반한 서버-클라이언트 개념 때문에 아무래도 응답속도가 좋지 않기 때문에 이를 더욱 단순화하여 빠른 속도를 구현한 대안의 필요성이 대두되었다. 따라서 기존의 X-Window 대안으로 최근 Wayland 등의 신형 그래픽 시스템이 등장하여 실용화 단계에 접어들고 있다. 최신판 Linux 배포판 중에서 상당수는 이미 X-Window가 아닌 Wayland 등의 그래픽 시스템으로 대체된 것들도 좀 있다.
  • 단 일반 사용자가 시스템 내부 구조에 관심을 갖지 않는다면 X-Window든 Wayland이든 간에 사용상 별 차이점을 느끼지 못할 것이다. 디바이스 단의 셋팅 등은 잘 발전된 인스톨 프로그램에 의해서 자동으로 다 잡아준다.
  • 참고로 본 교안에서 사용하는 Chromixium은 X-Window를 사용한다. (이런 것들은 약간 보수적으로 따라가는 것이 골치가 덜 아프다는 잇점이 있다.)

Linux

  • HURD가 지지부진한 상태라서 완전한 GNU 시스템 구성의 마지막 단추가 끼워지지 않고 있을 때, 핀란드에서 리누스가 갑툭튀해서 Linux 커널을 만들었다.
  • 리누스는 별 생각없이 그냥 자기 집에서 쓰는 386 PC 에서도 유닉스를 돌려보고 싶은데 적당한 게 없는지라 그냥 자기가 만들면 되겠네 하고 만들었던 것 같다.
  • 그리고 그걸 유즈넷 그룹에 "이런거 만들어 봤어염"이라고 올렸는데, "PC에서 돌아가는 UNIX"를 애타고 찾고 있던 사람들이 매우 많아서 갑자기 확 뜨게 되었다.
  • 시기적으로 보면, 그때 BSD는 다른 UNIX 소유 회사들이 제기한 소송으로 질질 끌려다니면서 그냥 멈춰 있었고, GNU HURD는 언제 쓸만하게 개발될지 기약이 없는 상태였고, 마땅한 다른 대안이 없었다. 현실적으로 유일하게 Linux가 가장 적합한 대안이 될 수 있었다. 시기적으로 운이 좋았다고 생각된다.
  • 그리고 Linux 커널 위에 올라타는 각종 시스템 패키지가 빠르게 구성되었다. 신속하게 구성될 수 있었던 이유는 (1)해커들의 PC용 UNIX에 대한 욕구 (2)이미 대부분 다 개발되어 있던 GNU 유틸리티들 덕분이다.
  • 그래서 온갖 종류의 Linux 패키지들이 우후죽순 생겨나기 시작했다. 그중에 가장 중요한 줄기를 형성하게 된 패키지 시스템은 2가지라고 생각된다. 데비안(Debian) 및 레드헷(RedHat)이 그것이다. 다른 것들도 많지만 사용되는 비율에서 이 두가지가 압도적이다. 초기에는 레드헷 쪽이 데스크탑 PC용으로 주로 강조되었는데, 레드헷이 "사업"을 위해서 기업용 서버 시장 쪽으로 주력하자 분위기가 가라앉아 버렸다. 대신 데비안은 "사업"을 안하고 "철저하게 Free" 기조를 확고하게 밀어붙였다. 그러다보니 데비안 기반 시스템이 점점 창궐(?)하게 된 것 같다.

Ubuntu

  • 데비안 패키지는 철저하게 Free 소프트웨어들만으로 구성되기 때문에 일반 사용자들이 쓰기에는 2% 부족했다. 편하게 쓸 수 있도록 하기 위해서는 각종 디바이스들을 자동으로 척척 잡아주고 모든게 한방에 끝나야 하는데, 데비안은 안정성 검증을 중시하다 보니 최신 버전의 유틸리티들의 적용에 조금 보수적인 편이라 약점이 있었다.
  • Ubuntu 패키지는 데비안 기반으로 이런 편의성 및 최신버전 적용에 좀 더 과감한 마인드로 나왔는데, 편의성이 워낙 좋았고 이 패키지를 개발하는 캐노니컬사의 과감한 투자에 힘입어 각광을 받게 되었다.
  • 그런데 Ubuntu가 점차 상업적 경향이 강해지고 시스템 구성을 임의대로 바꾸어가기 시작하자 이에 동의하지 않는 사람들이 다른 대안을 찾기 시작하게 되었다.
  • 그래서 편의성이 좋은 Ubuntu를 기반으로 하고, 사람들이 원하는 특성들을 가지도록 한 새로운 배포판들이 나오기 시작했다.
  • 이와같이, 어떤 솔루션이 있는데 단점을 보완한 다른 솔루션이 기존 솔루션 기반을 갖다 쓰는 것은 모두 GNU의 GPL라이센스에서 의도한 생태계가 작동하는 좋은 사례다.

Chromixium

  • Ubuntu 기반 배포판들 중에서, 오리지널 Ubuntu보다 훨씬 가볍고 적은 메모리만 사용하도록 경량화된 것들도 많이 나왔다.
  • Chromixium은 그런 경량화 버전 중의 하나인데, 특징은 (1)구글 크롬OS와 비슷한 사용자 인터페이스 디자인을 가지도록 셋팅해 놔서 최신 트랜드를 맛볼 수 있고 (2)일반적인 Ubuntu의 사용방법을 그대로 유지해도 되어서 편하다는 점이다.
  • 불필요하게 무거울 필요가 없으면서도 최대한 편의성을 가질 수 있는 배포판으로 선정해 보았다.

UNIX/Linux 시스템의 운용상 특징 : MS Windows와의 차이점

  • MS Windows 시스템은 전체 시스템의 설정사항을 대부분 '레지스트리'라는 데이타베이스에 모아서 관리한다. 통합적 관리라는 측면에서는 유용하지만, 이때문에 관리가 오히려 난해해진다는 느낌도 준다.
  • 반면 Linux는 전통적인 UNIX 시스템 관리 방법을 그대로 따른다. 각종 설정 파일들은 대부분 텍스트파일로 되어 있다. 설정용 텍스트 파일들을 사용자가 직접 편집하거나 또는 그것을 편하게 편집해 주는 GUI 툴을 사용할 수 있도록 되어 있다. 이렇게 하면 사용자는 시스템 설정을 마음대로 조정할 수 있는 자유도가 엄청 올라간다. 대신 어떤 설정파일을 어떤식으로 편집해줘야 할지에 대해서 미리 사전지식이 필요해서 일종의 진입장벽이 되기도 한다.
  • MS Windows 시스템을 이루는 각종 유틸리티나 응용 프로그램들은 다양한 기능을 통합해서 덩치가 커진것들이 많다.
  • 반면 Linux는 역시 전통적인 UNIX 시스템의 유틸리티 제작 관념에 따라, 한가지 기능을 하는 단순하고 작은 유틸리티들을 조합해서 쓴다는 개념이 강하다. 이런 명령의 조합을 위해 쉘스크립트 같은 것들을 사용해서 강력하게 응용한다.
  • MS Windows는 커맨드 명령어 보다는 GUI 유틸리티들을 위주로 사용한다는 개념이 강하다.
  • 반면 Linux는 커맨드 명령어 중심이며, 사용자 편의성을 위해 필요한 경우에 부득이하게 GUI로 커맨드 명령을 편하게 줄 수 있게 해 준다는 식의 사고방식이 강하다.
  • 다양한 Linux 배포본들은 일찍부터 온라인 패키지 관리자를 발전시켜왔다. 애플 앱스토어는 따지고 보면 Linux 패키지 관리자를 보고 따라한 것이다. 반면 윈도우즈는 아직 통합적인 온라인 패키지 관리자가 없다. 즉 응용프로그램은 각각 따로 구해서 인스톨해주어야 한다. 통합 온라인 패키지 관리자의 장점은, 유지관리가 편해질 뿐만 아니라 지속적인 업데이트가 매우 용이해진다는 점이다. (윈도우8 버전부터는 온라인 앱스토어가 생겼고, 윈도우10 버전부터 패키지 관리자가 기본적으로 내장되어 사용될 것으로 보인다.)

Linux 시스템 기초지식

패키지 관리

  • 가장 기본적인 패키지 관리 유틸리티는 apt-get명령이다. 터미널에서 다음과 같은 표현을 주로 사용한다. 참고
    sudo apt-get update    # 슈퍼유저 권한으로 시스템 전체 패키지의 현황 인덱스를 업데이트 한다.
    sudo apt-get upgrade   # 업데이트된 패키지의 현황 인덱스를 적용하여 업그레이드 되어야 할 패키지들을 자동적으로 다운로드 받고 설치한다.
    sudo apt-get install 패키지이름    # '패키지이름'에 해당하는 패키지를 다운로드 받아 설치한다.
    
  • 터미널에서 명령어를 사용하기 어려운 점을 감안하여 데비안 리눅스 계열에서는 '시냅틱 패키지 관리자'라는 GUI 툴이 기본적으로 제공된다. apt 계열의 패키지 관련 명령어들이 수행하는 기능을 GUI상에서 편하게 쓸 수 있도록 한 것이다. 참고
  • '시냅틱 패키지 관리자'도 어려워하는 사용자들을 위해 우분투 리눅스 계열에서는 '우분투 소프트웨어 센터'라는 GUI 툴이 별도로 제공된다. 이것은 약간 상업적인 온라인 앱스토어 기능도 겸하게 된다. 참고

기본적인 Linux 터미널 명령어

  • 기본적인 명령어들은 이곳이곳 등을 참고한다.

ETC