리눅스란 무엇인가? – 리눅스 기초 1

리눅스란? – 운영체제

이 포스팅 시리즈에서는 우분투 리눅스(Ubuntu Linux)의 기초에 대해서 알아보고 일부 실습을 해보겠습니다. 이 문서는 컴퓨터에 익숙하지 않은 초보자들을 대상으로 설명하지만 사람마다 컴퓨터에 대한 배경지식이 다를 수 있으므로 난이도가 100% 맞지 않을 수 있다는 점을 감안해 주시면 감사하겠습니다. (이 블로그의 다른 문서들도 난이도가 주제에 따라 각기 다릅니다)

우선 리눅스라는 단어에 익숙하지 않은 사람들을 위한 질문입니다. 리눅스란 무엇이며 누가 왜 사용하는 것일까요?

리눅스란 윈도우나 MacOS 같은 컴퓨터의 운영체제(Operating System)입니다. 운영체제란 내부적으로 복잡한 구조로 이루어져 있지만, 간단히 말하면 컴퓨터 하드웨어를 구동하고 사용자의 요청을 받아 여러가지 응용프로그램을 실행시키는 프로그램을 운영체제라고 합니다.

예를 들어서 인터넷을 하고 싶어서 윈도우11이 설치되어 있는 노트북을 켰습니다. 인터넷을 실행하지 않은 상태도 이미 프로그램이 돌아가고 있는데 그게 운영체제입니다. 크롬 인터넷 아이콘을 클릭하면 운영체제가 인터넷 브라우저를 실행하라는 요청으로 알아듣고 브라우저가 열립니다. 이제 주소창에 www.google.com 이나 www.naver.com 을 입력하고 네트워크 상에 http 요청을 보내는데 이것도 운영체제가 인터넷 브라우저의 요청을 받아서 실행합니다.

이렇게 사용자들이 무심코 사용하는 프로그램의 기능 중에 운영체제가 하는 일은 수도 없이 많아서 일일이 설명하는 것은 의미가 없습니다만, 그 동안 응용 프로그램(Application Program), 요즘엔 앱(App) 이라고 하는 개념만 가지고 있었다면 리눅스가 조금 생소할지 모르겠습니다. 리눅스(Linux)에 입문하려면 이제 운영체제의 개념을 정립해야 하는 단계입니다.

운영체제는 컴퓨터공학의 학부 수준에서 한 학기 정도 수업에서 대강의 개념을 가르칠 정도이고 더 나아가서 커널의 개발과 컴파일러 개발 같은 주제는 컴퓨터 대학원의 석사 과정에는 들어가야 본격적으로 다룰 수 있는 학문으로 일반 응용 프로그램을 개발하는 단계에서는 개념 정도만 정립해도 충분한 내용입니다.

윈도우를 사용하는데 컴퓨터 대학을 다니지 않아도 되는 것과 마찬가지 입니다. 다만 리눅스는 그보다 조금 더 운영체제의 구조와 원리에 대해서도 함께 학습하는 것을 권장할 수 있습니다. 애시당초 윈도우와 MacOS 그리고 안드로이드가 있는데 굳이 리눅스를 배우려는 사람이라면 컴퓨터 시스템에 대해 남들 보다 열정이 있는 사람으로 볼 수도 있습니다. 인터넷을 검색하다 보면 리눅스 사용자가 이 정도는 알겠지라는 식의 설명도 많이 있기 때문에 운영체제에 대한 지식이 많을 수록 좋습니다. 물론 리눅스는 윈도우 시리즈와 달라서 사용하는 경험치에 비례하여 운영체제를 더 잘 알게 됩니다. 윈도우는 원래 사용할수록 미궁에 빠지는 경향이 있었는데 최근에는 오픈소스 정책도 펼치면서 많이 좋아지고 있다고 봅니다. (해도 리눅스에 비하면 멀었지요)

이 포스팅은 운영체제에 대한 세부적인 내용은 줄이고 리눅스에 대한 이야기를 중심으로 다루도록 하겠습니다.

왜? 누가 사용하는가?

