리눅스

ko
둘러보기로 가기 검색하러 가기

턱스.png리리눅눅스스.png 턱스:저는 리눅스의 마스코트에요!

개요[편집]

컴퓨터 OS 커널의 일종인 리눅스 커널, 또는 리눅스 커널을 사용하는 운영 체제를 가리키는 말이기도 하다. GNU 쪽 사람들은 리눅스는 커널일 뿐이고, 이 커널을 가져다가 GNU 프로그램들을 올려 만든 운영 체제는 GNU/Linux라고 이야기하며 이런 명칭에 민감하게 반응하는 경우도 있다. 소스 코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어다. 컴퓨터 역사상 가장 많은 참여자가 관여하고 있는 오픈 소스 프로젝트다. 모바일 운영 체제로 유명한 안드로이드 OS 역시 리눅스 커널을 가져다 쓰고 있다. 30px Linux라는 이름은 Linus' *nix, 리누스의 유닉스라는 뜻으로 지어졌다. *nix는 Unix 계열 운영체제라는 뜻이다. 나중에 Linux Is Not UniX라는 재귀적 용어의 줄임말이라는 의미를 새로 만들어냈다.

리눅스 재단에 따르면 퍼블릭 클라우드 컴퓨팅 워크로드의 90%, 스마트폰의 82%, 임베디드 기기의 62%, 슈퍼 컴퓨터 시장의 99%가 리눅스로 작동한다.[* [[1]] ]

2007년부터 2019년 사이의 리눅스 커널 참여자중 회사순위를 보면 1위 Intel (10.01%), 2위 Red Hat (8.90%), 3위 IBM (3.79%), 4위 SUSE (3.49%), 5위 Linaro (3.17%), 6위 Google (2.79%), 7위 Samsung (2.58%), 8위 AMD (2.28%), 9위 Renesas (1.99%), 10위 TI (1.78%), 11위 Oracle (1.70%), 12위 Broadcom (1.23%), 13위 Huawei (1.2%), 14위 Mellanox (1.19%), 15위 NXP (1.18%), 16위 ARM (0.98%), 17위 LinuxFoundation (0.78%) 등으로 모두 반도체/통신/IT/시스템 업체임을 알 수 있다.[* 출처: [[2]]]

[재단 공식 웹사이트], [GitHub 사이트]

역사[편집]

초기[편집]

1991년 당시 핀란드 헬싱키 공대 대학생이었던 리누스 토르발스미닉스 OS를 사용하는 컴퓨터에서 작업해서 만들었다. [기사] 미닉스를 쓰면서 마음에 안 드는 점이 있을 때마다 커널에 여러가지 기능을 추가했고, 어느 새 운영체제에 가까울 정도로 기능이 늘어났다.

리누스는 이 커널을 처음 릴리스 할 때, 무료이니 'Free', 매니아이니 'Freak', 그리고 Unix와 유사하니 'x'를 조합해 'Freax'라고 부르길 원했다고 한다. 그러나 FTP 서버에 소스 파일을 업로드해줬던 아리 렘케는 차라리 리누스가 개발했으니 '리눅스'라고 부르는 게 낫겠다 싶어 리누스의 허락 없이(...) 이름을 '리눅스'로 바꿨고, 리누스도 이 이름이 마음에 들어 새 운영체제의 이름은 리눅스로 확정됐다. 나중에 리누스 토르발스는 BSD가 실패한 원인이 "이름에 쓸데없이 약자를 써서 그렇다."라고 말한 적이 있다.

발전[편집]

리눅스는 거의 공개 직후부터 가히 폭발적인 성장세를 보인다. 여러가지 원인들이 겹친 결과였다. 유닉스의 일종인 BSD가 소송에 휘말리면서 대체품에 대한 관심이 커진 것도 큰 역할을 했다. 극성 BSD 빠들 중에서는 그 소송만 없었다면 리눅스는 존재하지도 않았을 거라고 주장하는 사람도 있을 정도였다. 또한, 리눅스 OS 커널 소스코드에 GPL 라이선스를 선택하고, 현재 오픈 소스 개발 모델의 모체가 된, 소스 코드 공개와 공개적 개발 모델을 선택한 것도 매우 유효했다. 이전에는 오픈 소스 소프트웨어라도 핵심 개발자 집단이 개발 과정을 독점하고, 릴리스할 준비가 되었다고 판단될 때에야 소스를 공개하는 방식을 사용했다. 그런데 리눅스는 누구나 소스를 읽은 후 패치를 작성해 보낼 수 있도록 했다. 패치가 받아들여지면 그 패치를 보낸 사람은 기여자가 되어 다음 릴리스 노트에 이름이 박혔다. 에릭 레이먼드의 "시장과 성당[* 책의 이름이다. Microsoft, Apple등에서 개발하는 운영체제는 폐쇄적이며 내부를 알 수 없는 '성당'으로, 리눅스를 쉽게 내부를 볼 수 있고 알 수 있는 '시장'으로 비유했다.]"의 표현을 빌리자면, 이는 사람들의 과시욕을 충족시키는 방식이었고, 사람들은 돈을 받지 않고도 커널 버그 수정과 기능 추가에 매달렸다.

초기 리눅스는 기능이 불완전한 운영 체제였다. 그러나 자체 커널 개발에 난항을 겪고 있던 GNU 프로젝트가 리눅스 커널에 관심을 가졌고, 리눅스 커널과 GNU 유틸리티가 결합하면서 비교적 완전한 운영체제로 거듭났다. 18개월여만인 1994년에는 리눅스 커널 1.0 버전이 나왔다. 이후 썬 마이크로시스템즈IBM 등의 대기업들이 리눅스 개발을 지원하기 시작하는 등, 리눅스가 IT 세계에서 가지는 입지는 빠르게 탄탄해졌다.

현재[편집]

데스크톱/랩톱 용도 뿐만아니라 웹 서버, 클라우드, 안드로이드 및 포터블 게이밍 콘솔등의 모바일 기기, 각종 임베디드 기기 (가전용, 상업용, 산업용, 차량용 기기)등을 구동하는 운영 체제다. 데스크탑/랩탑 시장에서도 2010년 중후반부터 리눅스 붐이 다시 일고 있다. 유튜브를 검색해 보면 알수 있다.

레드햇, SUSE와 같이 리눅스 OS 배포자는 물론이고 인텔, AMD, Linaro, Renesas, Broadcom, NXP, 삼성, Texas Instruments, ARM 등 반도체 회사에서 자체 SoC를 비롯하여 디바이스 드라이버를 위해서도 리눅스 커널에 참여 하고 있다. 리눅스 창시자인 리누스 토르발스레드햇 등의 리눅스 관련 회사들에게 주식을 받았는데 그 덕에 부자가 되었다. 평생 돈 걱정은 없을 것이다.

모바일 시장에서 리눅스 커널을 쓰는 안드로이드의 위상이야 더 말할 필요가 없을 정도이다.

Windows Subsystem for Linux(WSL)라는 이름으로 윈도우10에 리눅스 커널을 설치가능하다. MS스토어에서는 우분투, 데비안, openSUSE, SUSE Enterprise, 칼리 리눅스가 WSL을 위해 제공되고 있다. GUI 데스크탑 환경을 사용하려면 X11 서버 등을 설치해야 하며, 차후 WSL 내부에 Wayland라는 서버를 추가하여 원격 데스크탑 통신으로 리눅스 GUI를 지원할 예정이라고 한다. [[3]]

2020년 10월 현재 리눅스 커널 버전 5.9가 릴리스 되고 있다. v5.9 릴리스 노트 [[4]] 리눅스 커널 버젼별 릴리스 노트 [[5]]

특성[편집]

다양한 배포판[편집]

OS의 핵심 기술이 리눅스 커널이고 동일 한 리눅스 커널을 사용하는 수많은 배포자들이 있다.

모든 소스가 공개되어 있다 보니 같은 역할을 하는 프로그램이라도 편리성을 지향하는 프로그램, 속도를 지향하는 프로그램, 확장성을 지향하는 프로그램, 가벼움을 지향하는 프로그램 등 여러 선택지가 존재하기 때문. 쉽게 이야기 하면 '종자'(감자 혹은 오렌지)와 '종자 개량' 그리고 그 '종자'를 이용해 재배한 작물을 활용한 '완제품'(감자칩 혹은 오렌지음료류)을 생각하면 쉽다.

운영체제 하나를 구성하는 데에도 핵심부 커널부터 해서 그 상위 미들웨어를 거쳐 사용자가 접하는 인터페이스에 이르기까지 수십~수백 가지의 프로그램이 들어가고 그걸 엔드유저가 직접 하나하나 신경쓸 순 없기 때문에[* LFS, 젠투, 아치 리눅스 같은 경우 그 모든 걸 유저가 선택해서 쓰는 걸 목표로 하고 있다.] 배포자의 기준으로 하나의 세트(배포판)를 만들어 내고 사용자에게 배포된다.

리눅스에 입문하는 엔드 유저는 배포판(벤더)들이 다양하다고 걱정할 필요가 없고 Ubuntu나 Fedora를 사용하면 된다. USB나 SSD로 여러 배포판의 리눅스 OS를 테스트 해볼수 있는 장점도 있다.

거기에다 공개되어 있는 커널 소스와 기타 오픈소스 프로그램들을 마음대로 가져다 자신만의 리눅스 배포판을 만들어 브랜딩이 가능하다. 그래서 모든 리눅스 배포판의 갯수를 집계한다는 것은 불가능 하나, 어느 정도 공개적으로 배포되어지거나 인지도가 있는 배포판을 연대표(타임라인)식으로 공개한 GNU/Linux 배포타임라인에 따르면 약 450여개의 배포판이 있다고 전해 진다.[[6]] 다만 해당 자료는 2013년까지의 내용만 있기에 2020년대에 들어서면 더 많아졌을 가능성이 있다. 리눅스 배포판의 인기순위를 알고 싶다면 리눅스배포판 랭킹사이트인 디스트리뷰션닷컴[[7]]을 참조하면 된다.

* 'Linux'가 아니라 'GNU/Linux'라고 불러야한다는 주장도 있다. 자유 소프트웨어 운동을 창시한 리처드 스톨먼도 'GNU/Linux'라고 부르지 않는 기자들과는 대화도 하지 않는다고. 사실 리누스가 만든 것은 리눅스 커널 뿐이며, OS의 구성물 대다수는 자유 소프트웨어 재단 하에서 만들어진 소프트웨어로 채워져 있다. 커널이 OS의 핵심이기는 하지만 분량은 극히 일부일 뿐이다.
* 하지만 리누스 본인은 GNU/Linux라 부르는 걸 이상하다 생각하고 Linux라 부르는 걸 선호한다. 'Linux'라는 상표를 가지고 있는 원 제작자가 좋아하지 않는 행위이다 보니, 이 쪽 관련으로 본인의 자서전에서 리처드 스톨먼을 언급하기도 한다. 리눅스 자체는 GNU프로젝트가 아닌데도 불구하고 FSF가 리눅스를 GNU/Linux라고 하는 등의 GNU 프로젝트인 것처럼 포장 하는 행위를 별로 좋아하지 않는다. [fact that rms and the FSF has tried to paint Linux as a GNU project] 특히 안드로이드는 제일 많이 보급된 리눅스 배포판으로 볼 수 있는데, 이건 GNU 라이선스가 아니다. 구체적으로는 커널은 GNU 라이선스로, 그 위의 구성물들은 아파치 라이선스로 배포된다. 그래서 C 라이브러리 또한 GNU libc가 아닌 구글의 바이오닉.
* 리눅스 커널 자체도 변형판이 있다. 각 배포판 제작 팀에서 자기 입맛에 맞춰 약간 씩의 수정을 가하기도 하고, 공식 리눅스에는 포함되지 않은 패치를 집어넣어서 직접 컴파일 할 수도 있다. 그렇다고 윈도마냥 비스타에서 옛날프로그램 돌리기 어렵고 뭐 그런건 아니다. 사실 옛날프로그램이 지금과 호환되지 않는 것은 커널의 잘못이 아니라 API의 문제다. 리눅스 커널에서의 수정은 드라이버의 포함 여부, 자원을 다루는 규칙의 선택, 최대 절전 모드 등의 기능 포함 여부 정도가 전부다. 커널 패치도 마찬가지. 따라서 변종이라고 해 봐야 일반적인 의미의 그런 변종은 아니다. 커널 컴파일 옵션을 보면 실행파일 형식도 두어가지(a.out과 ELF)가 나오는데, 이미 한참 예전에 바뀐 표준이라 큰 의미는 없다. 굳이 호환성을 신경써야 할 상황이라면 둘 다 체크해도 된다. 윈도 API는 메이저 업데이트마다 우수수 바뀌고 상용프로그램도 일정 기간마다 야!끝났다!하고 버그픽스 외엔 손을 놓아버리고 다음 버전으로 넘어가기 때문에 그런 인식이 강하다. 반면 리눅스는 API도 프로그램도 지속적으로 계속 발전되어 나가기 때문에 전체가 유기적으로 움직여서 그런 느낌이 덜하다. 일반적으론 API가 업데이트되더라도 소스코드가 개방돼있는 이 동네 특성상 재컴파일만 하면 쓸 수 있으며, 그렇지 않으면 죽기 직전의 프로그램이라도 누군가가 새 라이브러리에 맞게 수정한 패치만 올려주면 연명가능. 우분투만 해도 메이저 버전마다 패키지가 따로 만들어져 나오는 걸 생각해 보자. 참고로 한번 설치하면 지속적으로 업데이트해 나가는 아치 리눅스 같은 경우, 어떤 라이브러리에 큰 수정이 있으면 그에 관련된 프로그램들이 동시에 우수수 업데이트되기도 한다. 그만큼 업데이트가 잦은 편이며 너무 업데이트를 드물게 하면 업데이트 한 방에 부팅 불가능한 상황이 오기도 한다.
* [배포본 정보와 출시 소식 정리 사이트].

다양한 플랫폼[편집]

기본성능 이상의 대부분의 CPU 보드에 리눅스를 설치 가능하다. 단, CPU 플랫폼에 의존적인 부분이 있어 각 리눅스 OS 배포판과의 호환성이 있어야 한다. 데스크탑이나 랩탑 PC용 리눅스 운영체제 말고도 임베디드 시스템용 리눅스 배포판도 다양하다. 인터넷 공유기, 스마트폰, 게이밍 콘솔 등에도 리눅스 OS를 포팅가능하다. 리눅스 커널을 사용하는 안드로이드 OS도 X-Window가 서피스플링거로 대체되고 Dalvik 가상머신 등의 안드로이드 프레임워크 계층이 추가된 리눅스기반 OS이다. 냉장고텔레비전 등의 가전을 비롯하여 드론에서도 리눅스를 사용하는 경우가 있다. (U)HDTV에서 GUI나 어플등을 위해 리눅스가 사용된다. DVR의 대표기기인 Tivo도 리눅스 OS로 동작한다. 주변기기를 지원하는 플랫폼으로 본다면 리눅스가 더 많다. 참고로, 호환성을 미덕으로 삼는 NetBSD도 있다.[* NetBSD의 경우 지원되는 CPU 플랫폼이 11개 정도이다. NetBSD의 모토는 "Of course it runs NetBSD!" 이다.]

