요약
1. 리눅스란?
리눅스는 1991년 리누스 토스발스가 개발한 리눅스 커널(메모리, 자원, 프로세스 관리 시스템)에 기반한 오픈소스형 유닉스 계열 OS입니다. 오픈소스라는 이점으로 인해 다양한 기기에 변경과 개량을 거쳐 사용되고 있습니다. 사용 목적에 따라 수많은 배포판이 존재하며 현재 웹서버, 임베디드, 모바일 기기 시장의 절대 다수를 차지하고 있습니다.
2. 리눅스의 특징은?
오픈소스(Open-source)
리눅스는 공유재와 같이 기본적으로 무료로 오픈된 오픈소스형 OS이기에 필요에 따라 유연하게 OS를 커스텀 제작할 수 있습니다. 따라서 수많은 기업과 개인이 다양한 기기에 리눅스를 이식하여 사용합니다. 이는 리눅스가 넓은 범용성을 지녀 다양한 생태계를 형성하는 계기가 되었습니다.
명령줄 인터페이스(CLI, Command-Line Interface)
리눅스는 일반적으로 명령줄 인터페이스로 사용합니다. 따라서 다중 사용자 작업에 유리한 이점을 지니며, 문제 해결이 GUI에 비해 간단합니다.이는 컴퓨터 상의 문제를 해결하는 직업인 개발자에게 친화적인 특성을 지닙니다.
3. 개발자에게 리눅스란?
웹서버의 90% 이상, 모바일 기기의 60% 이상이 리눅스를 기반으로 구축되어있어 서버를 다루는 백엔드 개발자 또는 모바일 개발자라면 반드시 친숙해져야 할 운영체제입니다.
우리 인류가 현재 가장 많이 쓰는 OS(Operating System, 운영체제)는 무엇일까요? 많은 분들이 윈도우나 맥으로 이 글을 보시고 있지만, 사실 전세계에서 가장 많은 점유율을 차지하는 OS는 바로 리눅스(Linux)입니다. 우리가 많이 쓰는 모바일 중 안드로이드(android)가 바로 리눅스 커널(kernel)을 기반으로 만들어진 OS이기에 리눅스의 일종이기 때문이죠.
*커널(kernel): 하드웨어 자원 배분, 프로세스 제어, 메모리 제어, 시스템 콜 등을 수행하는 운영체제의 맨 하부
개발자들에게는 서버를 다루거나 클라우드 컴퓨팅을 할 때 꼭 배워야 하는 OS로 익히 알려져 있습니다. 리눅스가 어떤 운영체제인지, 어떻게 운용하는지에 대해 간단히 알아보겠습니다.
01. 리눅스(Linux)란?
리눅스의 역사를 살펴보겠습니다.
태초에 현대 운영체제의 기반이 된 유닉스(Unix)라는 운영체제가 있었습니다. 유닉스는 미국의 통신사인 AT&T의 벨 연구소에서 1971년에 출시하였습니다. 이 유닉스는 다앙햔 시스템 간 이식을 지원하였고, 멀티 태스킹과 다중 사용자를 지원하도록 설계된 매우 현대적인 운영체제였습니다.
또한 이 유닉스 기반으로 만들어진 미닉스(Minix)라는 교육용 OS 프로그램이 존재했습니다. 미닉스는 유닉스 운영체제의 원리를 학습하고자 하는 학생을 위한 교육용 OS로 당시 컴퓨터 과학을 공부하는 학생들이 즐겨 사용했습니다.
그러던 1991년, 핀란드 헬싱키 공대 대학생이었던 리누스 토스발스가 미닉스OS를 사용하다 마음에 안드는 점이 있을 때마다 커널에 여러가지 기능을 추가하다 탄생한 OS가 바로 리눅스(Linux)입니다. 자신의 이름인 리누스(Linus)와 유닉스(Minix) 단어의 합성어로 이름지어진 것이죠.
리누스 토스발스는 FTP서버(파일 전송 서버)에 리눅스의 소스코드를 오픈소스 개발 형식으로 공개해 많은 사람들이 개발에 참여할 수 있도록 하였습니다. 이를 통해 리눅스는 공개 직후 매우 빠르게 발전하였습니다. 여기에 자유소프트웨어 재단에서 추진하는 OS프로젝트의 커널로 리눅스가 채택되어 핵심 기능만 존재하는 커널에 무료 소프트웨어, 유틸리티들이 결합되어 완전한 운영체제로 거듭났습니다.
이런 역사를 거쳐 1994년 오픈소스계를 대표하는 OS로서 완전한 리눅스가 탄생하였습니다.
오픈소스라는 이점을 가진 OS이기에 현재는 웹서버, 클라우드 컴퓨팅, 안드로이드, 임베디드 기기, 데스크톱 등 다양한 기기에서 리눅스를 변형해 사용하고 있습니다.
리눅스는 1991년 리누스 토스발스가 개발한 리눅스 커널에 기반한 오픈소스형 유닉스 계열 OS입니다. 오픈소스라는 이점으로 인해 다양한 기기에 변경과 개량을 거쳐 사용되고 있습니다.
02. 리눅스의 특징
02-1. 오픈소스(Open-source)기반
오픈소스(Open-source)는 소스코드를 누구나 접근하여 열람할 수 있도록 공개하는 것을 말합니다. 한마디로 리눅스 자체는 컴퓨터 세계의 '공유재'인 것이죠. 이 공유재를 기반으로 발전한 생태계가 개발자와 사용자에게 수많은 혜택과 변화를 가져다 주었습니다. 이 생태계는 단순히 취미로 개발을 하던 사람들의 발전 기여를 넘어 윈도우, 맥 등 사유 OS소프트웨어에 종속되지 않으려는 거대 IT회사들이 리눅스 생태계에 투자를 시작하면서 생태계 발전은 다양한 방향으로 가속화 되었습니다.
또한 리눅스를 마음껏 수정하고 필요에 맞게 배포할 수 있어 소스코드가 비공개된 OS에 비해 다른 플랫폼이나 기기에 적용하기 쉬웠습니다. 이를 통해 수많은 상용 프로그램, 상용 기기가 리눅스를 기반으로 개발되기 시작했고, 현재는 대부분의 웹서버, 임베디드 기기, 모바일 기기가 모두 리눅스를 기반으로 설계됩니다.
즉, 오픈소스 기반의 리눅스는 매우 넓은 범용성과 다양한 생태계를 보유했다는 이점을 보유하고 있습니다. 물론 이 때문에 수많은 리눅스 배포판이 존재하여 처음 리눅스를 접하는 사용자는 학습 난이도가 존재한다는 단점을 가지기도 합니다.
02-2. CLI(Command-Line Interface)기반
리눅스(Linux)는 CLI(Command-Line Interface, 명령줄 인터페이스)기반이라는 특징을 여전히 가지고 있는 OS 중 하나입니다. 우리가 사용하는 맥, 윈도우는 모두 GUI(Graphic User Interface, 그래픽 인터페이스)로 이를 OS와 따로 분리할 수 없습니다. 아래 사진의 왼쪽이 CLI의 예, 오른쪽이 GUI의 예입니다.
물론 리눅스 또한 배포판에 따라 GUI를 지원합니다. 일반적인 사용자가 많이 쓰는 리눅스 배포판인 우분투(Ubuntu)와 데비안(Debian)이 GUI를 지원하고 있습니다.
하지만 이 두 리눅스 배포판 또한 CLI가 기본입니다. 그리고 생각보다 이 CLI의 이점은 굉장히 많습니다. 터미널 명령어로 여러 문제를 터미널 명령어 몇번만 입력하면 해결 가능하기도 하고 한번에 대량의 서버 컴퓨터를 다루기에도 GUI에 비해 매우 유리합니다. 이로 인해 많은 개발자들이 CLI 환경을 GUI 환경보다 훨씬 선호하고 있습니다.
3. 마무리: 개발자에게 리눅스란?
이 글을 읽고 계신 분이 웹 백엔드(Web backend) 개발자이시거나 백엔드 개발자를 꿈꾸는 분이라면 리눅스는 반드시 친해져야 할 존재입니다. 웹서버, 클라우드 컴퓨팅 시장의 90%가 리눅스 기반으로 구동됩니다. 백엔드 개발자는 서버(Server)를 다루는 개발자로 서버라는 일종의 컴퓨터는 거의 대부분이 리눅스이기에 윈도우보다 더욱 친숙해야 합니다. 서버를 사용해야하는 주체는 바로 '기업'인데, 기업이 리눅스를 사용하지 않을 이유가 없습니다. 무료에, 생태계가 넓어 관련 기술자 구인이 쉽고, 강력한 기능을 제공한다는 것은 기업의 비용과 직결된 문제이기 때문입니다. 따라서 이 흐름이 바뀌기는 쉽지 않습니다. 이는 리눅스가 주로 쓰이는 임베디드 기기(자동차, 냉장고, 게임기 등)에 모두 해당하는 사항입니다. 앞으로 리눅스의 명령어와 윈도우 설치 등에 대해 다뤄보겠습니다.