리눅스를 왜 사용하는지는 사용자의 목적에 따라 다릅니다. PC방에서 사람들에게 윈도우를 왜 사용하냐고 묻는 것과 비슷한 느낌인데요. 캐주얼하게 그냥 리눅스가 좋아서라고 대답할 수도 있을 것 같습니다.

하지만 역시 많은 사용자들에게 리눅스를 사용하는 이유를 물으면 오픈소스 소프트웨어로 서버를 구축하기 위해서라고 말할 것 입니다. 리눅스가 탄생한 역사는 꽤 긴 내용이지만 리눅스의 목적를 요약하면 Unix-Like OS – 개인용 컴퓨터에서 구동하는 유닉스 같은 운영체제를 만들고 사용자가 스스로 커스터마이즈(개별 설정) 하기 위해서 입니다.

이와 같은 소프트웨어 생태계를 형성하는데 영향을 미친 인물은 1980년대에 GNU 운영체제를 시작한 리처드 스톨먼과 1990년대 초에 리눅스의 커널을 만든 리누스 토발즈(Linus Torvalds) 입니다. 합쳐서 GNU/Linux 혹은 Linux/GNU(리눅스가 더 중요하다는 사람들의 의견) 라고 말합니다.

리눅스를 설명하기 위해 오픈소스(Open Source)에 대한 내용을 빼놓을 수가 없는데 일단 이 단어는 오해가 많은 단어입니다. 오픈소스는 무료가 아니지만 대부분 무료로 사용이 가능합니다. 이상한 말 같지요? 오픈소스는 말 그대로 소스코드가 대중에게 오픈(Open public)되어 있다. 그래서 코드가 뭘 하는 건지 들여다 볼 수 있다는 뜻 입니다. 윈도우나 MacO는 오픈소스가 아닙니다. 오픈소스의 반대는 클로즈드 소스(Closed Source)로 대중에게 소스 코드가 공개되어 있지 않다는 말 입니다.

왜 오픈 소스를 사용하는가? IT자선 사업이냐? 약간은 그런 것 같기도 한데 사실은 오픈 소스는 자선 사업이 아닙니다. 단지 여러 사람이 GNU/Linux를 개선하는데 자발적으로 참여하기 위해서는 소스가 오픈되야 뭘 고쳐서 만들고 배포할 수 있기 때문입니다. 리처드 스톨먼과 리누스 토발즈의 GNU/Linux에서는 일반적으로 구현되야하는 핵심 프로그램인 커널과 컴파일러 등 유틸리티가 들어있고 이것들을 활용해서 사용자들의 목적에 따라 배포판(Disturibution)을 따로 만듭니다. 목적에 따라 배포판 패키지를 만들어 놓아서 이름을 붙인 것이 우분투, 레드햇, 페도라, 칼리 등 입니다. 이것들을 리눅스의 디스트로(distro)라고 합니다.

어떤 디스트로를 사용하느냐는 사용자의 목적에 적당히 맞는 것을 사용합니다. 최근에는 우분투(Ubuntu)를 많이 사용하는데 우분투는 데비안 계열의 디스트로로 서버를 돌리기에도 괜찮고 개인용 데스크탑에서 쓰는데도 좋습니다. 이런 오픈소스 소프트웨어는 사용자가 많아지면 커뮤니티가 발달해서 점점 더 쓸만해지는데 일반 사용자 중에 우분투를 사용하는 경우가 많습니다. 우분투 관련하여 웬만한 내용은 구글에 검색하면 쉽게 찾을 수 있습니다.

리눅스가 만일 오픈소스가 아니었다면 이렇게 배포판이 나오지 않았을 것이고 MS사의 윈도우나 애플사의 MacOS같은 회사의 브랜드를 붙여서 나왔을 겁니다. 당연히 컴퓨터 한대 설치할 때 수백 달러 이상의 라이센스와 유지보수 관련 비용도 지불해야 하겠지요. 오픈소스 = 무료라는 공식은 아니지만 내가 관리만 잘하면 무료처럼 싸게 사용할 수 있기 때문에(내가 못하면 IT기술자를 채용해야 한다) 리눅스가 서버 시장을 장악하고 있습니다. 2021년 하반기 현재는 Unix와 Unix-like 계열의 리눅스가 인터넷 서버 시장의 약 80% 정도를 차지하고 있습니다.