리눅스는 CPU 핫플러그인도 지원한다. 컴퓨터가 작동되는 중에 작동되는 코어를 켜고 끌 수 있다는 소리다. 실제로 이 기능은 ARM big.LITTLE의 핵심 기능으로 사용되고 있다.[* 코어를 켜고 끄는 건 바이오스에서 설정해야 하는 것이 일반적이다. 그것을 OS가 작동할때 설정할 수 있다는 소리다.]

[youtube(T1_RAkLWgMc)] 위와 같은 리눅스로 동작되는 전용 포터블 콘솔 게임기 말고도 드림캐스트, 게임큐브, Xbox 360, Wii, Wii U, PS4, XBOX ONE에 모두 리눅스를 설치가능하다. 다만, 리눅스 하드웨어 요구 사양이 과거에 비해는 다소 올라가서 Wii와 같은 7세대 이전의 게임기에서는 리눅스 버젼과 어플을 취사선택해야 한다.

플레이스테이션 2에서도 공식적으로 리눅스를 지원한 적이 있었다. 이를 위해서 네트워크 카드, 40GB HDD, VGA 케이블, 키보드, 마우스, 메모리카드와 더불어 리눅스 인스톨 키트를 세트로 해서 판매하였다. 다만 리눅스를 설치한 상태에서는 게임 구동이 불가능하였으며, 게임을 돌리기 위해서는 리눅스를 포맷하고 PS2 기본 펌웨어로 변경해야 했다. 나중에 나온 슬림모델에서는 HDD를 설치할 수가 없으므로, 리눅스 설치가 불가능해졌다. 플레이스테이션 3에서도 공식적으로 리눅스 설치가 가능했다.[[8]] Yellow Dog Linux라는 배포판이 있는데 이는 페도라에서 파생되어 나온 물건이다. 다만 PS3에서 데스크탑용 리눅스처럼 쓰려면 PS2와 마찬가지로 싹 밀고 다시 깔아줘야 하는데 가끔씩 이 짓을 정말로 저지르는 용자들이 꽤 있다. 다만, PS3 초기형에서만 가능하며, 2010년 펌웨어 버전 3.21이 넘어가면서 리눅스 지원을 중단하였다.[* 이전에도 PS3 크랙 시도가 있긴 있었으나 이 사건을 빌미로 PS3 보안이 완전히 붕괴되었다고 봐야 한다. 해커들로서는 뭐가 오픈되었던 것이 다시 사라지는 것을 해킹의 대의명분으로 쓰기 참 좋기 때문. 참고로 이전에 PSN 해킹 대란이 원인이라 되어 있었는데, 이건 2011년 일이다.] 한때 미 공군 연구소에서 영상분석용으로 1,760대의 플레이스테이션 3를 병렬로 연결하여 슈퍼컴퓨터를 구성한 적이 있는데, 이때 사용된 플레이스테이션 3가 리눅스를 탑재한 물건들이었다.[* 한때 전세계 33위, 미 국방부의 실시간 조작이 가능한 컴퓨터 중에서는 1위의 성능을 가진 물건이었다고 한다.]

구형 엑스박스도 CPU로 펜티엄 3를 사용하고 주요 하드웨어 구성이 PC랑 별 차이 없기 때문에 비교적 쉽게 리눅스를 설치 할 수 있다. 약간의 꼼수만 쓰면 모드칩같은 것을 사용하지 않아도 가능하다. 이렇게 리눅스를 설치하여 미디어 플레이어로 쓰거나 서버로 돌리는 사람도 있다. XBMC라는 강력한 미디어 플랫폼이 이 Xbox를 미디어 센터로 사용하려는데서 출발한 것이다. 요즘은 스틱 PC에 리눅스가 설치되어 홈미디어 플레이어로 활용이 되고 있다.

중독성[편집]

윈도우즈 OS를 중급이상 사용 가능한 사용자라면 리눅스 역시 1개월 정도 학습하면 쉽게 접근가능하다. 특히, 리눅스 설치방법 및 최적화 과정이 윈도우즈 사용자에게 가장 어려운 부분인데, '7.2 데스크탑 및 노트북 용도'란 등에 최적화 개요에 대해 설명되어 있으니 참고 바란다. 리눅스 구조, 데스크탑 GUI 환경, 쉘 사용법 등등은 MS 윈도우즈 내부 구조를 잘아는 사용자라면 같은 컴퓨터 OS인 리눅스 역시 어려울게 없다. 처음 익숙해지기까지의 과정만 거치고 나면 오피스/비지니스/게임용 뿐만아니라 상업용을 위한 프로용 도구가 된다.

프로그래머를 위한 플랫폼이기도 하다. 리눅스와 CLI 환경 자체가 간단한 프로그래밍 언어를 이용해서 처리할 수 있는 수많은 과제들을 제공해주는 소스다. 그래서 이들은 GUI에서 간단히 클릭으로 끝낼 수 있는데도 CLI 셸을 통해서 명령을 내려야 직성이 풀리고 한번 명령 내리는 것으로 끝나는 것들도 굳이 셸 스크립트 혹은 다른 프로그래밍 언어를 이용해서 만든다. GUI 어플리케이션 프로그램을 하나 만들려면 사용될 프로그램 언어와 UX를 위한 비주얼 빌더 사용법 및 GUI 라이브러리 사용법까지 배워야 하지만, CLI 환경에서는 프로그램밍 언어 만으로 커맨드 라인 앱이나 백엔드 앱을 작성하는것이 가능하다. CLI 명령 중 하나인 wc나 cat, cp 등의 간략화 버전 같은 것은 C언어를 배운지 얼마 안된 사람도 금방 쫓아할 수 있고 소스 코드도 공개되어 있으므로 자신만의 개량형 버전을 만들어 사용하는 것도 쉽다. 게임 관련해서도 CLI 환경이 훨씬 만들기 쉽기 때문에 로그라이크 게임들이 많이 돌아다닌다. 디아블로에 지대한 영향을 주고, 리니지가 대놓고 갖다 베낀 넷핵이 이쪽에서 유명 게임 중 하나. 몇몇 프로그램은 아예 소스 코드 자체를 세팅 파일로 활용한다.(dwm(C), xmonad(Haskell), ranger(Python) 등) 물론, 엄청난 시간을 잡아먹는다. 리눅스 입문하는 노래도 있다.[[9]]

라이선스[편집]

리눅스 OS 커널 소스코드에 GPL 라이선스를 채택하고 있다. GNU GPL(General Public License), '소스공개 및 자유로운 사용을 원칙으로 하는' 라이선스에 의해 리눅스 커널 소프트웨어가 배포된다. GPL은 무료 또는 유료로 판매/배포가 가능하다. GPL 소스코드를 약간 수정하여 재배포/재판매도 가능하다.

'리눅스'라는 이름 자체는 리눅스 재단의 등록상표아다. 원래는 등록상표가 아니었는데 국내를 포함한 여러 나라에서 리눅스를 상표로 출원하여 언죽번죽 로열티나 사용 불가를 주장하는 경우가 있는것을 방지하기 위해 등록했다. 참고로, 배포판에 리눅스라는 이름을 사용할 수는 없는것인데 그런것들은 다 무효로 판결 되었다. 리눅스 민트, 젠투 리눅스 등 리눅스라는 이름을 붙인 벤더가 있다.

항상 무료는 아니다[편집]

리눅스, 특히 상업용 서버나 기타 비지니스용 소프트웨어를 사용하다가 어떠한 문제가 생기면 업무에 차질을 일으킬수 있는 경우가 있는데 소프트웨어는 무료로 제공하면서 기술 지원 서비스등을 선택사항으로 유료로 하는 비지니스 모델을 취하고 있는 경우도 있다.

그래서 기업에서는 비용을 지불하고 기술지원을 받는 경우도 있다. 예를 들면 우분투를 배포하는 캐노니컬 같은 경우에는 기술 지원 라이선스 계약을 통해 수익을 얻고 있으며(물론 막강한 후원자가 있기는 하지만), 비용은 평일 업무시간만 지원을 받는 계약일 경우 1년에 250달러, 1년 내내 시간과 날짜에 관계없이 지원을 받는 계약은 1년에 900달러. 서버일 경우 각각 750달러, 2750달러이다. 유명한 레드햇의 경우 RHEL(Red Hat Enterprise Linux)라는 이름으로 솔루션 및 기업 서포트까지 제공하는 유료 프로그램을 판매하고 있다.

유료 기술지원을 받는 것은 선택사항이다. GPL 소프트웨어 라이선스로 배포되고 있는 유료 'Red Hat 엔터프라이즈' 패키지 구성을 이름이나 로고 같은 상표권이 있는 부분만 다른것으로 리브랜딩 하고 기술지원 옵션없이 무료로 동일한 소프트웨어를 재배포하는 CentOS라는 리눅스도 있다.

RHEL과 같은 상용프로그램들은 공급자쪽에서 직접 서포트를 제공하지만 대부분의 리눅스 벤더는 각자의 커뮤니티쪽에서 서포트를 관리하고 있다. 시간과 비용이 코스트인 기업에서는 이런 기술지원이 필수다.[* 엔터프라이즈용 유료 프로그램 경우 소프트웨어 비용에 기술지원등이 포함됨을 의미한다.]

자유소프트웨어 재단에서 말하는 자유는 free beer(공짜 맥주) 할 때의 free가 아니라, freedom(자유)의 free이다. free software는 자유 소프트웨어로 해석된다. "소프트웨어를 자유롭게 사용, 변경, 연구, 배포할 권리"를 뜻한다. 리눅스 OS 커널 소스코드가 GPL 자유 소트프웨어에 해당된다.

오픈소스 소프웨어 진영에서는 GPL, AGPL, LGPL, MPL, MIT, Apache, BSD등의 다양한 소프트웨어 라이선스를 취하고 있는 경우가 많은데 GPL 및 AGPL 경우 소스코드 배포 의무도 있다. 오픈소스 프로그램도 역시 소프트웨어로 저작권법에 의해 보호받는다. 리눅스 커널 OS 소스 코드 라이선스에 GPL을 채택하고 있다.

리눅스 커널이 GPL 라이센스로 배포되고 있기 때문에 리눅스 상에서 동작하는 모든 소프트웨어도 GPL이여야 한다라는 주장을 하는 경우가 있는데 이는 사실이 아니고, 리눅스의 경우 GPL은 커널 소프트웨어에 한정되어 있고 그 위에서 동작하는 유저랜드 소프트웨어가 리눅스 커널의 API를 콜하여 사용하는 것으로는 GPL의 파생워크(derivative work)에 해당 되지 않기 때문에 GPL과 무관한 소스코드 비공개 상용 소프트웨어를 제작/배포 하는것도 가능하다.[[10]] GPL 소프트웨어 커널과 다른 소프트웨어 간의 커뮤니케이션으로는 GPL 파생워크에 해당하지 않는 다는 이야기다.

다만, GPL 리눅스 커널 API 통신과는 별개로, 앱을 다른 GPL 소스코드를 사용하여 컴파일 한후 유료 또는 무료로 판매/배포하는 경우 GPL 파생 저작물 조항에 해당되어 소스코드까지 제공하여야 한다. 참고로, 리버스 엔지니어링에 의한 [디자인] 등등의 방법으로 GPL의 파생 저작물 조항을 회피하는 방법도 있다. 참고로, GPL이 배포/유통된 소프트웨어에 한한 라이선스라 웹 서버에서 사용될시 소스코드 공개 의무가 없어져 버리기 때문에 그것을 커버하기 위해 등장한 AGPL이라는 것도 있다. AGPL로 라이선스되는 소프트웨어를 웹 서버 등에서 사용시 AGPL 및 그 파생워크 소스코드도 제공 되어야 한다.

어플리케이션 앱에서 LGPL 소스 코드를 다이나믹 링크하여 사용하면 소스코드를 공개할 필요가 없다. MPL 경우 스태틱 링크까지도 허용되며 역시 소스코드 공개의무가 없다. Apache, MIT, BSD 등의 라이선스도 소스코드 제공 의무가 없는 보다 허용적인 소프트웨어 라이선스이다.

보안[편집]

리눅스 환경은 슈퍼유져, 일반유져, 그룹등으로 파일 관리가 되고 있어 윈도우즈등 타 OS에 비해 안전한 환경이다. 더욱이 리눅스 배포자가 분산되어 있고 악성코드가 주로 MS 윈도우즈를 타겟으로 하고 있기 때문이다. 벤더별 리눅스 시큐러티 관련한 업데이트시 재부팅이 거의 없는 것도 특징이다. 리눅스를 사용하는 유저들 대부분이 컴퓨터에 대해 잘 아는 사람들이라 호락호락하게 당해 주지 않는다. 그렇다 보니 해커들은 리눅스 보다는 윈도우즈를 타겟으로 한 바이러스를 많이 만들고 있다.

리눅스 역시 관리를 잘못하여 root 권한이 오픈된채 사용되는 경우 보안 허점도 있으니 아예 맘 놓지는 말 것. 루트 사용자 관리를 잘못하면 보안 관련한 사고가 생길수 있다. 유명 배포판인 리눅스 민트의 홈페이지가 해킹 당해서 조작된 ISO 파일이 등록되는 사건도 있었다.[* [[11]] ][* [[12]]] 그러므로 리눅스 배포판 ISO를 다운받고 해시값까지 확인하는 것이 좋다.[* 이 사건의 여파가 상당이 컸는지 요즘 나오는 배포판들은 대부분 해시값을 확인하라고 하며 아치 리눅스같이 자체적으로 해시값이 일치하는지 확인하는 프로그램도 깔려있는 경우도 많다.]

리눅스건 윈도우즈건 간에 바이러스 멀웨어는 시스템을 느리게 만든다거나 파괴하는 종류보단 은근 슬쩍 정보를 수집해서 크래커에게 보내는 스파이웨어나 백도어 종류가 많다. 루트 사용자 권한을 오픈한채 멀웨어가 설치되면 해커가 지정한 곳으로 패킷이 보내진다든지 중요 파일이 전송될수 있다. 따라서 믿을 수 있는 저장소에서만 프로그램을 받도록 하고, 굳이 제3자 저장소를 이용해야 한다면 안티멀웨어 프로그램으로 스캔을 해주거나 방화벽(GuFw)을 사용하면 해결된다.

Wine은 샌드박스 환경이 아니기 때문에 무조건 방심하면 안된다. 워너크라이의 경우 시스템 파일은 건들지 못했지만 루트권한을 노출한채 멀웨어가 설치되면 동일하게 Wine과 연결된 home 폴더는 여전히 [전력이 있다.] 마찬가지로 믿을 수 없는 프로그램은 돌리지 말고 굳이 돌려야한다면 가상머신을 쓰든가 아니면 Docker같은 프로그램으로 격리시키는게 좋다. Z 드라이브를 제거하거나 Desktop Integration을 끄거나 안티-멀웨어 프로그램으로 스캔 및 방화벽(GuFw)으로 관리하면된다.

루트(수퍼유져) 퍼미션이 오픈된채 사용하지 말고 불량 사이트로 부터 리눅스 전용 멀웨어를 내려받지 않는 이상 리눅스에서 상기와 같은 문제가 생길일은 없다. 방화벽(GuFw) / 안티-멀웨어 유틸 / 백업 유틸 등을 사용하면 해결된다. 참고로 보안에 취약한것은 MS 윈도우즈가 더 심하며, 윈도우즈 7같은 OS 경우 미국 NSA로 부터 보안문제로 사용 중지 권고를 받고 있는 상태다.

GUI 환경[편집]

[include(틀:리눅스 GUI환경 )] Microsoft Windows 운영체제나 Apple macOS 같은 운영체제에서는 GUI환경이 시스템에 포함되어 있지만, 리눅스에서는 GUI환경이 별도의 프로그램으로 작동한다. 즉, 리눅스 재단에 의해 만들어지는 것이 아닌, 별개의 프로젝트로 관리된다. 여기서 나오는 장점은 사용자가 원하는 GUI환경을 설치해서 마음껏 커스터마이징 할 수 있다는 것이고, 리눅스 환경에서 여러 GUI 벤더들이 있기 때문에 사용자에게 리눅스가 친숙하게 다가갈수 있는것이다.

유닉스와 같이 리눅스는 Windows나 Mac보다 훨씬 융통성이 있고 보안에도 좋은 OS이다. 리눅스 커널과 별개로 다수의 GUI 프로젝트들이 경쟁하는 구도라 사용자 입장에서 선택의 자유도도 Windows나 Mac보다 훨씬 높다.

GUI가 어떻게 구성되는지의 관점에서 리눅스의 구조를 간략히 살펴보면, 하드웨어와 소프트웨어 간의 통신을 관리해 주는 커널 위에, 커널과 창, 그리고 창과 창 사이의 통신을 관리해 주는 윈도우 시스템이 존재한다. 윈도우 시스템 위에는 사람의 입력에 각각의 창이 어떻게 반응할지를 정해 주는 윈도우 매니저와, Microsoft Windows의 작업 표시줄에 해당하며 윈도우 매니저의 기능을 보조적으로 돕는 패널 등의 프로그램이 있다. 그 위로는 본격적으로 작업을 수행하게 되는 오피스 프로그램, 웹 브라우저, 파일 브라우저 등등의 프로그램이 있게 된다. 커널이 구동된 직후 본격적으로 다른 프로그램들이 구동되기 전, 윈도우 시스템 및 데스크탑 환경(미리 만들어진 KDE나 GNOME과 같은 환경이나, 혹은 사용자가 별도로 구성한 세트)을 시동시켜 주고 사용자 로그인을 관리하는 디스플레이 매니저도 존재한다. 데스크탑 환경이란, 여기서 설명된 프로그램들 중 커널과 윈도우 시스템을 제외한 나머지 모든 프로그램들의 세트로, 사용자 입장에서 컴퓨터를 사용하는 데 있어 일관된 경험을 제공하기 위한 목적으로 만들어진다.

윈도우 시스템[편집]

Window System. 디스플레이 서버 (Display Server) 라고도 한다. 여기서 말하는 윈도우란, 마소의 운영체제인 윈도우즈가 아닌 GUI에서 말하는 프로그램 '창'을 말하는 것이다.[* MS 윈도우즈 이름의 유래도 GUI 프로그램의 창에서 따온것이다.]

X11[편집]

리눅스의 윈도우시스템/디스플레이서버는 1980년대 부터 현재까지 개량되어온 X11 (X Window)가 기본이다.

Wayland[편집]

리눅스 커널에서 최신 그래픽스 칩셋을 지원하는 기술들이 필요하여 X11과 중복되는 부분이 많아졌기에 이 부분을 모던화 하기 위해 시작한 프로젝트. 2008년부터 시작되었으며, 2012년에 버전 1.0이 나왔다. 초기에는 하드웨어 호환성과 안정화 문제도 있고 해서 사용이 많지 않았으나, GNOME의 디폴트가 Wayland가 되면서 GNOME을 채택하고 있는 페도라, 데비안 등 배포판도 (우분투가 예외) 사용하고 있다. X11가 원격 접속에 특화되어 있다면, Wayland는 하드웨어 가속같이 일반 유저에게 중요한 기능에 특화되어 있다.[* 하드웨어 가속은 X11도 지원하지만 로레벨 코딩이 어렵고 난이도에 비해 얻는 성능 효율이 나쁘다. 파이어폭스의 경우 X11은 동영상 하드웨어 가속이 있으나 마나 성능이 비슷하다고 판단해 Wayland에서만 하드웨어 가속을 지원하도록 코드가 수정되고 있다. 반면 VNC같은 원격 GUI 접속은 Wayland가 밀리는데, X11은 TigerVNC, X11vnc, X2go 등 여러가지 프로토콜을 지원하나 Wayland은 ogon, gnome-remote-desktop, krfb, waypipe 등 다양한 시도가 있지만 특정 데스크톱 환경에 종속되어 있거나 X11 세션에만 접속할 수 있는 제한이 있다.]

메이저 배포판인 우분투가 Mir를 만들어 경쟁을 하기도 했으나 프로젝트가 좌초하고, 우분투 17.10에 Wayland가 정식 채택되었다. 하지만 그 다음 LTS버전인 18.04에서는 X11로 복귀 했으며, 20.04에서는 X11과 Wayland를 설정 파일을 통해 선택가능하다.

엔비디아AMD인텔과는 달리 Wayland가 사용하는 GBM[[13]]을 거부하고 독자 기술인 EGLStream을 통해 Wayland API를 제공한다.

윈도우 매니저[편집]

창 관리자라고도 한다. 자세한 내용은 윈도우 매니저 항목으로.

메모장과 파이어폭스에서 Alt+TAB, Win+D 등으로 창을 전환하는 경우를 생각해보자. 작업 전환(Alt+TAB), 창의 크기/위치 변경, 다른 가상 작업공간(바탕화면)으로 이동, 창 숨김/최대화, 프로그램 종료 등의 프로그램 창(Window) 제어에 해당하는 일체의 동작은 별도의 프로그램에서 처리되도록 해두었는데 이것이 바로 창 관리자다. 그래서 창 관리자는 X 클라이언트이면서도 X 서버와 다른 X 클라이언트들 사이에서 인터페이스로 작동하는 특권을 갖는다.

OMUSIKY.png 또한 창 관리자는 창의 제목 표시줄, 버튼, 테두리 장식 표현도 담당하며(X 윈도에서 특정하게 지정해놓지 않았기에 가능한 일이다) 저마다 고유한 외형을 갖는다. 그래서 창 관리자를 바꾸면 마치 옷을 갈아 입듯 전혀 다른 인터페이스로 모습이 바뀌는 걸 볼 수 있다. 이것은 X 윈도의 구조가 객체지향 구조기 때문에 가능한 것이다. OS X, 윈도우즈, 넥스트스텝을 닮은 것 외에 다양한 스타일의 외형을 제공하기에 리눅스를 쓰면서 입맛에 맞는 창 관리자를 주 GUI로 채택하는 일도 큰 장점이자 재미있는 일이다. 2008년 전후로 한때 Compiz라는 창 관리자가 다양한 종류의 화려한 효과를 지원하여 리눅스로 사람들을 끌어들일 정도까지의 인기를 끈적이 있었다.

width=420px 만약 X 서버만 띄어둔 채로 X 클라이언트를 실행하면 위 그림처럼 창 테두리가 없는 채로 실행되며 창 제어 역시 불가능하다. 다만 리눅스에서 일반적으로 X 윈도를 실행하면 창 관리자나 데스크톱 환경까지 같이 실행을 하게 되므로 일부러 창 관리자 프로세스를 종료하지 않는 한 이러한 화면을 보게 될 일은 없다.

디스플레이 매니저[편집]

width=640px Display Manager (DM)

스크린샷에서 보이듯이 데스크톱 환경을 고를 수 있는데, 저기서 GNOME on Wayland 말고 그냥 GNOME은 X11을 말한다. GNOME Classic은 일반 GNOME에 조금 더 클래식하게 보이는 확장기능을 이용한 모드.

윈도우 매니저를 상술해놓고 디스플레이 매니저는 뭔가 싶지만, 그냥 로그인 화면이라고 생각하면 편하다. 이 화면에서 원하는 유저로 로그인 할 수 있다. 로그인 화면인데 디스플레이 매니저라고 불리는 이유는, 로그인 하면서 관련 윈도우 시스템과 데스크톱 환경을 초기화해서 실행시키기 때문. 스크린샷에 보이는 것처럼 원하는 데스트톱 환경을 고를 수 있게 만들 수 있다.

GNOME 진영의 GDM, KDE진영의 SDDM, 크로스 데스크탑 환경을 지원을 목표로 하는 freedesktop.org의 LightDM등이 있다.

SDDM은 KDE에 잘어울리는 디스플레이 매니저로 KDE에서 디폴트로 사용된다. KDE 데스크탑 환경은 GNOME 데스크탑 환경과 함께 양대 산맥이며 조금 무거운 감이 있지만 다양한 구성을 통해 윈도우즈7 스타일의 사용자 인터페이스를 제공한다.

데스크톱 환경[편집]

Desktop Environment (DE)

GUI 시스템 구성요소인 윈도우 시스템, 윈도우 매니저, 디스플래이 매니저, GUI 툴킷, 자주쓰는 어플리케이션 등을 일관된 사용자경험을 위해 하나로 묶어놓은 환경이라고 보면 된다.

GNOME을 예로 들어보면, Gtk 툴킷으로 GIMP를 만들다 이왕 만든 김에 같은 툴킷으로 계산기를 만들고 메모장을 만들고 탐색기를 만들고 웹브라우저를 만들고 음악 재생기를 만들면 모두 같은 모양의 유저 인터페이스를 띄게 될 것이다. 내친 김에 창 관리자도 만들고(이건 툴킷으로 만드는 건 아님), 작업 표시줄도 만들고 시작 메뉴도 만들고 바탕 화면 기능도 지원해서 아이콘을 깔아 드래그-앤-드롭을 하게 하고 아이콘 테마와 커서 테마, 월페이퍼까지 끼워준 다음에 제어판 비슷한 걸로 이 모든 것들의 설정과 다양한 시스템 설정도 건드릴 수 있게 해놓았다면, 이 일관되게 통합되어 프로세스간 정보 교환이 가능한 GUI 집합체가 바로 데스크톱 환경이라고 할 수 있다. 데스크톱 환경은 리눅스(+유닉스) 유저들이 더 쉽고 편리한 GUI를 사용하려는 의도에서 출발하였다.

윈도우즈나 OS X의 데스크톱 환경은 구성 요소가 고정되어 있어 쉘을 제외하곤 변경이 불가능하다. 이에 비해 리눅스의 데스크톱 환경은 모듈화가 잘 이루어져 있기때문에 GUI시스템 구성요소를 자유자재로 변경이 가능하며 GNOME의 파일 탐색기로 KDEKonqueror 쓰기나[* 다만 이러한 경우 두 가지 라이브러리가 모두 로딩되어 메모리 사용율이 훌쩍 올라간다(...)] KDE에서 GTK 기반인 Firefox 실행하기는 애교에 불과하며 마개조에 가까운 시도를 하는 경우도 종종 목격된다. LXDE 데스크톱 환경이 창 관리자를 별도로 구성하는 대신 기존에 별도 프로젝트로 존재하던 Openbox를 창 관리자로 채택했는데 이것도 비슷한 사례에 해당한다고 볼 수 있다.

리눅스에서는 리눅스 커널과는 별개로 데스크탑 환경이 일종의 '앱'으로 볼수 있다. 윈도우즈로 따지면 MS-DOS CLI에 윈도우 3.1 그래픽 유져인터페이스를 따로 설치해서 쓰던 방식과 유사하다고도 할수 있다.

여러 종류의 GUI시스템 데스크탑 환경이 있어 사용자가 선택하여 바꿔쓸 수도 있다. 인기있는 데스크탑 환경으로는 GNOME, KDE, Xfce, LXDE등이 있으며, 이중에서 맥의 UI 와 비슷한 철학을 갖는 GNOME이 가장 인기가 많고 그 다음으로 윈도우의 UI와 철학을 공유하는 KDE가 있다. 이외에도 데스크탑 환경 없이 달랑 윈도우 매니저와 자신이 사용할 프로그램만 선별적으로 인스톨하여 사용할수도 있고, 올드스쿨러의 경우에는 그냥 CLI 환경만으로 사용하는 것도 가능하다. 알고 보면 그 안에서 무궁무진한 선택지가 존재한다. 다만, 저런 선택지를 어느정도 알고 욕구에 맞게 선택할 수 있게 되기까지는 약간의 학습이 필요하다.

리눅스의 인터페이스 종류가 많아서 결과를 특정 지을 수도 없기 때문에 설치가 쉽고 학습이 용이한 인터페이스가 좋다. 빨리 익숙해진다고 해서 꼭 사용하기가 편한 것도 아니다. 무엇보다 운영체제는 그 자체가 목적이 아니라 그 위에 응용 소프트웨어를 돌리기 위한 도구다.

UI / UX 툴킷[편집]