데스크탑에서는 리눅스를 거의 사용하지 않는데 그렇다면 일반인들은 리눅스와 관련이 없는 것인가? 라는 생각을 할 수 있겠지만 구글의 안드로이드는 리눅스 커널을 사용하여 개발되었습니다. 물론 안드로이드 앱은 달빅가상머신이라는 별도의 시스템이 구동되기 때문에 좀 먼 이야기지만 안드로이드에도 리눅스처럼 Shell 커맨드를 사용할 수 있습니다. Shell에서 내부적으로 사용하는 것은 커널이기 때문에 안드로이드와 리눅스가 관련성이 있다고 볼 수 있습니다.

조금 많은 이야기를 하나의 주제에 담으려다 보니 내용이 넓어졌는데 리눅스의 세계는 복잡합니다. 왜냐하면 한 사람이 만든 게 아니라 최고의 컴퓨터 엔지니어들의 손을 거쳐서 지금의 형태가 되었기 때문입니다.

리눅스의 커널의 기원을 추적하면 1970년대 벨연구소의 데니스 리치와 켄 톰슨 까지 거슬러 올라가야 하는데 컴퓨터 역사 시간이 아니니까 거기까지 가지는 않겠습니다.

리눅스 사용 이유

주된 이유는 서버 구축입니다. 본인이 직접 서버를 구축하지 않는다고 하더라도 많은 클라우드 서비스에서 대부분 리눅스를 기본 서버로 사용합니다. 이 워드프레스 블로그가 설치된 AWS도 우분투 서버를 사용하고 있습니다.

서버에는 웹서비스만 있는게 아니라 온갖 종류의 서버 프로그램을 만들 수 있습니다. 백엔드 개발자들은 리눅스 서버 프로그램을 개발합니다. 리눅스 서버에 게임, 채팅, 크롤링 등 24시간 연중무휴로 돌아가는 백엔드 서비스를 구현합니다.

우분투는 데스크탑으로도 사용합니다. GUI도 여러 종류가 있어서 입맛대로 커스터마이즈가 가능한데 이 맛에 리눅스를 데스크탑에서 사용하는 사용자도 있습니다. 최근에는 화려한 KDE를 많이 사용하는 편입니다.

칼리 디스트로(kali distro)의 경우는 인터넷 보안과 해킹 관련한 테스트(Penetration Test)를 할 때 사용하는 리눅스입니다. 화이트해커에 입문할 때 많이 사용합니다.

레드햇(RedHat)은 오래된 디스트로로 기업용 리눅스입니다. 레드햇은 기업용 서비스하는 회사가 따로 있어서 무료가 아닙니다. 모든 오픈소스가 무료가 아니라고 한 것의 대표적인 케이스가 레드햇입니다. 리눅스를 자체적으로 유지 보수하는데 어려운 기업은 유료 서비스를 구독해야 합니다.(리눅스의 소스코드는 누구나 볼 수 있지만 그걸 보고 관리하는 것은 누군가의 노동이므로 돈을 내야 합니다)

또 다른 이유로는 운영체제의 학습을 위해서 사용할 수 있습니다. 리눅스로는 윈도우와는 또 다른 차원에서 많은 일을 해볼 수 있습니다. 그러기 위해서 대부분의 시간을 GUI가 아니라 명령어 라인(Command Line Interface)을 사용하게 되는데 리눅스의 학습을 보통 Bash Shell에서 시작하는 이유입니다.

요약

리눅스란 무엇인가에 대해서 간단히 알아봤습니다. 리눅스는 오픈소스가 된지 벌써 수십년이 지났고 워낙 다양한 영역에서 적용되고 있기에 리눅스란 어떤 것 이다라고 한 마디로 규정하기는 어렵습니다. 그래서 사용자 본인의 목적에 맞는 배포판을 선택하여 커스터마이즈 해보는게 중요합니다.

참고문서

데비안 GNU/리눅스

Leave a Comment