프로그램을 디자인하면서 유져 인터페이스 UI를 구성하기 위해 사용하는 프로그래밍 툴로, SDK 또는 GUI 프로그래밍 라이브러리 라고도 한다. 리눅스를 지원하는 대표적인 UI/UX 툴킷으로는 GTK[* GTK+에서 GTK로 명칭이 변경되었다. 무료이며 GTK 라이브러리 소스코드 라이선스도 LGPL로 앱 소스코드 공개의무가 없다.], Flutter, .NET MAUI, Uno Platform, wxWidgets, Qt[* 오픈소스 앱에 적합. 앱을 클로즈드 소스로 판매/배포 하려면 구독형태의 상업용 라이센스를 구입하여야한다. 가격은 연간 $3,950이고 UI 빌더 툴도 별도로 연간 $999이 추가된다. 공식 기술지원이 없는 커뮤니티 라이센스의 경우 무료로 사용가능하나 GPL 라이센스로 빌드했거나 Qt Charts등과 같은 GPL로 배포되는 모듈을 사용하는 경우 앱 소스코드를 공개해야 한다, 앱 소스코드 공개없이 사용하려면 유료 라이센스를 구입해야 하거나 LGPL 로 빌드하고 GPL에 해당되는 모듈을 쓰면 안 된다.] 등등이 있다. 각 툴킷별로 UI를 그래픽 툴처럼 작성할수 있는 별도의 비주얼 빌더도 있다. 상식적인 것이지만, UI/UX 비주얼 빌더 소프트웨어 소스코드가 GPL이라고 해서 거기서 추출된 XML등의 코드가 GPL을 따를 필요는 없다. 즉, XML을 하이드도 가능하다. UI/UX 툴킷 GUI 프로그래밍 라이브러리가 LGPL, MIT, Apache, BSD 등등일 경우 앱 소스코드 공개/배포도 불필요하다.

GUI 어플리케이션 또는 프론트엔드 디자인을 위해 필수적으로 공부해야 하는 분야이다.

특정 툴킷으로 디자인된 프로그램이 작동하기 위해서는 앱 패키지 설치시 관련된 라이브러리가 설치되고 디펜던시로 딸려오는 패키지도 있다. 이들이 프로그램의 실행과 함께 로딩되어야 한다. 테마를 커스텀도 가능하고 원하는 테마를 선택 적용 가능한 장점도 있다. 상품화된 무료 및 유료 UI/UX 디자인 테마 패키지가 아주 풍부하다. 하나의 리눅스 벤더나 하나의 DE에서는 제공되는 프로그램들을 하나의 툴킷으로 통일하여 제공하거나 앱 별로 개별 툴킷 사용 및 개별 테마도 적용가능하다.

GNOME DE의 앱은 GTK 라이브러리가 사용되며 KDE경우 Qt로 제작되는 프로그램이 많고 이름이 K로 시작되는 경우가 있다.

원격 접속[편집]

CLI 또는 GUI로 원격접속이 가능하다. CLI 환경을 사용하기 위해 SSH를 사용한다. Xorg를 사용할 경우 SSH로도 제한적인 GUI 원격 접속이 가능하지만, 팀뷰어같은 통상적인 원격 프로그램과는 작동 방식이 상당히 다르기 때문에[* X11 포워딩(fowarding)이라고 한다. 팀뷰어나 VNC를 프로그램들은 호스트의 세션 자체를 지속적으로 캡처해서 보내는 반면 X11 포워딩은 한 가지 프로그램만 실행시킬 수 있다. 또한 대역폭을 상당히 갉아먹어 속도가 느리기 때문에 동영상 재생, 웹 브라우징 혹은 게이밍 용도로는 추천되지 않는다. NX같은 프로토콜을 사용할 경우 훨씬 더 빠른 원격 접속이 가능하다.] 일반적인 사용자들은 사용할 이유가 없고, 대부분은 VNC를 사용한다.

VNC를 사용하여 GUI 환경으로 원격접속이 가능하다. 다른 리눅스는 물론이고 윈도우즈, macOS, 안드로이드로도 원격 접속이 가능하다. 참고로 윈도우즈에서는 원격 데스크톱 프로토콜로 VNC가 아닌 RDP를 사용한다. VNC 프로토콜로 접속 가능한 윈도우용 클라이언트도 있고, 역으로 VNC를 RDP로 변환해서 윈도우의 원격 데스크톱 연결로 접속가능하게 만드는 XRDP라는 프로그램도 있다. VNC는 화면을 그대로 전송하는 방식인 반면 RDP는 화면 구성요소를 전송한 뒤 클라이언트에서 적절히 짜맞추는 방식이다.

맥의 경우 Finder의 서버에 연결하기 기능으로 VNC 연결이 자체적으로 가능하다. Windows에서 자주 쓰이는 TeamViewer도 리눅스용이 있다. 윈도용 팀뷰어를 Wine에 결합시켜 패키지 형태로 내놓은 것이다.

사용자 입장에서[편집]

리눅스를 공부하고 사용해야 하는 이유는 무엇인가?[편집]

* 오피스, 그래픽, 캐드, 멀티미디어, 게임, 유틸리티등 윈도우즈를 완전히 대체가능한 프로그램이 2010년 중반이후 늘고 있다. 윈도우즈보다 리눅스 환경에서 성능이 높으며 첨단 반도체사가 리눅스 커널에 직접 참여하여 최신 디바이스 드라이버를 제공하고 있다.
* 서버, 클라우드, 웹서버, VM, 임베디드, 프로그래밍 등등 IT 프로가 되고자 한다면 리눅스를 반드시 배워야 한다.
* 불법 소프트웨어가 설치된 컴퓨터를 리눅스 환경으로 교체하여 재활용 가능하다.
* 기관, 기업 등에서 비용 절감이 가능하다. 유럽 각국에서는 공공기관에서 MS 윈도우즈를 퇴출 시키고 있는 국가가 많다. 이들은 자체적으로 문제 해결이 가능하고 주로 제한된 업무만을 수행하는 환경이기 때문에 리눅스로 충분히 대체가능하다. 많은 사람이 이용할 만한 프로그램은 거의다 있고, 자신들이 필요한 프로그램을 직접 만드는 경우도 많은데 이 경우 리눅스가 오히려 장점이다. 그리고 이들이 불법복제 MS 윈도우즈를 쓰다 잡히면 상당한 법적 책임을 안게 되기 때문에 리눅스가 비용 절감의 해결책이다.

데스크탑/노트북 용도 및 리눅스 최적화 개요[편집]

리눅스 처음 설치시 nomodeset으로 일시적으로 셋팅후 설치하여야 설치시 문제가 없다. 설치후 한글/한자 전환키는 /usr/share/X11/xkb/symbols/kr 설정파일에 KR104등으로 디폴트값을 위치시키면 간단힌 해결된다. 터치패드 튜닝은 xserver-xorg-input-libinput, 마우스 튜닝은 xserver-xorg-input-evdev 드라이버 패키지를 설치한후 /usr/share/X11/xorg.conf.d 디렉토리의 libinput관련한 .conf 파일에서 pointer 섹션의 드라이버를 libinput에서 evdev로 수정하면 세부적인 마우스 가속도 프로파일을 선택가능하다. 그후 xinput으로 튜닝하여 오토런 또는 언급한 .conf 파일에 파라메터를 지정하여 셋팅 가능하다. 마우스 및 터치패드 동시 사용시 마우스 스크롤 폭 조절은 imwheel 보다는 xbindkeys와 xdotool 패키지설치후 ~/.xbindkeysrc 파일에서 튜닝하면 된다. imwheel 경우 마우스와 터치패드 동시 사용시 간섭이 있기 때문에 마우스 단독 사용시의 마우스 스크롤폭 조절에 적합하다.

HiDPI 설정시 GNOME 셋팅에서 넌-프랙셔널 1:1(100%)로 한후 GNOME Tweaks에서 개별 폰트크기 설정 및 스케일링 팩터로 최적화하여야 그래픽 성능저하 문제가 없다. GNOME 셋팅에서 글로벌한 프랙셔널(1.25,1.5,1.75) 스케일링을 지정하거나 넌-프랙셔널 1:2(200%)로 지정후 xrandr 커맨드로 다운스케일하는 경우 그래픽 성능 저하문제가 있을수 있다. 참고로 wxWidgets 3.0.x로 컴파일된 리눅스 GTK 앱중 일부분에서 HiDPI를 제대로 지원하지 않는 경우가 있으데 wxWidgets 3.1+버젼으로 컴파일되어야 HiDPI를 완벽히 지원한다. GTK 앱 경우 실행파일에 스케일과 관련된 환경값을 지정도 가능하다. Qt 앱 경우 오토 스케일 디텍트 기능이 있고 역시 실행 파일이나 설정파일에 환경값 지정가능하다. LCD 감마값등의 화면설정은 xgamma나 xrandr로 튜닝가능하다. 무선랜 드라이버 설치도 자동으로 된다. 주파수 설정시 bssid로 해결가능하다. 배터리로 구동되는 노트북 PC경우 TLP 패키지 등을 사용하여 각종 배터리 절전 모드도 설정가능하다.

리눅스 설치후 사용시 리커버리 모드로 부팅하여 문제해결도 가능하며, 리눅스 설치용 ISO USB 부팅 디스크에는 스탠드얼론 리눅스 GUI 운영체제도 올려져 있기 때문에 설치후 문제시 역시 각종 리커버리를 위해서도 활용가능하다. CLI(Terminal/Console) 컨맨드나 DE로 설정하면 여러 문제가 해결된다. 프로그램 설치 역시 커맨드 쉘에 한 줄 넣거나 버튼만 몇 번 누르면 끝나는 것이 대다수이다. 참고로 리눅스를 기반으로 하고 있는 안드로이드 역시 위와 같이 각 OEM 제조사가 최적화를 한 경우이다.

실사용자 입장에서 윈도우즈의 MS 오피스 프로그램 역시 리눅스의 리브레 오피스로 대체 가능하다. 각종 기관에서 MS 오피스 문서가 사용되고 있으나 리브레 오피스에서 MS 오피스 파일 포맷으로 저장도 지원하기 때문에 아무 문제가 없다. MS 오피스는 윈도우에서만 돌아간다는것과 아래아 한글도 리눅스판을 만들지 못하고 있는것도 문제다. 더욱이 PDF가 문서 표준이라 리브레 오피스에서 PDF로 출력하면 된다. PDF-XChange Viewer 프로그램을 리눅스 와인에서 최적화하여 PDF 뷰어 및 기본편집 툴로 사용가능하다. 리브레 오피스 Draw 프로그램에서도 PDF 편집이 가능하다.

인터넷 정도의 간단한 작업만 하는 사용자라면 더더욱 리눅스를 한두달 정도 배워 윈도우즈를 극복가능하다. 서버 시장에서도 리눅스가 대세이고 데스크탑 및 랩탑 PC에서도 리눅스를 사용하는 경우가 늘고 있다.

Wine 프로그램도 있고 게임, 뱅킹, 쇼핑등 공인인증서 역시 윈도우즈의 ActiveX가 폐기 되었다. 윈도우즈 사용자도 듀얼 부팅이나 버추얼 머신으로 윈도우즈와 리눅스를 동시 사용도 가능하다. 2020년 현재 각종 기관, 은행, 쇼핑몰등 모두 MS 윈도우즈에서 탈출 가능한 상황이다.

USB HDTV 카드등 멀티미디어 기기도 리눅스 드라이버를 제공하고 있으며 무선 랜카드 등의 디바이스 드라이버도 각 반도체사에서 리눅스 커널에 직접 참여하여 커널 자체에 포함시키고 있어 별도 드라이버 설치 없이도 자동으로 사용가능하다.

사용자가 많은 배포판이나 앱은 유져 인터페이스를 비롯하여 한글화가 어느정도 진행되고 있다. 영어나 한글 유져 인터페이스 전환도 OS 셋팅 제어판이나 앱 설정란에서 가능하다. 리눅스 설치후 한글/한자 입력 문제도 오른쪽 Alt키나 오른쪽 Ctrl키를 Alt_R이나 Ctrl_R 키 코드가 아닌 오리지날 Hangul 키나 Hanja 키 코드로 인식되도록 위에서 설명한대로 설정값 하나만 바꾸면 간단히 해결된다.

영어가 장벽이거나 컴맹인 사람들도 배우면 된다. 컴퓨터 자동 해석기, 한영, 영한 컴퓨터 사전, 구글링, 유투브등을 활용하면 모든 해결법이 나온다. 우분투 계열은 한글 키워드로 검색만 해봐도 초심자가 겪는 기초적인 문제는 해결 가능하다.

서버, 임베디드, 모바일(리눅스 커널 안드로이드) 운영체제로서의 입지가 굉장히 탄탄한 데 더해 데스크탑/노트북에서 존재감 역시 2010년 중후반 부터 상승하고 있다. KDE, GNOME 등의 데스크탑 환경들이 지속적으로 발전하여 사용성과 안정성이 꽤 높아진데다가 리눅스 데스크탑용 소프트웨어의 수가 지속적으로 늘고 있으며, 게임 회사 밸브에서 리눅스 기반의 게임 특화 운영체제 SteamOS 및 디스트리뷰션 앱 Steam을 출시하면서 리눅스에서 최신 게임을 플레이 가능하게 되었다.

서버 용도[편집]

홈서버든 상업용 서버든 점유율이 윈도우보다 훨씬 높다.

서버 쪽에서 리눅스의 위상은 엄청나다. 무료인데다가, 오픈 소스고, 리눅스에 익숙한 인력도 많고, 안정성도 높은 편이니 서버 운영체제로서는 최적인 셈이다. 서버용 프로그램들 대부분이 리눅스를 지원하거나, 리눅스 상에서 개발되고 있다. 요즘에는 윈도우스 서버도 성능이 어느정도 높아져서 점유율이 약간 늘었지만 클로즈드 소스에다 가격도 비싸고 서버 시장에서 비주류인지라 여전히 리눅스 서버에 비할 바는 되지 못한다.

웬만한 IT에 관심있는 사람들은 홈서버를 돌리는 비중이 꽤 되는 편이다. 홈서버 용도로 판매되는 상당수의 NAS나 공유기들 역시 리눅스 혹은 BSD 운영체제를 올려서 사용중이며, 좀더 고급기능을 원하는 유저들은 직접 아톰이나 저전력 CPU를 사용한 컴퓨터를 이용하여 스스로 서버를 설치하기도 한다. 서버용도로 사용하는 경우, 리눅스를 사용함으로서 발생하는 수많은 호환성 관련 문제도 없고, 리눅스에서 지원이 잘 안되는 소위 exotic한 하드웨어 드라이버 관련 문제도 없으며, 세팅한번 해놓으면 그걸로 끝이니 굳이 리눅스라는 새로운 운영체제를 깊이 배워야 한다거나 하는 부담감도 없다.

서버쪽 성능이나 안정성 등은 리눅스가 가장 뛰어나다는 평가를 자주 받는다. G-WAN이라는 웹서버 소프트웨어는 원래 윈도우 서버용으로 개발중이었는데, 윈도우와 리눅스에서 네트워크 성능테스트를 해본 결과 윈도우에서의 성능이 처참할 정도로 밀렸다.[[14]] 그 결과 개발중이던 윈도우 버전을 그냥 버리고 리눅스 쪽으로 옮긴 상태다. 흔히 리눅스의 강점을 공짜라고 생각하는데, 서버 쪽에서는 공짜인 우분투CentOS도 많이 사용하지만 값비싼 RHEL 같은 유료 리눅스도 많이 사용한다. 서버 쪽에서 리눅스를 많이 쓰는 건 단순히 공짜라서로 치부할 일이 아닌 그만한 이유가 있는 것.

ZFS라는 파일시스템은 윈도우의 파일시스템을 그야말로 애들장난으로 만들어 버리는 정도의 고급기능과 안정성 등을 제공한다. 윈도우에서도 서버 2012 에서 ReFS라는 파일시스템을 새로 개발해 도입했지만, 여전히 끝판왕은 ZFS다. 단점은, NAS 수준으로는 돌리기 힘든 사양이다. 메모리를 매우 적극적으로 사용하며, 사양이 올라갈수록 퍼포먼스도 올라가는 스타일이기 때문에, 저전력 iCPU[* i3, i5, i7 등.]에 4기가 이상의 메모리를 확보 후 돌리는 것이 좋다. 참고로, SSD 등을 L2ARC 캐싱 디바이스로 사용이 가능하기 때문에 많은 양의 메모리와 SSD를 달아주면 고가의 하드웨어 레이드 카드 수준의 퍼포먼스도 보여준다. 사실 이 ZFS라는 건 원래 솔라리스용이었고 지금도 정식 포팅된 건 솔라리스와 FreeBSD 정도뿐이다. 리눅스에서는 Sun의 CDDA 라이선스와 자신들의 GPL 라이선스 차이 때문에 커널에서 공식지원하지 않는다. 그래도 fuse로 사용은 얼마든지 가능하고, native로도 포팅하는 프로젝트가 있다. 리눅스에서는 Btrfs를 대신 밀어주고 있는데 아직까지는 시범 단계인 정도.

GUI가 없는 환경은 가벼워서 서버 성능에도 도움이 된다. GUI가 없는 환경은 보안에도 도움이 된다. (반면 윈도의 경우 GUI 부분을 삭제하는 것 자체가 불가능하다.) 그래서 일반 대중은 CLI가 단점이라고 느끼는 사람이 훨씬 많지만 서버 관리자들에게는 오히려 CLI가 장점이라고 느끼는 사람이 훨씬 많다. CLI는 GUI보다 서버관리에 있어서는 효율이 압도적으로 뛰어나다. 특히 기본적으로 Text를 주고 받는 것이기 때문에 이미지를 주고 받은 GUI보다 훨씬 빠르며 느린 인터넷 환경에서도 매우 쾌적히 작업이 가능하다. 특히 관리하는 서버수가 늘어날 경우 GUI보다 정확하고 훨씬 빠른 작업속도를 보장한다. 이러한 전문적인 환경에서는 GUI가 CLI의 효율을 따라잡을 수 없다.

스마트폰 용도[편집]

스마트폰에서 리눅스 앱을 돌릴수 있다. [[15]]와 같은 리눅스 에물레이터 사용시 리눅스 패키지를 설치하고 활용이 가능하다. 예를 들어 SSH 서버 설치, Web server 설치, gcc(clang 임)로 C 소스 컴파일, [구동] 등도 가능하다. 그밖에 안드로이드에서 GUI 환경의 리눅스 앱을 돌리는 방법은 안드로이드 앱 스토어등을 검색해 보면 수많은 관련 앱이 있어 일반인도 쉽게 접근가능한 정도이다.

임베디드 기기 용도[편집]

공유기OpenWRT를 깔아 Python을 돌리는 등의 행동은 MS 윈도우즈 OS를 깔아서는 못 한다.

인터넷 공유기, CCTV 녹화기, UHDTV 기기 등등 가전용 단말기기에 리눅스가 사용된다.

키오스크, 각종 IOT 제어 기기등의 상업용 및 산업용 기기에도 리눅스가 사용된다.

그밖에 각종 임베디드 기기에 사용가능한 리눅스 OS를 사용하는 테블릿, 스마트폰, 보드도 있다.

자동차 인포테인먼트 기기나 테슬라등 전기차에서 또한 리눅스를 쓴다.

게임 용도[편집]

리눅스에서의 게임 플레이 방법은 다양하다. 리눅스를 공식적으로 지원하는 게임의 수량또한 늘고 있다.

첫 번째로, 스팀 게임들이다. 기획단계에서 스팀이 리눅스를 공식 지원하게 되었고, 그에 따라서 밸브 사 자체의 게임은 물론이고 스팀을 플랫폼으로 하는 게임들 중 리눅스로 만들어지는 게임이 대폭적으로 늘었다. (Counter-Strike를 한물 지난 컴퓨터에서 OpenGL로 돌려보자.) 사실, 리눅스 플랫폼 지원강화는 윈도우즈 마켓이 클로즈드 방식으로 변했기 때문이다. 밸브는 윈도우즈를 비난하는 언급을 했으며, 리눅스 플랫폼을 일종의 보험 용도로 인식하여 지원을 강화한다고 발표하였다.[[16]] 또한, 스팀에 Wine의 파생 버전으로 게임실행에 중점을 둔 '프로톤'을 탑재해 윈도우 게임을 리눅스에서도 실행도 가능하다.[[17]]

리눅스를 지원 안 하는 윈도우즈용 게임의 경우에는 KVM/QEMU GPU 패스스루를 사용하면 된다.

두번째로, OpenGL 계열 게임들은 와인을 활용하든 네이티브로 포팅이 되든 DirectX 기반보다는 어떻게든 리눅스에서 사용할 수 있게 될 확률이 높다.

게임사들이 맘먹고 포팅을 한다고 가정한다면, 성능 측면에서는 오히려 리눅스+OpenGL 조합이 윈도우+DirectX 조합을 능가할 가능성도 분명히 존재한다. 실제로, 윈7+DirectX 조합에서 레포데2 270 프레임을 찍었던 컴퓨터에 밸브가 리눅스+OpenGL로 소스엔진을 포팅하여 돌려봤더니 처음에는 6 프레임 나오던 것이 최적화가 진행되니 결국 315 프레임으로 윈도우에 비해 무려 20% 가까이 상승했으며, 이에 힘입어 윈도우에서도 DirectX 대신 OpenGL 조합으로 바꿔봤더니 역시 300 프레임으로 상승했다고 한다. 이미지 퀄리티 등의 문제가 있던 것도 아니었다고 하니, 리눅스 커널이나 OpenGL의 최적화 수준은 게임 측면에서도 윈도우에 뒤지지 않거나 혹은 그 이상이라는 결론이 나온다. 그래픽 드라이버의 문제[* 밸브가 소스엔진을 리눅스에 포팅할 때도 그래픽 카드 제조사들과 긴밀히 협조해서 드라이버 개선(특히 멀티스레딩 지원)을 동시에 진행했다.]도 해결되었고 문서화도 정리되어있다.

OpenGL은 MS사의 DirectX가 따라하고 있는 모델로 마소의 DirectX는 OpenGL의 카피캣이라고 할수 있다. DirectX 신 버전에서 이것도 된다며 게이머들의 가슴을 설레게 하던 것 중에는 사실 OpenGL에서 이미 한참 전에 구현이 되어있던 것도 많다. 예를 들어 DirectX 10 이후 지원되기 시작한 앰비언트 오클루젼 기술은 OpenGL 1.5를 가지고도 코드를 만들어 낼 수 있다. 현재도 전문적인 용도에서는 OpenGL을 많이 사용하며, DirectX가 뒤를 쫓고 있는 중이다.

존 카맥이드 소프트웨어에서 출시하는 PC 게임은 거의 다 리눅스를 지원한다. 물론 패치도. DirectX를 사용하지 않고 OpenGL을 사용하기 때문에 가능한 모양. 철지난 게임들[* 둠3, 퀘이크3, 리턴 투 캐슬 울펜슈타인 등.]의 바이너리 파일을 리눅스용으로 공개하였다.[* 다만 게임은 실행 파일만으로 즐길 수 없으므로 윈도우용 카피에서 실행 파일을 제외한 패키지 파일들(.pak)을 가져와야 한다.]

세번째로, Braid나 World of Goo 등의 몇몇 인디 게임들도 리눅스용 Full 버전을 팔고 있다. 그리고 자유 소프트웨어로 웬만한 상용 버전 보다 더 빵빵한 웨스노스 전쟁도 있다.

네번째로 에뮬레이터를 거치는 게임은 대부분 리눅스에서도 사용할 수 있는 에뮬레이터가 있기 때문에 큰 문제 없이 사용할 수 있다.[[18]] 마인크래프트 자바 에디션[* JE 1.12.2를 기점으로 UWP(Win10, Win10 Mobile), 안드로이드, iOS, tvOS, 엑스박스 원, Nintendo Switch용 버전은 마인크래프트로 통합되었고 원래 '마인크래프트'였던 Win32, 리눅스, macOS용 버전은 '마인크래프트 자바 에디션'으로 변경되었다.]와 같은 경우에도 Java 기반이기 때문에 문제 없이 실행이 가능하다.

다섯 번째로, Wine이 생각보다 최근 성능이 좋아지면서 이를 통해 플레이 할 수 있는 게임이 많아졌다.[* 특히 게임 뿐만 아니라 어도비 소프트웨어도 추가 패치만 하면 가능한 것으로 알고 있다.]특히 블리자드의 게임들이 지원이 빨라 최신 게임들이 모두 플래티넘 등급이라 거의 플레이하는 데 지장이 없는 수준이다. 그 외의 경우, WineHQ AppDB나 Lutris를 참고하자. Lutris를 사용하면 유저들이 삽질해가면서 만든 스크립트로 고생할 필요 없이 바로 게임을 실행시킬 수 있다. 특히 2019년 들어서 dxvk의 성능이 상당히 발전했기때문에 사양만 받쳐준다면 다이렉트 X 전용 게임도 무리없이 돌릴 수 있다. 성능은 게임마다 다르지만 보통은 윈도우랑 비슷하거나 30 프레임 가량 떨어지는 경우가 많다. [5] [오브 더 툼 레이더]

KVM/QEMU를 이용해 가상머신으로 게임을 돌리는 방법도 있다. 와인보다 성능이 좋고 완벽한 호환성이 있다는 장점이 있다. 엔비디아등의 GPU경우 VFIO 드라이버와 GPU 패스스루를 사용하면 가상머신에서 GPU성능이 실제 머신에서의 GPU성능과 95%정도로 동일하게 사용가능하다.

VFX[편집]

해외의 경우 렌더팜[* 렌더링을 위해 수십~수천개의 컴퓨터를 서버마냥 돌리는 것이다.]은 물론 작업 컴퓨터도 리눅스로 되어 있는 경우가 많다. 주로 CentOSRHEL인데, 이는 윈도우보다 렌더팜 구성 등에 용이한 이유도 있지만, 실리콘 그래픽스의 워크스테이션을 쓰며 성장한 8,90년대의 VFX업계가 2000년대에 들어서 SGI를 손절(...)해버리고 리눅스로 갈아탄 역사가 있기 때문이다. 이러면서 IRIX[* SGI에 탑재된 유닉스의 일종인 OS]에서 돌아가던 소프트웨어들도 그대로 리눅스로 포팅하게 된다. 상용 프로그램들은 물론이고, 인하우스 프로그램들과 파이프라인에서 사용하는 스크립트들도 IRIX용으로 작성된 것인데 이를 윈도우로 옮기는 것은 비용이 매우 크니까[* 유닉스 셸에서 사용되는 스크립트를 전부 윈도우용 프로그램 또는 .bat으로 번역한다고 생각해보자(...)] 가격이 더 저렴하고 IRIX와도 비슷한 리눅스로 옮겨간 것이다. 물론 후술하겠지만 윈도우나 맥을 쓰지 않는다는 것은 아니다. 아예 주력으로 쓰는 회사들도 있지만 대부분의 경우 파이프라인의 일부일 것이다.

이렇게 업계와 함께 프로그램들이 유닉스, 그리고 리눅스로 성장해왔고 딱히 윈도우즈로 옮길 이유는 없었기에 대부분의 프로그램들은 리눅스를 지원하고 있다. 물론 일반적으로 회사 내부에서나 리눅스를 쓰지 집에서는 프리랜서나 학생, 개인들은 개인컴으로 여러가지를 겸해야 하기 때문에 요즘에는 윈도우즈 보다 리눅스를 쓰고 있는 경우도 많다.

유명한 Maya, Nuke, Katana, XSI, Clarisse, Mari, Fusion, Arnold, Renderman 등은 모두 리눅스를 지원한다. 특히 렌더러들은 렌더팜에서 돌아가는 것이 전제임으로 모두 지원하고 있다. 다만, ZBrushCinema 4D등의 리눅스 미지원 프로그램들도 있다.[* 일부 프로그램들은 개인이 아닌 회사에만 리눅스 버젼을 제공하기도 한다.] 이런 경우는 아예 게임쪽 업계에서 사용하기 시작한 프로그램이거나, 여러 사정으로 윈도우나 맥용으로 시작했으나 이미 성장한 상태에서 포팅하기는 비용이 큰 경우도 있다. 이런 경우는 해당 프로그램이 지원하는 OS를 설치한 컴퓨터를 따로 쓰거나, 아예 VM에서 돌리기도 한다.

리눅스 시장 점유율 현황[편집]

웹서버, 클라우드 서버 시장에서 압도적 점유율을 보이고 있다. 웹서버만 보고 단순히 전세계 100만개 도메인을 조사해 보면 96.5%가 리눅스 서버라고 하기도 하고 [[19]], 알렉사 기준 많이 쓰는 도메인을 기준으로 보면 70%가 리눅스 서버라고 한다.[[20]] 인터넷 서비스 용도로는 윈도우나 유닉스 서버는 보기가 어려울 정도로 대세가 되어 있다. 다만 게임 업계에서는 회사의 개발 인력이 윈도우 환경에 익숙하기도 하고 게임 클라이언트와 같은 소프트웨어를 돌려야 하는 경우가 있어 윈도우 서버를 쓰는 경우도 있다.

모바일에서도 실질적으로 리눅스가 장악하고 있다고 할수 있다. 리눅스 기반의 안드로이드는 80%가 넘는 점유율을 보이고 있고 국내도 비슷한 점유율을 보인다. 안드로이드에서 리눅스 앱을 돌릴수도 있다. 애플의 iOS역시 BSD/Unix/Linux 계열의 OS이다.

카-인포테인먼트 시장에서 강세였던 MS의 임베디드 윈도우즈 역시 2010년 중후반부터 리눅스에 따라 잡힌 상태이다.

"11장 윈도우즈 대체 프로그램 일람"에서도 제시되고 있듯이 데스크탑 및 노특북에서도 리눅스로 윈도우즈를 완전히 대체가능하므로 흔히들 말하는 '리눅스 세계정복'도 머지않아 가능할 것이다. 가전, 모바일, 산업, 전기차등 임베디드를 포함하면 사실상 이미 리눅스가 세계를 정복한 상태라고 말할 수 있다.

빌 게이츠도 자신의 블로그를 캐싱하는 서버를 리눅스로 돌리고 있다. 자신의 블로그 서버는 윈도우다. MS가 비록 과거 제닉스라는 유닉스 운영체제를 잠깐 만든적이 있다.

구글은 원래 우분투 기반의 구분투(Goobuntu)라는 자체 운영 체제를 썼으나 데비안 기반의 지리눅스(gLinux)로 바꿨다.[* [사내 리눅스PC 우분투→데비안 갈아탄다] ] 구글은 웹 서버구글 웹 서버라는 자체 소프트웨어를 사용한다.

슈퍼컴퓨터 OS의 경우 사실상 리눅스가 100%를 차지한다. [[21]] 참조.

스페인 바르셀로나에서는 모든 소프트웨어를 우분투오픈 소스 소프트웨어로 바꾸기로 결정하였다. [없는 도시를 꿈꾼다 : 스페인 바르셀로나의 오픈소스 전면화 프로젝트 (2018-01-31)]

대중화 요소[편집]

배포자의 다양화[편집]

리눅스용 어플리케이션 소프트웨어의 증가는 다양한 크로스 플랫폼 앱 디자인 개발 툴의 발달에 의한 것이다. 즉, 통합 프로그램 개발 환경인 IDE에서 리눅스 프로그램을 윈도우즈와 맥용 프로그램과 더불어 자동적으로 만들어 낼수 있기 때문에 리눅스가 다시 대중화 플랫폼으로 재조명을 받고 있다. 그에 따라 당연히 윈도우즈 전용 개발 환경등 특정 플랫폼 만을 고집했던 소프트웨어 개발사들은 새로운 패러다임에서 경쟁력을 잃고 있다. 리눅스에서 불리했던 게임도 스팀이 리눅스를 지원하기 시작하면서 거의다 해결되었다. 디바이스 드라이버나 소프트웨어 문제도 해결되었고 성능 및 보안등 리눅스 플랫폼 자체가 가진 특징도 있다.

리눅스 커널이 기본 바탕이고 여기에 여러 배포자들이 있기 때문에 경쟁 구도이며 선택의 자유가 있다. 배포판이 달라도 같은 Linux Kernel과 잘 알려진 UX를 취사선택 가능하기 때문에 편리하다. 안드로이드 경우 SW 파편화8.0부터 안드로이드 트레블(Android Treble)을 적용해 해결하려 하고 있다.

최신 리눅스 커널 버젼, 데스크탑 환경 DE (GNOME, KDE, Xfce, LXDE 등, 데스크탑 환경을 변경하기 위한 별도 DE 패키지로 추가 변경도 가능), Terminal/CLI/콘솔 (Bash 등등), 배포자 별로 제공되고 있는 디바이스 드라이버 버젼 차이 확인 등등을 기준으로 리눅스 벤더를 선정 (입문자에게는 Ubuntu나 Fedora가 적합), 설치후 최적화 시키면 된다. 구글 안드로이드가 언급한 것들을 자체적으로 최적화한 경우이다.

높은 자유도와 수많은 배포자들간의 경쟁이 있는 것이 특징인 운영 체제인만큼 이는 계속 발전될수 밖에 없으며, 서버/임베디드 시장에서는 리눅스가 역으로 장점이고 데스크탑/랩탑 시장에서도 2010년 중후반부터 사용자가 늘고 있다. 참고로, 윈도우즈 환경에서 가능한 모든 기능을 대체할 리눅스용 앱/커맨드/스크립트들이 리눅스에 존재한다.

데스크탑 환경[편집]

데스크탑 환경의 기반인 UX툴킷(SDK)들의 표준화 문제나 같은 툴킷 벤더 버전 별로도 사용법이 변경 되어 왔으나 2010년 중반부터 안정화 되어 가고 있다. 참고로, 과거 UX 툴킷의 급변과 라이브러리 사용법의 불안정화는 윈도우즈가 리눅스 보다 더 심했다.

GNOME 등의 UX와 Display Server 소프트웨어 프래임간의 통신 프로토콜에는 전통적인 X11과 새로운 Wayland, Quarz가 있다. 우분투의 경우, Wayland 디스플레이 서버 컴포지팅을 위해 Mutter가 사용된다.

각 리눅스 배포판의 디폴트 데스크탑 환경 하에서 GNOME, KDE, Xfce, LXDE 기반의 또다른 데스크탑 페키지를 선택하여 설치/변경도 가능하다. 데스크톱 용으로도 롤링 릴리즈라 오피스 등의 일상 프로그램을 깔아두고 매일 업데이트하며 쓰기 좋다. 맞춤 UX 룩을해서는 아치 리눅스젠투 리눅스를 추천하는데, 젠투는 직접 컴파일해서 설치하는 방식이라 어렵고 시간이 소모된다.[* CLI 설치라 처음엔 머리가 아프지만, 익숙해지면 기본 설치/맞춤 설정까지 1시간도 채 안 든다! 하지만, 터미널 명령어는 다른 배포판들의 특성과 마찬가지로 명령어 변동이 있다. 꽤나 머리아픈 부분. 그럴 때는 아치 리눅스 위키를 참고하자.]

커맨드 쉘[편집]

CLI라고 그런게 아주 없지는 않다. 패키지 관리자야 배포판마다 각자의 철학이 있으니 그렇다 치더라도, 2016년 기준, 최근 몇 년 사이에 인터넷 설정과 시스템 초기화에 사용되던 대세 프로그램이 각각 ifconfig에서 ip로, 그리고 SysV init 혹은 OpenRC에서 systemd로 변경된 예가 있다. 이 두 예시 모두 좀 더 나은 성능과 더 깊이 있는 레벨의 설정을 고려하여 만들어진 것이다.

셸 스크립트를 실행하고 CLI 환경을 관리하는 리눅스 셸마저도, Bash가 사실상의 표준이기는 하지만 데비안 계열은 실상 Bash가 아닌 Dash를 사용하여 미묘한 부분에서 호환성 문제가 발생하는데다가 일부 배포판에서는 zsh이나 다른 셸을 기본 셸로 지정하는 등의 예가 있다. 이것 또한 기본적으로 셸이 지켜야 할 부분 이외에는 어떤 확장을 추가하더라도 문제가 없기에 발생하는 일.[* 셸 스크립트의 경우 완전한 호환을 원하는 스크립트는 {{{#! /bin/sh}}}로 시작하고, 특정 셸을 통해 실행되기를 원하면 {{{#! /bin/(셸의 이름)}}}으로 시작하는 식이다. 물론 전자의 경우에는 제한된 기능만을 사용할 수 있다.]

그 외에도, 한 배포판 내에서도 같은 이름의 툴인데도 BSD판 툴과 GNU판 툴이 저장소에 공존하기도 하고, python이라는 명령어에 어떤 배포판은 python2를 매핑시켜놓고 어떤 배포판은 python3을 매핑시켜놓는 등 파고들수록 여러 가지 문제를 찾을 수 있다.

어플리케이션 설치/관리 방법[편집]

리눅스에서 어플리케이션 소프트웨어를 설치하고 관리하는 방법에는 다음과 같은 것들이 있다.

* apt(dpkg)와 같은 커맨드 라인 패키지 매니저 (리파지터리를 지정하여 자동 업데이트도 가능하다.)
* synaptic package manager 등의 GUI 패키지 매니저 앱
* snap 커맨드 라인 패키지 매니저
* snap 스토어 등과 같은 어플리케이션 디스트리뷰션 앱
* flatpak (샌드박싱을 지원한다.)
* .deb 등의 소프트웨어 패키지 파일을 직접설치
* 델타 업데이트를 지원하는 AppImage라는 포터블 패키지도 있다.

apt(dpkg)나 .deb경우는 각 리눅스 벤더별로 명령어와 확장자가 다르다. 세부적인 인스톨/언인스톨 및 환경 설정관련한 사항은 각 어플리케이션 사이트나 구글링을 해보는게 좋다.

GNOME DE경우 어플리케이션을 설치하고 나면 각 프로그램을 실행하기 위한 .desktop 확장자 파일의 shortcut 론쳐 파일이 만들어 진다. 사용자가 별도로 .desktop을 만들어 관리할수 있는 전용앱도 있고 관련문서를 참고하여 직접 .desktop파일을 편집하여 최적화 가능하다. 유져별 디렉토리 또는 전체유져를 위한 디렉토리에 .desktop 파일이 위치될수 있디. GNOME경우 Tweaks로 Application Menus를 활성화도 가능하다. 그 메뉴를 관리할수 있는 별도 유틸 또는 XML 파일 편집을 통해 최적화도 가능하다. 윈도우즈의 경우 파일을 프로그램 별로 모아서 각각의 폴더 내에 저장하기 때문에 같은 요소가 프로그램 별로 중복되어 설치되는 경우가 종종 생긴다. 그러나 리눅스는 저장소(Repository) 시스템 덕분에 공용 라이브러리가 설치되어 있는지 확인하기가 쉬워 라이브러리를 최대한 프로그램과 별개로 빼내어 설치하여 프로그램의 구성 파일이 중복되는 상황을 줄인다. 구성요소는 패키지 설치시 자동 감지 설치 된다.

패키지 시스템에서는 패키지 내에 의존성을 명시하고 리눅스 배포판들은 의존성이 모두 맞춰진 프로그램 세트를 구할 수 있도록 별도의 저장소를 만들어 두곤 한다. 각 프로그램이 문제 없이 돌아갈 수 있도록 안정 버전을 모아두는게 주요 목적인 만큼 필요한 구성요소를 버전별로 갖춰두고 각 프로그램마다 필요한 버전을 가리키도록 하는 것으로 문제를 해결하는 것이 보통이다.[* 젠투, 아치, 데비안 sid 등 특별한 release 주기 없이 rolling-release를 사용하는 배포판은 모든 프로그램과 구성요소가 최신버전으로 유지된다. 이 경우 반대로 시스템이 불안정해지는 역효과가 나타난다.] 프그램을 찾으려고 여기저기 돌아다닐 필요도 없고 같은 요소를 중복 설치할 필요도 없고 보안 업데이트 등을 OS가 알아서 관리해 주고 필요한 것들은 알아서 선택해 주는등 편리하다. 이런 시스템은 지속성에 도움을 주기도 한다.[* 데비안 계열이 유명해진건 의존성 처리를 안해주던 기존 패키지 관리 기능(대표적으로 레드헷의 rpm과 기존 슬랙웨어의 tar 묶음 패키지 설치 방식)에 의존성 기능을 넣었기 때문이다.]

상용 프로그램[편집]

GNU/Linux OS 컬널의 소스코드 라이센스가 GPL이라고 해서 리눅스에서 돌아가는 소프트웨어가 모두 자유 소프트웨어이거나 오픈소스 여야 할 필요는 없다.

아이폰의 AVPlayer가 그러하듯 자유 소프트웨어=무료 소프트웨어라는 공식은 잘못되어있다. 실제로 많은 자유 소프트웨어 프로그램은 지금도 유료로 팔리고 있고 이러한 유료로 팔리는 자유 소프트웨어 중에선 레드햇과 같은 유명 프로그램도 많다.

구글 안드로이드의 수익은 구글 플레이를 통한 거래의 수수료에서 나오지만 안드로이드 기술 자체는 엄연한 구글 소유다. 제조사는 안드로이드 인증을 받기 위해선 구글로부터 직접 기기 인증 요청을 해야하고 이 과정은 결코 '무료'가 아니다. 이는 오픈 소스 라이선스를 가진 프로그램들이 주로 취하는 유료 정책 중 하나이기도 하다. MySQL은 오픈소스 부분만 포함한 커뮤니티 버전은 무료이고 오라클에서 수정한 부분을 포함한 버전만 유료에 상용 라이선스다. 다만 오라클이 수정한 부분을 사용함으로써 얻는 이득은 미비하고 유료 버전을 구매하는 이유는 레드헷이 그러하듯 오라클로부터 직접 고객 지원을 받을 수 있기 때문이다. 여담으로 현재 대부분의 리눅스 배포판은 MySQL 대신 커뮤니티 버전을 fork한 MariaDB로 대체했다. Java의 가장 널리 쓰이는 JVM인 HotSpotVM은 OpenJDK로 오픈 소스로 제공되지만 실상은 오라클이 소유한 엄연한 '상용 소프트웨어'이다. 또한 Java 기술 자체는 유료가 아니다. 안드로이드의 달빅 가상머신이 이미 Java 기술 저작권 침해로 오라클과 소송을 진행 중이다. 즉 Java도 엄연한 상용 기술이다. 다만 개발자들이 그렇게 느끼지 못할 뿐인데 이는 오라클에 합병되기 전 썬 마이크로시스템즈가 가진 Java 라이선스 정책에 의해 그렇게 느껴질 뿐이다.

하지만 이러한 프로그램들은 유명하고 널리 알려져 있기 때문에 그게 아니면 딱히 대적할 프로그램이 없는 경우가 많지만 치열한 경쟁 상대가 많은 소규모 회사나 개인 개발자가 제작한 프로그램은 다른 프로그램과 차별성을 두지 못하면 뒤쳐지기 쉽기 마련이다. 자유 소프트웨어로 배포하면 이러한 차별성을 두는 것에 이점을 상당량 잃게 되므로 상용 프로그램을 판매하는 회사는 자사의 프로그램을 자유 소프트웨어로 배포하는걸 꺼리게 된다. 특히 국내에서는 고전적 개발환경만을 고집하고 모던 IDE 디자인 툴 사용 능력이 없어 리눅스등 크로스 플랫폼 버젼을 만들지 못하는 소프트웨어 제작사들이 많은데 리눅스 등의 자유소트트웨어 진영에 참여하지 못하고 있는 이유이다.

구글이 사용하는, 크로미움-구글 크롬이나 AOSP-안드로이드처럼 오픈 소스 프로젝트를 후원하고 브랜딩만 붙여서 상용 소프트웨어로 만드는 효율적인 구조의 예도 있으나 일단 전제조건이 오픈 소스 프로젝트가 일단 성공해야 그 뒤의 커뮤니티 지원이 성공적으로 이루어진다는 점, 그리고 직접적인 수익은 기대할 수 없다는 점에서 구글이라서 가능한 전략이라고 봐야 할 것이다.

명령어 및 텍스트 사용환경[편집]

터미널이라고 줄여 부르는 터미널 에뮬레이터(Terminal Emulator)는 사용자가 데이터를 입력 출력하는 프로그램이며 사용자는 터미널 에뮬레이터를 통해 응용 프로그램에 접근하는 구조로 되어있다. 즉 터미널은 종류에 따라 CLI 또는 텍스트 유저 인터페이스(TUI), 넓게 보면 GUI 환경을 쓸 수 있도록 하는 프로그램이다.

GUI와 터미널이 공존하고 있다. 터미널 명령어가 존재하기 때문에 여러가지 문제가 생겼을 때 터미널 명령어만 따라 입력해주면 바로 해결이 가능해서 오히려 GUI 보다 문제 해결에 훨씬 유리한게 터미널이다. 모든 유저들이 터미널 명령어로 일을 해결하고 싶어하는 것은 아니다! 실제론 터미널 명령어를 쓰는 것보다 복잡하더라도 GUI를 통해 일을 해결하고 싶은 사람들도 아주 많고 그것은 지금의 리눅스의 데스크탑 점유율이 확실히 입증한다. 다만 요즘 외국의 해결책 설명은 GUI 기반의 방법으로 먼저 하고 그 다음 콘솔 해결책을 표시해주기도 한다. 국내에는 유저층이 적어서 이러한 면이 아직 정착이 덜 된 것이 문제. 당장 나무위키의 여러 리눅스 관련 문서들도 터미널 명령어로 설명을 퉁치는 서술[* 정작 뉴비들은 터미널을 어떻게 진입해야되는 지조차 모른다.]들이 많다.

리눅스를 잘 모르는 일반인들은 왠지 검은 바탕의 흰 글씨의 프롬프트로 대변되는 CLI[* Command-line interface, 명령줄 사용자 환경.]를 떠올린다. 현재는 GUI환경의 많은 발전으로 얼마 안되는 적응기간만 지나면 윈도우와의 호환성을 제외하면 큰 문제는 없다. 다만 CLI에 익숙해 진다면 콘솔에서의 작업이 편한 경우가 많다.

요즘은 잘 찾아보면 CLI까지 갈 필요 없이 웬만한 세팅이나 설정까진 GUI로도 가능하긴 하다. 하지만 인터넷에서 뭘 물어보면 GUI 보다는 주로 CLI 환경의 답변만 받는 경우가 많은데, GUI 기준으로 설명하게 되면 동일한 데스크탑 환경을 사용하는 소수의 사용자에게나 유효한 설명이 돼 버리기 때문이다. 게다가, GUI가 CLI보다 편한 경우도 많이 있지만, 경우에 따라 GUI에서 불가능하거나 극심한 클릭노가다로만 가능한 작업이 CLI에서는 간단히 끝나는 경우가 많기도 하다. CLI에 어느정도 익숙해지게 되면, 그저 터미널을 띄울 수 있다가 전부인 GUI 위주의 데스크탑 환경보다는 터미널을 데스크탑 환경에 이리저리 통합시켜 사용하는 데스크탑 환경을 더 편하게 느낄 것이다. 추가로 GUI로 알려주면 계속 사진찍고 위치 알려줘야하는데 커맨드는 복붙해서 알려주면 된다는 편함도 있다. 예를 들어, 어떤 드라이버가 없는 게 문제인 경우라면 Win 에서는 브라우져 열기 → A 사이트 → 다운로드탭 → OS버젼 선택 → 다운로드진행 → 완료 후 설치 이 과정이 리눅스에선 1줄짜리 커맨드 명령어로 끝난다. 다만 당연히 터미널 뜨면 그저 막막한 대부분의 일반인들은 이것을 불친절함으로 받아들이게 되는 경우도 많다.

bash와 cmd를 비교해 보자면, bash와 cmd는 모두 현재 프로그래밍 언어의 주류인 C-style에서 많이 벗어난 문법이므로 프로그래밍을 대충 끄적거려 본 사람에게도 둘 모두 익숙해지는데는 시간이 꽤 걸린다. 그런데 cmd는 문법 자체가 매우 비효율적이라[* 반복을 위한 유일한 구문인 for문도 꽤나 기형적이고, continue나 break도 존재하지를 않아서 모든 반복문을 goto로 처리해야 한다! 이게 왜 문제냐면, 모두 goto로 처리하면 알아볼 수 없는 스파게티 코드가 될 가능성이 높기 때문이다.] bash가 차라리 낫다. bash는 일단 쉽지 않다고는 해도 리눅스의 수많은 셸 중에서 경쟁을 거쳐 가장 많이 사용되는 셸이니 어느정도 검증돼 있다고 볼 수 있다. 만약 꼭 bash나 타 셸을 써야 할 필요가 없다면, 셸을 간단히만 배우고 파이썬을 셸 대신 사용하여 리눅스를 활용하는것도 가능하다. 문법이 직관적인 것은 물론이고 생산성도 더욱 높으며, 무엇보다 필요할 경우 파이썬 내에서 리눅스 셸 스크립트도 실행시킬 수 있다.

하지만, 파이썬을 따로 설치해야 하고 한 줄 한 줄 명령어를 입력해야 하는 상황에서는 별로 적합하지 않다는 단점이 있다. 말 그대로 셸 스크립트를 짜야 할 만한 반복적이고 정교한 작업이 필요할 경우 파이썬이 셸 스크립트를 효율적으로 대체할 수 있다는 것일 뿐, 완벽하게 대체하지는 못한다.

전통적인 Unix 환경이 그러하듯이 원격 접속은 기본적으로 텔넷이나 SSH 등을 통해 CLI 환경으로 접속이 가능하다.[* Windows에서도 텔넷 등 CLI 환경으로의 원격접속을 지원하나 무엇보다 Windows의 경우 기본은 GUI이기 때문에 CLI 모드에서 할 수 있는 작업은 제한되어 있다. 따라서 CLI에서 작업을 해도 결국 GUI로 접속을 해야 하는 경우가 꼭 생긴다. 반면 리눅스는 대부분의 작업이 CLI에서 가능하기 때문에 GUI는 필요가 없는 경우가 많다. 그래서 아예 리눅스 설치시 GUI 부분은 제외하고 설치하거나 설치 후 GUI 부분을 삭제하는 경우도 많다.] 때문에 웹호스팅 등에서 PuTTY를 이용하여 서버에 접속하는 것이 바로 리눅스의 SSH 원격접속이다. 윈도우즈10부터는 리눅스 서브시스템이 탑재되어 bash와 SSH를 네이티브로 사용할 수 있는 선택지가 생겼다. 텔넷PC통신 시절에 많이 쓰던 그것이다.[* 이 때문에 리눅스 환경에서는 다른 프로그램 없이 바로 telnet 명령 입력하고 PC통신 연결 주소 입력하면 PC통신 화면이 바로 떴다. 애초에 PC통신 자체가 리눅스의 원본(?)인 유닉스의 터미널 환경을 사용하기 때문에 리눅스에서도 그대로 되는 것. PC통신 프로그램은 이 터미널 환경을 도스나 윈도우 환경에서도 쓸 수 있게 에뮬레이션 시켜주는 프로그램이다.] 단, 텔넷은 암호화가 안 되기 때문에 보안성이 낮아서 요즘은 거의 안 쓰고, 암호화 통신을 하는 SSH를 많이 사용한다. 서버 관리 부분에서는 CLI 환경의 장점이 훨씬 많아서, MS도 PowerShell, netsh, Windows Terminal 같은 CLI 솔루션을 제공하고 있고 GUI에 의존적인 면을 줄이기 위해 노력하고 있다.

명심하자. 윈도우즈의 PowerShell이 왜 나왔겠는가? GUI 환경으로 누구나 쉽게 설정 가능하도록 되어 있는것은 일반 유져를 위한것이다. 리눅스의 CLI환경, 일반 사용자가 따라하기 어려운 전문가적 설정은 파워 유져나 수펴유져를 위한 것이다. 리눅스역시 GUI 환경을 각종 theme 패키지를 통해 최적화 가능하다.

다국어 지원[편집]

리눅스는 영어권 사용자를 대상으로 개발되고 있고 각 국가의 사용자들이 커뮤니티 차원에서 다국어 지원을 추가하고 있다. 라틴 캐랙터 계열 문자 사용 국가는 다국어 지원이 잘되는 편이나 한글화는 기대하지 않는게 좋다. 리브레 오피스에서 한글 스펠링 체크 애드인도 있다. 리눅스의 상용판인 레드햇이나 OpenSUSE 또한 팔리는 수준 만큼만 부족한 로컬라이징을 보완해서 출시하고 있다. 영어가 국제화인 시대이고 프로그램을 만든 국가가 대부분 영미권 이기 때문에 용어를 그대로 따르는게 편리하다.

오픈소스 자유 소프트웨어가 아닌 리눅스판 상용 프로그램을 국내에 판매한다면야 한글화를 옵션으로 지원해 주어야 할것이다. 윈도우즈나 맥용 프로그램 역시 한글화가 안되어 있는 경우가 태반으로 많다.

운영체제 레벨에서 한글이나 한자에 대한 지원도 잘되고 있다. 한국어 인터페이스도 설치 가능하고 우분투 경우 한글이나 한자 입력키 문제 경우 IBUS를 다른 입력기로 바꾸기 보다 20.04버젼 경우 /usr/share/X11/xkb/symbols/kr 키보드 설정 파일에서 default를 kr104 항목에 위치시키면 간단히 해결된다.

디바이스 드라이버 지원[편집]

리눅스 각각의 벤더들이 반도체사에서 제공하고 있는 리눅스용 디바이스 드라이버를 기반으로 각 배포판에 최적화를 시키고 있다. 그래픽 드라이버 경우 반드시 리눅스 배포자가 제공하는 것을 버젼별로 선택하여 사용하여야 한다. nouveau 드라이버는 성능 저하 문제가 있으며 gpu제조사 드라이버를 직접 설치시 문제점이 있다. 인텔 iGPU경우 리눅스 커널 버젼업시 자체 지원되고 있고, 참고로 Nvidia Optimus 경우 퍼포먼스 모드에서 스크린 Tearing 문제는 nvidia-drm[* Direct Rendering Manager] modeset 값을 1로 설정 해주어야 sync가 이루어져 테어링 문제가 없다. 반도체사나 주변기기 디바이스 드라이버 제조사에서 리눅스용 배포판을 윈도우즈용 디바이스 드라이버 버젼과 거의 동시에 출시하고 있는 상황이다.

GNU/리눅스 OS 커널의 소스코드는 GPL이지만 거기서 실행되는 어플리케이션은 오픈소스로 프로그램으로 배포할수도 있고 상용 클로즈드 소스 프로그램으로도 배포할수 있다. 유료 소프트웨어 보다는 자유 소프트웨어가 풍부하다.

PC 계열 이외의 임베디드 SoC 칩/보드에 대한 지원 양상을 보면 MS 윈도우즈 보다 리눅스 계열의 지원이 빠르면서도 충실한 경우가 많다. 윈도우즈 계열이 SoC/보드레벨에서 지원 범위가 극히 좁은 이유는 윈도우즈 라이선스 비용뿐아니라 PC용 CPU에 비해 훨씬 다종 다양한 SoC 제품군들에 대한 지원을 일일이 해줄 수 없다는 점이 크게 작용한다. 전력관리 기능이나 소비전력 효율화도 PC 운영체제나 CPU 보다 적극 도입되고 있다. 전용 드라이버 지원도 빠르다. SoC 시스템 사업구조가 PC용 CPU와는 상당히 다른 탓이 크다. SoC 업체들은 스스로가 주도하여 각종 리눅스 커널을 자사 전용 SoC에 맞춰 포팅하는 작업을 해야 하고 주변장치 드라이버 최적화등은 그 과정에서 자연스럽게 반영되기 마련이다. SoC 주변기기나 기타 라이센스 문제 역시 SoC 업체에서 주도적으로 해결하여 공급가능하므로 그러한 구심점이 없는 윈도우즈에 비해 문제해결이 한결 수월한 경향이 있다.

설정법[편집]

7.2장 데스크탑 용도란의 설치후 리눅스 최적화 개요 참고 바란다. 배포자간의 공통된 리눅스 커널 덕분에 DE 및 CLI를 통해 모든 설정이 가능하다. 윈도우즈 보다 전문적인 셋팅이 가능하다. 새로운 기능이 도입되거나, 다른 프로그램과의 충돌을 피하거나, 사용자에게 더 많은 선택지를 주거나, 다른 프로그램과의 호환성을 높이거나, 편의성을 높이려고 하거나, 사용자별로 설정을 다르게 하거나 하는 등의 이유로 한 프로그램에 설정 파일이 여러 개가 있는 경우가 있다. 설정 파일의 위치가 로컬 및 글로벌로 되어있고 파일 익스텍션 명도 분리되어있다.

리눅스 상에서는 조합에 따라 다른 프로그램을 쓸 수도 있고 안 쓸수도 있기 때문에 신호나 출력이 거쳐가는 프로그램마다 각자 설정을 가지고 있는 경우가 많으며 대형 배포판에서는 여러 사용자의 요구를 커버하기 위해 여러 가지 프로그램을 모아 놓게 된다. 물론 GUI 내에서만 얌전하게 놀면 해결될 문제일 수도 있지만, 리눅스 초보 사용자들은 여러 프로그램을 깔거나 복잡한 설정 파일을 직접 건들지 않는게 좋다.

주요 배포판[편집]

[리눅스 배포판의 계보도.] 원작은 2012년 12월에 업데이트가 끊겼지만 다른 기여자가 GitHub에 옮겨서 계속 갱신하여 위키백과에 업로드 하는 중이다. GNU FDL 버전 1.3에 따라 허가된다. 리눅스 계열은 주로 패키지 관리자를 기준으로 묶는다. 배포판 특징상 불가능한 경우가 아니라면 서로 다른 패키지를 변환해서 사용할 수도 있다.

레드햇 계열[편집]

레드햇 리눅스와, 그 커뮤니티 버전인 페도라에서 파생된 배포판들이다. 패키지 형식은 .rpm이며 패키지 관리자로 yum[* 페도라에선 dnf로 바꿨다.]을 사용하는 것이 특징이다. 서버용으로 사용되는 경우가 대부분이다. 얼마 없는 상용 리눅스 중에서도 굉장히 잘나가는 편인데, 이는 서버 시장이 주 타겟인 배포판이기 때문.

레드햇 엔터프라이즈 리눅스

* CentOS
 * Amazon Linux
* 페도라
 * MeeGo
  * Sailfish OS
 * 타이젠
* Scientific Linux
* 아시아눅스
* 붉은별[* 북한에서 페도라 7을 기반으로 제작한 OS. 윗동네에서 만들었기에 GPL같은 듣보잡은 다 날려버렸다고 한다. 미하일(Mikhail)이라는 러시아 유학생이 자신의 [[22]]에 올리면서 알려졌다. 국내에서 이것을 다운로드, 설치, 배포 등 붉은별과 관련된 행동을 하는 것이 불법은 아니다. 하지만 [코드]가 내장되어있다. 다만 사용자의 행동이나 접속 프로그램등을 감시하는 건 아니고 파일에 워터마크를 삽입해 사용자가 누구인지를 구분하는 정도라고 한다.][* 참고로 게임도 몇 개 들어 있는데 "알색맞추기", "원자맞추기", 지뢰찾기는 KDE에 들어 있는 KSame, KAtom, KMines 게임을 번역한 것이다. 북한 개발로 보이는 장기 게임도 있다.]
* [[23]]

데비안 계열[편집]

데비안에서 파생된 배포판들. 패키지 형식은 .deb이며, 패키지 관리자로 apt를 이용한다. 주로 개인용으로 사용되고, 일반 사용자를 주 타겟으로 하기 때문에 사용자 친화적인 배포판이 많다.

데비안

* 우분투
 * 리눅스 민트
  * 하모니카[* 초기에 대한민국 정부 지원으로 개발되었으며, 현재는 커뮤니티 주도로 개발되고 있다.]
 * 쿠분투
 * 주분투 - Xfce를 기본 DE로 사용하는 우분투.
  * GalliumOS - 크롬북, 크롬박스, 크롬비트, 크롬베이스 등 크롬 제품들을 주요 타겟으로 잡았다. 크롬북의 경우 크롬OS와 거의 동일한 성능과 배터리 지속 시간을 보여주며 부팅속도는 이쪽이 더 빠를때도 있다.
* Q4OS
* 크노픽스
 * ~~백트랙~~[* 현재는 지원이 완전히 끊어졌다. 지금 보면 이 리눅스는 4년 전에 나오고, 지원도 완전히 끊어져 있는 우분투를 수정한 것이다.]
  * 칼리 리눅스 : 백트랙의 후속 버전
 * Damn Small Linux
* Backbox[* 백트랙이나, 칼리 리눅스처럼, 침투 테스트할 때 사용하라고 있는 리눅스이다.]
* 크런치뱅 : 2015년 2월부터 개발이 중지되었다.
* 라즈비안[* 라즈베리파이 + 데비안.]
* Neptune
* 스팀 OS
* 크롬 OS/크로뮴 OS용 리눅스 도구[* 본래 크롬OS/크로뮴OS는 젠투 기반이지만, 리눅스 터미널 및 네이티브 앱 실행 시 가상화된 데비안을 통해 실행된다.]

안드로이드 계열[편집]

모바일 운영체제인 안드로이드 계열 배포판들. 패키지 형식은 apk이다. 기존 리눅스와는 구조가 크게 달라서 다른 배포판과 함께 엮지 않는 경우도 많지만, 어쨌거나 리눅스로 본다면 현재 일반 사용자를 대상으로 한 리눅스 배포판 중에는 가장 메이저하다. 구글의 PC용 OS인 크롬OS 역시 안드로이드 앱이 호환된다.

* 안드로이드

이하는 안드로이드 기반으로 사용자 인터페이스와 사용자 경험을 수정한 커스텀 롬이다.

* Fire OS
* MIUI
* Omni
* Polaris OS
* Remix OS
* Resurrection Remix
* Lineage OS[* 구 Cyanogenmod]
안드로이드 자체가 리눅스 커널 위에 안드로이드 Framework이 올라간 형태이지만, 우분투와 같은 리눅스배포판 버전의 실행파일(ELF)과 호환되지 않는다. 안드로이드에서 리눅스와 호환을 위해서는 [[24]]와 같은 리눅스 에뮬레이터를 설치해야 하며, 그 설치 및 사용 방법은 [[25]]를 참조 바란다.

슬랙웨어 계열[편집]

슬랙웨어에서 파생된 배포판들. 현재 명맥이 이어지는 배포판 중 가장 오래된 배포판이다.

슬랙웨어 리눅스

* Slax - USB 저장장치 등에 설치하여 사용하는 것을 목적으로 제작된 리눅스다. KDE를 데스크탑 환경으로 사용하며, 모든 프로그램이 모듈식으로 분리되어 있는 것이 특징이다. USB저장장치 내의 특정 디렉토리에 모듈 파일을 넣고 부팅시키기만 하면 알아서 활성화 된다.

젠투 계열[편집]

젠투 리눅스에서 파생된 배포판들. 패키지 관리자는 portage이며, 여기에 속하는 배포판들은 모두 각각 특별한 목적에 따라 개성이 뛰어나기로 유명하다.

* 젠투 리눅스
 * 펀투 리눅스
* 크롬 OS/크로뮴 OS
 * CloudReady

마제야 계열[편집]

마제야에서 파생된 배포판들. 본래 맨드리바 기반이었으나, 맨드리바가 개발 중단되면서 독립하였다. 쉬운 사용성을 추구하며, KDE를 주력 데스크톱 환경으로 밀고 있는 몇 안되는 배포판들이다.

마제야

* PCLinuxOS
 * No1.Linux

기타 배포판[편집]

* 아치 리눅스
초보자가 접하기에는 결코 쉽지 않은 배포판이지만 어느정도 감을 익힌 사용자를 중수 이상의 실력자로 만들어 주는 배포판. 미니멀리즘이라는 나름의 철학과 매력이 있다. 최근 들어 인기가 높아진 만자로 리눅스가 바로 아치 리눅스를 기반으로 만들어졌다. 패키지 관리자는 pacman이며, 패키지 형식은 특별한 확장자 없이 압축파일 확장자 tar.gz 혹은 tar.xz이다.
* 퍼피 리눅스
모듈화가 잘 되어 있어 용량이 작으면서도 프로그램의 설치가 간편하다. CD에 설치돼서 부팅시에 램 상에 운영체제를 통째로 얹어서 운용하는 방식이 기본이다. 패키지 관리자는 pet-get이며 패키지 형식은 .pet이다. 다른 계열의 패키지도 사용가능하다.
* openSUSE - 원래 S.U.S.E였다가 SuSe로 바뀌었고, 다시 openSUSE로 이름이 바뀌었다. 이 쪽은 유럽이 본진인지라 유럽에서 흥하고 있다. 한국에서도 우분투와 CentOS가 널리 알려지기 이전에는 인지도가 있었다. 처음에는 슬랙웨어 기반이었지만 현 시점에서는 슬랙웨어와 관계가 너무 멀어진데다가 패키지 형식으로 .rpm을 사용해서 분류가 상당히 애매해졌다. 영미권에서는 주로 수세 리눅스라는 독자적인 계열의 배포판 취급받는 듯.
* [[26]]
VMware에서 만든 배포판이다. CoreOS와 마찬가지로 경량화를 강조하고 있으며, CentOS페도라 같은 배포판에서 사용하는 패키지 매니저를 포크해온 tdnf를 사용하고 있다고 한다.
* OpenWRT 임베디드 기기용 리눅스로, 주 타겟이 공유기이다.
* Endless OS
* Solus

macOS와의 차이[편집]

macOS는 전신인 NeXTSTEP부터가 Unix를 기반으로 하고 있는 단종된 BSD 기반의 운영체제라 대항이 불가능해 Windows에 상대하기 위해 오픈 소스 진영의 힘을 빌린적이 있으며 BSD가 유닉스의 코드를 물려받은 후신이기에 POSIX를 지키는 리눅스와도 어느 정도 호환이 된다. Apple은 Unix쪽 계열이다. 순수하게 POSIX 기준에만 맞춰 제작된 소수의 프로그램은 두 운영체제에서 문제없이 돌아가지만 리눅스 기준으로 만들어진 프로그램은 BSD에서 돌리려면 에뮬레이터가 필요해지고 반대의 경우에도 상당한 포팅작업이 필요해진다. Apple의 기여도는 리눅스를 기준으로 보면 불친절하고 리눅스가 아닌 FreeBSD를 기준으로 보면 상당히 높은 편이다. 실제로, 초창기에는 FreeBSD의 코드를 가져다 쓰기도 했다. 기본 베이스가 FreeBSD와 상당히 유사하기 때문에 FreeBSD 기준으로는 OS X 용도로 개발된 코드의 포팅작업도 리눅스에 비해 어려운 편. (예를들어, libdispatch나 libc++ 같은것들은 FreeBSD로 가장 먼저 포팅이 되었다.) Apple은 BSD 라이센스등의 소스코드를 가져다 쓰고 있는 측면이 많고 오픈소스 GPL 라이선스를 채택하고 있는 리눅스 커널의 소스코드가 Apple의 macOS보다 오리지널리티가 있다고 할수 있다. 즉, 클로즈드 소스 운영체제인 Apple의 오리지널리티가 실제로는 별로 없다고도 할 수 있다. 거기다 macOS는 Mac에서만 쓰는 클로즈드 소스 OS이고 Linux OS 커널은 무료 오픈소스 라이센스이기 때문에 버젼업을 해가면서 리눅스 진영의 코드를 Apple이 사용하기 힘들게 바꿔놓은 측면에서도 리눅스 진영과 거리가 멀어진것은 당연하다. macOS는 오리지널리티가 있는 OS라기 보다는 유닉스 및 리눅스 진영을 카피한 측면이 많다.

윈도우즈 대체 프로그램 일람[편집]

* MS 오피스리브레오피스, WPS 오피스
* MS 비주얼 스튜디오 → GNOME Builder, Glade[* GTK용 비주얼 빌더. MS 비주얼 스튜디오의 XAML Designer에 해당], Android Studio[* 비주얼 스튜디오는 리눅스판이 없으나 안드로이드 스튜디오는 리눅스판 버젼이 있다. 안드로이드 에뮬레이터도 지원하여 리눅스에서 안드로이드 앱 소프트웨어 디자인에 최적. Java, Kotlin, 또는 Flutter 프레임워크가 있다. 또한 웹브라우져에서 동작하는 웹 앱 소프트웨어 디자인도 가능하다.], IntelliJ IDEA, Code::Blocks, NetBeans, Eclipse, CLion, KDevelop
* SourceTree → SmartGit, GitKraken, Guitar Git GUI
* 포토샵GIMP, Krita, Pinta 등
* 일러스트레이터Inkscape, Karbon14 등
* 라이트룸 → Darktable, LightZone, RawTherapee 등
* InDesign → 리브레오피스 Writer(워드+DTP 통합; Frame/Column/Section/Style등의 강력한 레이아웃 기능이있다.)
* 어도비 아크로뱃 → PDF-XChange Viewer[* 리눅스 와인으로 실행가능. 뷰어도 기본 편집 가능이 있다. 와인에서 폰트 설정을 하면 어노테이트시 한글 깨짐 현상도 해결된다. 키보드 단축기 설정이 필요하다. 와인/리눅스간의 이미지 copy/paste도 new docu from image등을 사용하면 된다.], PDF Studio[* 무료 및 유료 버젼이 있다. HiDPI모니터 사용시 설정창에서 Nimbus를 GTK+로 변경하여야 한다.], Evince, Okular, 리브레오피스Draw[* PDF 편집툴로도 사용가]
* 아웃룩 → 썬더버드, Evolution 등
* 메모장 → CherryTree[* 원노트 대체툴이다.], gedit, Kate, Leafpad, Mousepad, JEdit, Notepadqq 등
* 미디어 플레이어 → VLC, SMPlayer, MPlayer, mpv[* MPlayer와 같은 커맨드 라인 플레이어. MPlayer의 포크로 쓸데없는 기능들을 지우고 몇몇 새로운 기능을 추가했다. 화질도 더좋고 가벼워 여러 프론트엔드 미디어플레이어에서 백엔드로서 사용된다.]
* SkypeDiscord, Mercury Messenger, Pidgin, Emesene, Empathy, KMess 등
* 파티션 매직 → GParted, KDE Partition Manager
* 윈도우즈 어플 실행 툴 → WINE, CrossOver
* Hyper-V 가상머신 → KVM(Kernel-based VM)-QEMU. 참고로, 가상머신 퍼포먼스를 위해 dGPU경우 GPU Full Pass Through가 사용되며 인텔 iGPU경우 GVT-g를 통해 엔터프라이즈용 dGPU에서나 가능한 vGPU 공유도 가능하다. 

위와 같이 윈도우즈 프로그램을 완전히 대체할 수 있다. 윈도우즈/리눅스 양쪽을 모두 지원하는 프로그램 경우 리눅스판에서 프로그램 속도가 높다. 리눅스를 주력 데스크탑 운영체제로 사용해도 전혀 무리가 없다는 뜻. 크로스 플랫폼 솔루션을 지원하는 최신 IDE와 리눅스 상에서 GPU 가속을 지원하는 VM 솔루션의 발달 (즉, 윈도우즈 VM 또는 안드로이드 VM에 GPU Passthrough등으로 윈도우즈 앱 및 안드로이드 앱을 리눅스 운영체제 상에서 고속으로 실행가능함) 등으로 인하여 리눅스를 메인 플랫폼으로 사용함에 있어 전혀 거리낌이 없다.

넌-리니어 비디오 에디터도 리눅스용으로 Avidemux[* 단순한 편집만 가능하다.], Cinelerra(GTK), Kdenlive(KDE), Shotcut[* 이들 세 가지는 좀더 전문적인 편집도 가능하다. Shortcut은 윈도우나 맥OS도 지원한다.]등이 있다. AA Translator 프로그램을 이용해서 EDL→Ardour 형식 변환도 가능하다.

리눅스에서 게임 디스트리뷰션 앱인 Steam을 깔아 34,000개 이상의 최신 게임을 즐길수 있다. 가상머신 프로그램 없이 리눅스 Wine으로 윈도우즈 클래식 게임을 직접 실행도 가능하다. 월드 오브 워크래프트 같은 경우 와인 폴더 내에 설정 파일에서 한 줄만 바꿔주면 된다. PlayOnLinux를 사용해서도 리그 오브 레전드등을 플레이가능하다.

키보드/마우스 같은 입력장치의 경우 xbindkeys나 xinput로 리눅스에서 튜닝하여 설정가능하다. 게이밍 기어도 있다. 리눅스 주변기기에 특화된 예를들면 로지텍에 사용가능한 https://github.com/libratbag/piperhttps://github.com/pwr-Solaar/Solaar 와 같은 서드파티 유틸도 있다.

오래된 아톰을 쓰는 넷북에서도 인터넷 브라우징, 파일 저장 및 서버등의 용도로 리눅스를 설치하여 비교적 빠르게 쓸 수 있다. 리눅스에서 가상 머신 프로그램을 이용하여 윈도우 한정판을 돌려도 된다. QEMU는 가상머신 VM에 리눅스가 점유하고 있는 GPU를 full pass-through하나거 공유하여 실제 머신(host os)에서와 같은 GPU성능을 얻을수 있다.

관련 문서[편집]

* 리눅스 호환 소프트웨어
* 오픈 소스 소프트웨어
* POSIX: 유닉스의 API 표준이다.
* 오픈뱅킹
* 키보드 단축키
* Manual pages
* Flutter
* X11
* 턱스 (마스코트 펭귄)
* GNU GPL(General Public License)