Linux

 




Linux
[image]
리눅스 커널의 마스코트인 Tux(턱스)
1. 개요
2. 역사
2.1. 초기
2.2. 발전
2.3. 현재
3. 특성
3.1. 다양한 배포판
3.2. 다양한 플랫폼
4. 라이선스
4.1. 항상 무료는 아니다
5. 보안
6. GUI 환경
6.1. 구성 요소
6.2. 데스크탑 환경
6.3. UI / UX 툴킷
7. 주요 용도
7.1. 데스크톱 및 노트북
7.2. 서버 용도
7.3. 모바일 용도
7.4. 임베디드 기기 용도
7.5. 게임 용도
7.6. VFX
8. 리눅스 시장 점유율 현황
9. 대중화 요소
9.1. 배포자의 다양화
9.1.1. 데스크톱 환경
9.1.2. 커맨드 셸
9.2. 애플리케이션 설치/관리 방법
9.3. 상용 프로그램
9.4. 명령어 및 텍스트 사용환경
9.5. 다국어 지원
9.6. 디바이스 드라이버 지원
9.7. 설정법
11. macOS와의 차이
12. Windows 대체 프로그램 일람
13. 관련 문서


1. 개요


컴퓨터 OS 커널의 일종인 리눅스 커널, 또는 리눅스 커널을 사용하는 운영 체제를 가리키는 말이기도 하다. GNU 쪽 사람들은 리눅스는 커널일 뿐이고, 이 커널을 가져다가 GNU 프로그램들을 올려 만든 운영 체제는 GNU/Linux라고 이야기하며 이런 명칭에 민감하게 반응하는 경우도 있다. 소스 코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어다. 컴퓨터 역사상 가장 많은 참여자가 관여하고 있는 오픈 소스 프로젝트다. 모바일 운영 체제로 유명한 안드로이드 OS 역시 리눅스 커널을 가져다 쓰고 있다.
Linux라는 이름은 Linus' *nix, 리누스의 유닉스라는 뜻으로 지어졌다. *nix는 Unix 계열 운영체제라는 뜻이다. 나중에 Linux Is Not UniX라는 재귀적 용어의 줄임말이라는 의미를 새로 만들어냈다.
리눅스 재단에 따르면 퍼블릭 클라우드 컴퓨팅 워크로드의 90%, 스마트폰의 82%, 임베디드 기기의 62%, 슈퍼 컴퓨터 시장의 99%가 리눅스로 작동한다.[1]
2007년부터 2019년 사이의 리눅스 커널 참여자 중 회사순위를 보면 1위 인텔 (10.01%), 2위 레드햇 (8.90%), 3위 IBM (3.79%), 4위 SUSE (3.49%), 5위 Linaro (3.17%), 6위 구글 (2.79%), 7위 삼성전자 (2.58%), 8위 AMD (2.28%), 9위 르네사스 (1.99%), 10위 텍사스 인스트루먼트 (1.78%), 11위 오라클 (1.70%), 12위 브로드컴 (1.23%), 13위 화웨이 (1.2%), 14위 Mellanox (1.19%), 15위 NXP (1.18%), 16위 ARM (0.98%), 17위 리눅스 재단 (0.78%) 등으로 모두 반도체/통신/IT/시스템 업체임을 알 수 있다.[2]
리눅스 재단 공식 웹사이트, 리눅스 GitHub 사이트

2. 역사



2.1. 초기


1991년 당시 핀란드 헬싱키 공대 대학생이었던 리누스 토르발스미닉스 OS를 사용하는 컴퓨터에서 작업해서 만들었다. 참고 기사 미닉스를 쓰면서 마음에 안 드는 점이 있을 때마다 커널에 여러 가지 기능을 추가했고, 어느새 운영체제에 가까울 정도로 기능이 늘어났다.
리누스는 이 커널을 처음 릴리스 할 때, 무료이니 'Free', 매니아이니 'Freak', 그리고 Unix와 유사하니 'x'를 조합해 'Freax'라고 부르길 원했다고 한다. 그러나 FTP 서버에 소스 파일을 업로드해줬던 아리 렘케는 차라리 리누스가 개발했으니 '리눅스'라고 부르는 게 낫겠다 싶어 리누스의 허락 없이(...) 이름을 '리눅스'로 바꿨고, 리누스도 이 이름이 마음에 들어 새 운영체제의 이름은 리눅스로 확정됐다. 나중에 리누스 토르발스는 BSD가 실패한 원인이 "이름에 쓸데없이 약자를 써서 그렇다."라고 말한 적이 있다.

2.2. 발전


리눅스는 거의 공개 직후부터 가히 폭발적인 성장세를 보인다. 여러 가지 원인들이 겹친 결과였다. 유닉스의 일종인 BSD가 소송에 휘말리면서 대체품에 대한 관심이 커진 것도 큰 역할을 했다. 극성 BSD 빠들 중에서는 그 소송만 없었다면 리눅스는 존재하지도 않았을 거라고 주장하는 사람도 있을 정도였다. 또한, 리눅스 OS 커널 소스코드에 GPL 라이선스를 선택하고, 현재 오픈 소스 개발 모델의 모체가 된, 소스 코드 공개와 공개적 개발 모델을 선택한 것도 매우 유효했다. 이전에는 오픈 소스 소프트웨어라도 핵심 개발자 집단이 개발 과정을 독점하고, 릴리스할 준비가 되었다고 판단될 때에야 소스를 공개하는 방식을 사용했다. 그런데 리눅스는 누구나 소스를 읽은 후 패치를 작성해 보낼 수 있도록 했다. 패치가 받아들여지면 그 패치를 보낸 사람은 기여자가 되어 다음 릴리스 노트에 이름이 박혔다. 에릭 레이먼드의 "시장과 성당[3]"의 표현을 빌리자면, 이는 사람들의 과시욕을 충족시키는 방식이었고, 사람들은 돈을 받지 않고도 커널 버그 수정과 기능 추가에 매달렸다.
초기 리눅스는 기능이 불완전한 운영 체제였다. 그러나 자체 커널 개발에 난항을 겪고 있던 GNU 프로젝트가 리눅스 커널에 관심을 가졌고, 리눅스 커널과 GNU 유틸리티가 결합하면서 비교적 완전한 운영체제로 거듭났다. 18개월여만인 1994년에는 리눅스 커널 1.0 버전이 나왔다. 이후 썬 마이크로시스템즈IBM 등의 대기업들이 리눅스 개발을 지원하기 시작하는 등, 리눅스가 IT 세계에서 가지는 입지는 빠르게 탄탄해졌다.

2.3. 현재


데스크톱/랩톱 용도 뿐만아니라 웹 서버, 클라우드, 안드로이드 및 포터블 게이밍 콘솔등의 모바일 기기, 각종 임베디드 기기 (가전용, 상업용, 산업용, 차량용 기기)등을 구동하는 운영 체제다. 데스크톱/랩톱 시장에서도 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를 지원할 예정이라고 한다. #
2020년 10월 현재 리눅스 커널 버전 5.9가 릴리스 되고 있다. v5.9 릴리스 노트 #
리눅스 커널 버전별 릴리스 노트 #

3. 특성



3.1. 다양한 배포판


OS의 핵심 기술이 리눅스 커널이고 동일 한 리눅스 커널을 사용하는 수많은 배포자들이 있다.
모든 소스가 공개되어 있다 보니 같은 역할을 하는 프로그램이라도 편리성을 지향하는 프로그램, 속도를 지향하는 프로그램, 확장성을 지향하는 프로그램, 가벼움을 지향하는 프로그램 등 여러 선택지가 존재하기 때문. 쉽게 이야기 하면 '종자'(감자 혹은 오렌지)와 '종자 개량' 그리고 그 '종자'를 이용해 재배한 작물을 활용한 '완제품'(감자칩 혹은 오렌지음료류)을 생각하면 쉽다.
운영체제 하나를 구성하는 데에도 핵심부 커널부터 해서 그 상위 미들웨어를 거쳐 사용자가 접하는 인터페이스에 이르기까지 수십~수백 가지의 프로그램이 들어가고 그걸 엔드유저가 직접 하나하나 신경쓸 순 없기 때문에[4] 배포자의 기준으로 하나의 세트(배포판)를 만들어 내고 사용자에게 배포된다.
리눅스에 입문하는 엔드 유저는 배포판(벤더)들이 다양하다고 걱정할 필요가 없고 Ubuntu나 Fedora를 사용하면 된다. USB나 SSD로 여러 배포판의 리눅스 OS를 테스트 해볼 수 있는 장점도 있다.
거기에다 공개되어 있는 커널 소스와 기타 오픈소스 프로그램들을 마음대로 가져다 자신만의 리눅스 배포판을 만들어 브랜딩이 가능하다. 그래서 모든 리눅스 배포판의 갯수를 집계한다는 것은 불가능 하나, 어느 정도 공개적으로 배포되어지거나 인지도가 있는 배포판을 연대표(타임라인)식으로 공개한 GNU/Linux 배포타임라인에 따르면 약 450여개의 배포판이 있다고 전해 진다.# 다만 해당 자료는 2013년까지의 내용만 있기에 2020년대에 들어서면 더 많아졌을 가능성이 있다. 리눅스 배포판의 인기순위를 알고 싶다면 리눅스배포판 랭킹사이트인 디스트리뷰션닷컴#을 참조하면 된다.
  • 'Linux'가 아니라 'GNU/Linux'라고 불러야 한다는 주장도 있다. 자유 소프트웨어 운동을 창시한 리처드 스톨먼도 'GNU/Linux'라고 부르지 않는 기자들과는 대화도 하지 않는다고. 사실 리누스가 만든 것은 리눅스 커널 뿐이며, OS의 구성물 대다수는 자유 소프트웨어 재단 하에서 만들어진 소프트웨어로 채워져 있다. 커널이 OS의 핵심이기는 하지만 분량은 극히 일부일 뿐이다.
  • 하지만 리누스 본인은 GNU/Linux라 부르는 걸 이상하다 생각하고 Linux라 부르는 걸 선호한다. 'Linux'라는 상표를 가지고 있는 원 제작자가 좋아하지 않는 행위이다 보니, 이 쪽 관련으로 본인의 자서전에서 리처드 스톨먼을 언급하기도 한다. 리눅스 자체는 GNU프로젝트가 아닌데도 불구하고 FSF가 리눅스를 GNU/Linux라고 하는 등의 GNU 프로젝트인 것처럼 포장 하는 행위를 별로 좋아하지 않는다. the 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가 업데이트되더라도 소스코드가 개방돼있는 이 동네 특성상 재컴파일만 하면 쓸 수 있으며, 그렇지 않으면 죽기 직전의 프로그램이라도 누군가가 새 라이브러리에 맞게 수정한 패치만 올려주면 연명가능. 우분투만 해도 메이저 버전마다 패키지가 따로 만들어져 나오는 걸 생각해 보자. 참고로 한번 설치하면 지속적으로 업데이트해 나가는 아치 리눅스 같은 경우, 어떤 라이브러리에 큰 수정이 있으면 그에 관련된 프로그램들이 동시에 우수수 업데이트되기도 한다. 그만큼 업데이트가 잦은 편이며 너무 업데이트를 드물게 하면 업데이트 한 방에 부팅 불가능한 상황이 오기도 한다.
  • 리눅스 배포본 정보와 출시 소식 정리 사이트.
프로그래머를 위한 플랫폼이기도 하다. 리눅스와 CLI 환경 자체가 간단한 프로그래밍 언어를 이용해서 처리할 수 있는 수많은 과제들을 제공해주는 소스다. 그래서 이들은 GUI에서 간단히 클릭으로 끝낼 수 있는데도 CLI 셸을 통해서 명령을 내려야 직성이 풀리고 한번 명령 내리는 것으로 끝나는 것들도 굳이 셸 스크립트 혹은 다른 프로그래밍 언어를 이용해서 만든다. GUI 애플리케이션 프로그램을 하나 만들려면 사용될 프로그램 언어와 UX를 위한 비주얼 빌더 사용법 및 GUI 라이브러리 사용법까지 배워야 하지만, CLI 환경에서는 프로그래밍 언어 만으로 커맨드 라인 앱이나 백엔드 앱을 작성하는 것이 가능하다. CLI 명령 중 하나인 wc나 cat, cp 등의 간략화 버전 같은 것은 C언어를 배운지 얼마 안된 사람도 금방 쫓아할 수 있고 소스 코드도 공개되어 있으므로 자신만의 개량형 버전을 만들어 사용하는 것도 쉽다. 게임 관련해서도 CLI 환경이 훨씬 만들기 쉽기 때문에 로그라이크 게임들이 많이 돌아다닌다. 디아블로에 지대한 영향을 주고, 리니지가 대놓고 갖다 베낀 넷핵이 이쪽에서 유명 게임 중 하나. 몇몇 프로그램은 아예 소스 코드 자체를 세팅 파일로 활용한다.(dwm(C), xmonad(Haskell), ranger(Python) 등) 물론, 엄청난 시간을 잡아먹는다. 리눅스 입문하는 노래도 있다.#

3.2. 다양한 플랫폼


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

위와 같은 리눅스로 동작되는 전용 포터블 콘솔 게임기 말고도 드림캐스트, 게임큐브, Xbox 360, Wii, Wii U, PS4, XBOX ONE에 모두 리눅스를 설치가능하다. 다만, 리눅스 하드웨어 요구 사양이 과거에 비해는 다소 올라가서 Wii와 같은 7세대 이전의 게임기에서는 리눅스 버전과 앱을 취사선택해야 한다.
플레이스테이션 2에서도 공식적으로 리눅스를 지원한 적이 있었다. 이를 위해서 네트워크 카드, 40GB HDD, VGA 케이블, 키보드, 마우스, 메모리카드와 더불어 리눅스 인스톨 키트를 세트로 해서 판매하였다. 다만 리눅스를 설치한 상태에서는 게임 구동이 불가능하였으며, 게임을 돌리기 위해서는 리눅스를 포맷하고 PS2 기본 펌웨어로 변경해야 했다. 나중에 나온 슬림모델에서는 HDD를 설치할 수가 없으므로, 리눅스 설치가 불가능해졌다. 플레이스테이션 3에서도 공식적으로 리눅스 설치가 가능했다.# Yellow Dog Linux라는 배포판이 있는데 이는 페도라에서 파생되어 나온 물건이다. 다만 PS3에서 데스크톱용 리눅스처럼 쓰려면 PS2와 마찬가지로 싹 밀고 다시 깔아줘야 하는데 가끔씩 이 짓을 정말로 저지르는 용자들이 꽤 있다. 다만, PS3 초기형에서만 가능하며, 2010년 펌웨어 버전 3.21이 넘어가면서 리눅스 지원을 중단하였다.[7] 한때 미 공군 연구소에서 영상분석용으로 1,760대의 플레이스테이션 3를 병렬로 연결하여 슈퍼컴퓨터를 구성한 적이 있는데, 이때 사용된 플레이스테이션 3에 리눅스를 탑재한 물건들이었다.[8]
구형 엑스박스도 CPU로 펜티엄 3를 사용하고 주요 하드웨어 구성이 PC랑 별 차이 없기 때문에 비교적 쉽게 리눅스를 설치 할 수 있다. 약간의 꼼수만 쓰면 모드칩같은 것을 사용하지 않아도 가능하다. 이렇게 리눅스를 설치하여 미디어 플레이어로 쓰거나 서버로 돌리는 사람도 있다. XBMC라는 강력한 미디어 플랫폼이 이 Xbox를 미디어 센터로 사용하려는데서 출발한 것이다. 요즘은 스틱 PC에 리눅스가 설치되어 홈미디어 플레이어로 활용이 되고 있다.

4. 라이선스


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

4.1. 항상 무료는 아니다


리눅스, 특히 상업용 서버나 기타 비지니스용 소프트웨어를 사용하다가 어떠한 문제가 생기면 업무에 차질을 일으킬 수 있는 경우가 있는데 소프트웨어는 무료로 제공하면서 기술 지원 서비스등을 선택사항으로 유료로 하는 비지니스 모델을 취하고 있는 경우도 있다.
그래서 기업에서는 비용을 지불하고 기술지원을 받는 경우도 있다. 예를 들면 우분투를 배포하는 캐노니컬 같은 경우에는 기술 지원 라이선스 계약을 통해 수익을 얻고 있으며(물론 막강한 후원자가 있기는 하지만), 비용은 평일 업무시간만 지원을 받는 계약일 경우 1년에 250달러, 1년 내내 시간과 날짜에 관계없이 지원을 받는 계약은 1년에 900달러. 서버일 경우 각각 750달러, 2750달러이다. 유명한 레드햇의 경우 RHEL(Red Hat Enterprise Linux)라는 이름으로 솔루션 및 기업 서포트까지 제공하는 유료 프로그램을 판매하고 있다.
유료 기술지원을 받는 것은 선택사항이다. GPL 소프트웨어 라이선스로 배포되고 있는 유료 'Red Hat 엔터프라이즈' 패키지 구성을 이름이나 로고 같은 상표권이 있는 부분만 다른것으로 리브랜딩 하고 기술지원 옵션없이 무료로 동일한 소프트웨어를 재배포하는 CentOS라는 리눅스도 있다.
RHEL과 같은 상용프로그램들은 공급자쪽에서 직접 서포트를 제공하지만 대부분의 리눅스 벤더는 각자의 커뮤니티쪽에서 서포트를 관리하고 있다. 시간과 비용이 코스트인 기업에서는 이런 기술지원이 필수다.[9]
자유소프트웨어 재단에서 말하는 자유는 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과 무관한 '''소스코드 비공개 상용''' 소프트웨어를 제작/배포 하는 것도 가능하다.# GPL 소프트웨어 커널과 다른 소프트웨어 간의 커뮤니케이션으로는 GPL 파생 저작물에 해당하지 않는 다는 이야기다.
다만, GPL 리눅스 커널 API 통신과는 별개로, 앱을 다른 GPL 소스코드를 사용하여 컴파일 한후 유료 또는 무료로 판매/배포하는 경우 GPL 파생 저작물 조항에 해당되어 소스코드까지 제공하여야 한다. GPL이 배포/유통된 소프트웨어에 한한 라이선스라 웹 서버등에서 사용될시 소스코드 공개 의무가 없어져 버리기 때문에 그것을 커버하기 위해 등장한 AGPL이라는 것도 있다. AGPL로 라이선스되는 소프트웨어를 웹 서버 등에서 사용시 AGPL 및 그 파생 저작물의 소스코드도 제공 되어야 한다.
애플리케이션 앱에서 LGPL 소스 코드를 다이나믹 링크하여 사용하면 소스코드를 공개할 필요가 없다. MPL 경우 스태틱 링크까지도 허용되며 역시 소스코드 공개의무가 없다. Apache, MIT, BSD 등의 라이선스도 소스코드 제공 의무가 없는 보다 허용적인 소프트웨어 라이선스이다.
참고로, 리버스 엔지니어링에 의한 클린룸 디자인, GPL을 리버스 엔지니어링한 러시아나 중국쪽 소스코드를 사용하는 방법, GPL과 경쟁관계에 있는 보다 허용적인 소스코드등의 사용등으로 GPL의 파생 저작물 조항을 회피하는 방법도 있다.

5. 보안


리눅스 환경은 슈퍼유저, 일반유저, 그룹등으로 파일 관리가 되고 있어 윈도우즈등 타 OS에 비해 안전한 환경이다. 더욱이 리눅스 배포자가 분산되어 있고 악성코드가 주로 MS 윈도우즈를 타겟으로 하고 있기 때문이다. 벤더별 리눅스 시큐러티 관련한 업데이트시 재부팅이 거의 없는 것도 특징이다. 리눅스를 사용하는 유저들 대부분이 컴퓨터에 대해 잘 아는 사람들이라 호락호락하게 당해 주지 않는다. 그렇다 보니 해커들은 리눅스 보다는 윈도우즈를 타겟으로 한 바이러스를 많이 만들고 있다.
리눅스 역시 관리를 잘못하여 root 권한이 오픈된채 사용되는 경우 보안 허점도 있으니 아예 맘 놓지는 말 것. 루트 사용자 관리를 잘못하면 보안 관련한 사고가 생길 수 있다. 유명 배포판인 리눅스 민트의 홈페이지가 해킹 당해서 조작된 ISO 파일이 등록되는 사건도 있었다.[10][11] 그러므로 리눅스 배포판 ISO를 다운받고 해시값까지 확인하는 것이 좋다.[12]
리눅스건 윈도우즈건 간에 바이러스 멀웨어는 시스템을 느리게 만든다거나 파괴하는 종류보단 은근 슬쩍 정보를 수집해서 크래커에게 보내는 스파이웨어나 백도어 종류가 많다. 루트 사용자 권한을 오픈한채 멀웨어가 설치되면 해커가 지정한 곳으로 패킷이 보내진다든지 중요 파일이 전송될 수 있다. 따라서 믿을 수 있는 저장소에서만 프로그램을 받도록 하고, 굳이 제3자 저장소를 이용해야 한다면 안티멀웨어 프로그램으로 스캔을 해주거나 방화벽(GuFw)을 사용하면 해결된다.
Wine은 샌드박스 환경이 아니기 때문에 무조건 방심하면 안된다. 워너크라이의 경우 시스템 파일은 건들지 못했지만 루트권한을 노출한채 멀웨어가 설치되면 동일하게 Wine과 연결된 home 폴더는 여전히 암호화시킨 전력이 있다. 마찬가지로 믿을 수 없는 프로그램은 돌리지 말고 굳이 돌려야 한다면 가상머신을 쓰든가 아니면 Docker같은 프로그램으로 격리시키는게 좋다. Z 드라이브를 제거하거나 Desktop Integration을 끄거나 안티-멀웨어 프로그램으로 스캔 및 방화벽(GuFw)으로 관리하면된다.
루트(수퍼유저) 퍼미션이 오픈된채 사용하지 말고 불량 사이트로부터 리눅스 전용 멀웨어를 내려받지 않는 이상 리눅스에서 상기와 같은 문제가 생길일은 없다. 방화벽(GuFw) / 안티-멀웨어 유틸 / 백업 유틸 등을 사용하면 해결된다.
참고로 보안에 취약한것은 MS 윈도우즈가 더 심하며, 윈도우즈 7같은 OS 경우 미국 NSA로부터 보안문제로 사용 중지 권고를 받고 있는 상태다.

6. GUI 환경



윈도우macOS의 경우 GUI 환경이 시스템에 고정으로 포함되어 있으며 분리할 수 없다. 반면 리눅스에서는 커널GUI 환경이 분리되어 GUI 환경만 별도 개발이 가능하다. 리눅스에서 일반 사용자가 선택할수 있는 GUI 환경은 GNOME과 KDE정도로 보면된다. 참고로, 임베디드 리눅스 쪽에서는 리눅스 커널에 반도체 공급자가 독자 GUI 솔루션을 공급하고 있어 그보다 손쉬운 UI 디자인이 가능하다.

6.1. 구성 요소


기술적으로 들어가면 리눅스의 GUI 환경을 구성하는 요소로 디스플레이 서버, 디스플레이 매니저, 윈도우 매니저, 데스크탑 환경 등이 있다.
[image]
리눅스 GUI 구성 요소
  • 커널: 하드웨어와의 통신을 담당한다.
  • 디스플레이 서버[13]: 클라이언트와의 입출력을 담당하며 화면을 표시하는 기초적인 부분이다. (X11, Wayland 등)
  • 윈도우 매니저: 커널과 창, 그리고 창과 창 사이의 통신을 관리한다.
  • 디스플레이 매니저: 디스플레이 서버와 데스크톱 환경을 시동시키고 사용자 로그인을 관리한다. 쉽게 생각해서 로그인 화면. (GDM, SDDM, LightDM 등) 사용자가 디스플레이 서버나 데스크톱 환경을 선택할 수 있도록 옵션을 제공한다.
  • UI/UX 툴킷: 유저 인터페이스 UI를 구성하기 위해 사용되는 프로그래밍 툴이다. 일반적으로 GUI 응용 프로그램을 만들 때 이를 사용한다.
  • 데스크톱 환경: 사용자가 위와 같은 기술적인 내용을 몰라도 사용할 수 있게끔 세트로 묶고 일관된 경험을 제공한다. 일반적으로 운영체제를 설치하고 볼 수 있는 것들이 바로 데스크톱 환경이다.
[clearfix]

6.2. 데스크탑 환경


데스크탑 환경은 일관된 사용자 경험을 제공하는 인터페이스 스타일이다. 대부분의 사용자는 여러 데스크탑 환경 중 하나를 선택해서 사용한다. 자세한 내용은 데스크탑 환경 문서 참고.

6.3. UI / UX 툴킷


프로그램을 디자인하면서 유저 인터페이스 UI를 구성하기 위해 사용하는 프로그래밍 툴로, SDK 또는 GUI 프로그래밍 라이브러리 라고도 한다. 리눅스를 공식 지원하는 대표적인 UI/UX 툴킷으로는 GTK[14], Flutter, Uno Platform, wxWidgets, Qt[15] 등등이 있다. 각 툴킷별로 UI를 그래픽 툴처럼 작성할 수 있는 별도의 비주얼 빌더도 있다. 상식적인 것이지만, UI/UX 비주얼 빌더 소프트웨어 소스코드가 GPL이라고 해서 거기서 추출된 XML등의 코드가 GPL을 따를 필요는 없다. 즉, XML을 하이드도 가능하다. UI/UX 툴킷 GUI 프로그래밍 라이브러리가 LGPL, MIT, Apache, BSD 등등일 경우 앱 소스코드 공개/배포도 불필요하다.
GUI 애플리케이션 또는 프론트엔드 디자인을 위해 필수적으로 공부해야 하는 분야이다.
특정 툴킷으로 디자인된 프로그램이 작동하기 위해서는 앱 패키지 설치시 관련된 라이브러리가 설치되고 디펜던시로 딸려오는 패키지도 있다. 이들이 프로그램의 실행과 함께 로딩되어야 한다. 테마를 커스텀도 가능하고 원하는 테마를 선택 적용 가능한 장점도 있다. 상품화된 무료 및 유료 UI/UX 디자인 테마 패키지가 아주 풍부하다. 하나의 리눅스 벤더나 하나의 DE에서는 제공되는 프로그램들을 하나의 툴킷으로 통일하여 제공하거나 앱 별로 개별 툴킷 사용 및 개별 테마도 적용가능하다.

7. 주요 용도



7.1. 데스크톱 및 노트북


웹서버 관리나 프로그래밍 용도로는 윈도우즈보다 리눅스가 적합하다. 그외에 EDA나 3D 캐드등 그래픽쪽이라면 윈도우즈가 정답이다.
인터넷이나 워드/엑셀 정도의 오피스 작업만 하는 사용자라면 돈을 주고 윈도우즈를 구입할 필요가 없고 리눅스 사용해도 무방하다. 리눅스에서 윈도우 프로그램을 직접 실행하게 해주는 Wine도 있다.
리눅스에서 데스크톱 및 랩탑 용도로 많이 사용중인 우분투의 설치팁도 참고.
MS 윈도우즈 오피스 프로그램 역시 리눅스의 리브레 오피스로 대체 가능하다. 각종 기관에서 MS 오피스 문서가 사용되고 있으나 리브레 오피스에서 MS 오피스 파일 포맷으로 저장도 지원하기 때문에 아무 문제가 없다. MS 오피스는 윈도우에서만 돌아간다는 것과 아래아 한글도 리눅스판을 만들지 못하고 있는 것도 문제다. 더욱이 PDF가 문서 표준이라 리브레 오피스에서 PDF로 출력하면 된다. PDF-XChange Viewer 프로그램을 리눅스 와인에서 최적화하여 PDF 뷰어 및 기본편집 툴로 사용가능하다. 리브레 오피스 Draw 프로그램에서도 PDF 편집이 가능하다.
USB HDTV 카드등 멀티미디어 기기도 리눅스 드라이버를 제공하고 있으며 무선 랜카드 등의 디바이스 드라이버도 각 반도체사에서 리눅스 커널에 직접 참여하여 커널 자체에 포함시키고 있어 별도 드라이버 설치 없이도 자동으로 사용가능하다.
게임 회사 밸브에서는 리눅스를 게임 플랫폼으로 만들기 위해 많은 노력을 하고 있다. NVIDIA와 협력해서 리눅스 기반의 게임 특화 운영체제 SteamOS를 만들기도 했고 다른 배포판에서도 Steam을 이용하여 최신 게임을 플레이할 수 있다.
기관, 기업 등에서도 비용 절감이 가능하다. 유럽 각국에서는 공공기관에서 MS 윈도우즈를 퇴출시키고 있는 국가가 많다. 이들은 자체적으로 문제 해결이 가능하고 주로 제한된 업무만을 수행하는 환경이기 때문에 리눅스로 충분히 대체가 가능하다. 많은 사람이 이용할 만한 프로그램은 거의 다 있고, 자신들이 필요한 프로그램을 직접 만드는 경우도 많은데 이 경우 리눅스가 오히려 장점이다. 특히 윈도우의 여러 버전을 사용함에 따라 생기는 보안 문제 및 업무 환경 파편화를 리눅스를 도입해서 해결하고자 하는 모습을 볼 수 있다.

7.2. 서버 용도


홈서버든 상업용 서버든 점유율이 윈도우보다 훨씬 높다. 서버 쪽에서 리눅스의 위상은 엄청나다. 무료인 데다가, 오픈 소스고, 리눅스에 익숙한 인력도 많고, 안정성도 높은 편이니 서버 운영체제로서는 최적인 셈이다. 서버용 프로그램들 대부분이 리눅스를 지원하거나, 리눅스 상에서 개발되고 있다. 요즘에는 윈도우스 서버도 성능이 어느 정도 높아져서 점유율이 약간 늘었지만 클로즈드 소스에다 가격도 비싸고 서버 시장에서 비주류인지라 여전히 리눅스 서버에 비할 바는 되지 못한다.
서버쪽 성능이나 안정성 등은 리눅스가 가장 뛰어나다는 평가를 자주 받는다. G-WAN이라는 웹서버 소프트웨어는 원래 윈도우 서버용으로 개발중이었는데, 윈도우와 리눅스에서 네트워크 성능테스트를 해본 결과 윈도우에서의 성능이 처참할 정도로 밀렸다.벤치마크 그 결과 개발 중이던 윈도우 버전을 그냥 버리고 리눅스 쪽으로 옮긴 상태다. 흔히 리눅스의 강점을 공짜라고 생각하는데, 서버 쪽에서는 공짜인 우분투CentOS도 많이 사용하지만 값비싼 RHEL 같은 유료 리눅스도 많이 사용한다. 서버 쪽에서 리눅스를 많이 쓰는 건 단순히 공짜라서로 치부할 일이 아닌 그만한 이유가 있는 것.
GUI가 없는 환경은 가벼워서 서버 성능에도 도움이 되고 보안에도 도움이 된다. 리눅스는 GUI를 선택적[16]으로 사용할 수 있지만 윈도우는 GUI 부분을 삭제하는 것 자체가 불가능하다. 서버 관리에 있어서 CLI는 GUI보다 효율이 압도적으로 뛰어나다. 이러한 전문적인 환경에서는 GUI가 CLI의 효율을 따라잡을 수 없다.

7.3. 모바일 용도


안드로이드가 리눅스 커널 기반이라는 사실은 잘 알려져 있다. 다만 리눅스 커널 위에 구글이 따로 넣은 요소가 많아서 기존 GNU/리눅스 기술 스택과 다른 부분이 많다. 우분투 터치도 안드로이드만큼은 아니지만 마찬가지로 기존 리눅스 기술 스택과 다른 부분이 많다.
안드로이드에서도 Termux와 같은 리눅스 에뮬레이터를 사용하면 안드로이드 위에 데스크톱용 GNU/리눅스를 설치할 수 있다. 이를 이용하면 리눅스 GUI 환경도 제한적으로 돌릴 수 있지만 제약이 많아 대체로 터미널로만 사용한다.
안드로이드와는 별개로 기존 GNU/리눅스를 모바일에서도 사용하기 위한 시도들이 진행되고 있다. 리눅스는 커널과 데스크톱 환경이 분리되어 있다는 특징 덕분에 데스크톱 환경만 모바일용으로 적절히 만들면 기존 데스크탑 앱이 그대로 호환되는 스마트폰/태블릿을 만들 수 있다. 대표적으로는 PhoshJingOS가 있다.

7.4. 임베디드 기기 용도


공유기OpenWRT를 깔아 Python을 돌리는 등의 행동은 MS 윈도우즈 OS를 깔아서는 못 한다. 인터넷 공유기, CCTV 녹화기, UHDTV 기기 등등 가전용 단말기기에 리눅스가 사용된다. 키오스크, 각종 IOT 제어 기기등의 상업용 및 산업용 기기에도 리눅스가 사용된다. 그밖에 각종 임베디드 보드에서도 리눅스를 사용한다. 자동차 인포테인먼트 기기나 테슬라등 전기차에서 또한 리눅스를 쓴다.

7.5. 게임 용도


리눅스에서의 게임 플레이 방법은 다양하다. 리눅스를 공식적으로 지원하는 게임의 수량또한 늘고 있다.
첫 번째로, 스팀 게임들이다. 기획단계에서 스팀이 리눅스를 공식 지원하게 되었고, 그에 따라서 밸브 사 자체의 게임은 물론이고 스팀을 플랫폼으로 하는 게임들 중 리눅스로 만들어지는 게임이 대폭적으로 늘었다. (Counter-Strike를 한물 지난 컴퓨터에서 OpenGL로 돌려보자.) 사실, 리눅스 플랫폼 지원강화는 윈도우즈 마켓이 클로즈드 방식으로 변했기 때문이다. 밸브는 윈도우즈를 비난하는 언급을 했으며, 리눅스 플랫폼을 일종의 보험 용도로 인식하여 지원을 강화한다고 발표하였다.#
또한, 스팀에 Wine의 파생 버전으로 게임실행에 중점을 둔 '프로톤'을 탑재해 윈도우 게임을 리눅스에서도 실행도 가능하다.#
리눅스를 지원 안 하는 윈도우즈용 게임의 경우에는 KVM/QEMU GPU 패스스루를 사용하면 된다.
두번째로, OpenGL 계열 게임들은 와인을 활용하든 네이티브로 포팅이 되든 DirectX 기반보다는 어떻게든 리눅스에서 사용할 수 있게 될 확률이 높다.
게임사들이 맘먹고 포팅을 한다고 가정한다면, 성능 측면에서는 오히려 리눅스+OpenGL 조합이 윈도우+DirectX 조합을 능가할 가능성도 분명히 존재한다. 실제로, 윈7+DirectX 조합에서 레포데2 270 프레임을 찍었던 컴퓨터에 밸브가 리눅스+OpenGL로 소스엔진을 포팅하여 돌려봤더니 처음에는 6 프레임 나오던 것이 최적화가 진행되니 결국 315 프레임으로 윈도우에 비해 무려 20% 가까이 상승했으며, 이에 힘입어 윈도우에서도 DirectX 대신 OpenGL 조합으로 바꿔봤더니 역시 300 프레임으로 상승했다고 한다. 이미지 퀄리티 등의 문제가 있던 것도 아니었다고 하니, 리눅스 커널이나 OpenGL의 최적화 수준은 게임 측면에서도 윈도우에 뒤지지 않거나 혹은 그 이상이라는 결론이 나온다. 그래픽 드라이버의 문제[17]도 해결되었고 문서화도 정리되어있다.
OpenGL은 MS사의 DirectX가 따라하고 있는 모델로 마소의 DirectX는 OpenGL의 카피캣이라고 할 수 있다. DirectX 신 버전에서 이것도 된다며 게이머들의 가슴을 설레게 하던 것 중에는 사실 OpenGL에서 이미 한참 전에 구현이 되어있던 것도 많다. 예를 들어 DirectX 10 이후 지원되기 시작한 앰비언트 오클루젼 기술은 OpenGL 1.5를 가지고도 코드를 만들어 낼 수 있다. 현재도 전문적인 용도에서는 OpenGL을 많이 사용하며, DirectX가 뒤를 쫓고 있는 중이다.
존 카맥이드 소프트웨어에서 출시하는 PC 게임은 거의 다 리눅스를 지원한다. 물론 패치도. DirectX를 사용하지 않고 OpenGL을 사용하기 때문에 가능한 모양. 철지난 게임들[18]의 바이너리 파일을 리눅스용으로 공개하였다.[19]
세번째로, Braid나 World of Goo 등의 몇몇 인디 게임들도 리눅스용 Full 버전을 팔고 있다. 그리고 자유 소프트웨어로 웬만한 상용 버전 보다 더 빵빵한 웨스노스 전쟁도 있다.
네번째로 에뮬레이터를 거치는 게임은 대부분 리눅스에서도 사용할 수 있는 에뮬레이터가 있기 때문에 큰 문제 없이 사용할 수 있다.참고 마인크래프트 자바 에디션[20]와 같은 경우에도 Java 기반이기 때문에 문제 없이 실행이 가능하다.
다섯 번째로, Wine이 생각보다 최근 성능이 좋아지면서 이를 통해 플레이 할 수 있는 게임이 많아졌다.[21]특히 블리자드의 게임들이 지원이 빨라 최신 게임들이 모두 플래티넘 등급이라 거의 플레이하는 데 지장이 없는 수준이다. 그 외의 경우, WineHQ AppDB나 Lutris를 참고하자. Lutris를 사용하면 유저들이 삽질해가면서 만든 스크립트로 고생할 필요 없이 바로 게임을 실행시킬 수 있다. 특히 2019년 들어서 dxvk의 성능이 상당히 발전했기 때문에 사양만 받쳐준다면 다이렉트 X 전용 게임도 무리없이 돌릴 수 있다. 성능은 게임마다 다르지만 보통은 윈도우랑 비슷하거나 30 프레임 가량 떨어지는 경우가 많다. 배틀필드 5 섀도우 오브 더 툼 레이더
KVM/QEMU를 이용해 가상머신으로 게임을 돌리는 방법도 있다. 와인보다 성능이 좋고 완벽한 호환성이 있다는 장점이 있다. 엔비디아등의 GPU경우 VFIO 드라이버와 GPU 패스스루를 사용하면 가상머신에서 GPU성능이 실제 머신에서의 GPU성능과 95%정도로 동일하게 사용가능하다.

7.6. VFX


해외의 경우 렌더팜[22]은 물론 작업 컴퓨터도 리눅스로 되어 있는 경우가 많다. 주로 CentOSRHEL인데, 이는 윈도우보다 렌더팜 구성 등에 용이한 이유도 있지만, 실리콘 그래픽스의 워크스테이션을 쓰며 성장한 8,90년대의 VFX업계가 2000년대에 들어서 SGI를 손절(...)해버리고 리눅스로 갈아탄 역사가 있기 때문이다. 이러면서 IRIX[23]에서 돌아가던 소프트웨어들도 그대로 리눅스로 포팅하게 된다. 상용 프로그램들은 물론이고, 인하우스 프로그램들과 파이프라인에서 사용하는 스크립트들도 IRIX용으로 작성된 것인데 이를 윈도우로 옮기는 것은 비용이 매우 크니까[24] 가격이 더 저렴하고 IRIX와도 비슷한 리눅스로 옮겨간 것이다. 물론 후술하겠지만 윈도우나 맥을 쓰지 않는다는 것은 아니다. 아예 주력으로 쓰는 회사들도 있지만 대부분의 경우 파이프라인의 일부일 것이다.
이렇게 업계와 함께 프로그램들이 유닉스, 그리고 리눅스로 성장해왔고 딱히 윈도우즈로 옮길 이유는 없었기에 대부분의 프로그램들은 리눅스를 지원하고 있다. 물론 일반적으로 회사 내부에서나 리눅스를 쓰지 집에서는 프리랜서나 학생, 개인들은 개인컴으로 여러 가지를 겸해야 하기 때문에 요즘에는 윈도우즈 보다 리눅스를 쓰고 있는 경우도 많다.
유명한 Maya, Nuke, Katana, XSI, Clarisse, Mari, Fusion, Arnold, Renderman 등은 모두 리눅스를 지원한다. 특히 렌더러들은 렌더팜에서 돌아가는 것이 전제임으로 모두 지원하고 있다. 다만, ZBrushCinema 4D등의 리눅스 미지원 프로그램들도 있다.[25] 이런 경우는 아예 게임쪽 업계에서 사용하기 시작한 프로그램이거나, 여러 사정으로 윈도우나 맥용으로 시작했으나 이미 성장한 상태에서 포팅하기는 비용이 큰 경우도 있다. 이런 경우는 해당 프로그램이 지원하는 OS를 설치한 컴퓨터를 따로 쓰거나, 아예 VM에서 돌리기도 한다.

8. 리눅스 시장 점유율 현황


웹서버, 클라우드 서버 시장에서 압도적 점유율을 보이고 있다. 웹서버만 보고 단순히 전세계 100만 개 도메인을 조사해 보면 96.5%가 리눅스 서버라고 하기도 하고 #, 알렉사 기준 많이 쓰는 도메인을 기준으로 보면 70%가 리눅스 서버라고 한다.# 인터넷 서비스 용도로는 윈도우나 유닉스 서버는 보기가 어려울 정도로 대세가 되어 있다. 다만 게임 업계에서는 회사의 개발 인력이 윈도우 환경에 익숙하기도 하고 게임 클라이언트와 같은 소프트웨어를 돌려야 하는 경우가 있어 윈도우 서버를 쓰는 경우도 있다.
모바일에서도 실질적으로 리눅스가 장악하고 있다고 할 수 있다. 리눅스 기반의 안드로이드는 80%가 넘는 점유율을 보이고 있고 국내도 비슷한 점유율을 보인다. 안드로이드에서 리눅스 앱을 돌릴수도 있다. 애플의 iOS역시 BSD/Unix/Linux 계열의 OS이다.
카-인포테인먼트 시장에서 강세였던 MS의 임베디드 윈도우즈 역시 2010년 중후반부터 리눅스에 따라 잡힌 상태이다.
"11장 윈도우즈 대체 프로그램 일람"에서도 제시되고 있듯이 데스크톱 및 노특북에서도 리눅스로 윈도우즈를 완전히 대체가능하므로 흔히들 말하는 '리눅스 세계정복'도 머지않아 가능할 것이다. 가전, 모바일, 산업, 전기차등 임베디드를 포함하면 사실상 이미 리눅스가 세계를 정복한 상태라고 말할 수 있다.
빌 게이츠도 자신의 블로그를 캐싱하는 서버를 리눅스로 돌리고 있다. 자신의 블로그 서버는 윈도우다. MS가 비록 과거 제닉스라는 유닉스 운영체제를 잠깐 만든적이 있다.
구글은 원래 우분투 기반의 구분투(Goobuntu)라는 자체 운영 체제를 썼으나 데비안 기반의 지리눅스(gLinux)로 바꿨다.[26] 구글은 웹 서버구글 웹 서버라는 자체 소프트웨어를 사용한다.
슈퍼컴퓨터 OS의 경우 사실상 리눅스가 100%를 차지한다. 참조.
스페인 바르셀로나에서는 모든 소프트웨어를 우분투오픈 소스 소프트웨어로 바꾸기로 결정하였다. 윈도우가 없는 도시를 꿈꾼다 : 스페인 바르셀로나의 오픈소스 전면화 프로젝트 (2018-01-31)

9. 대중화 요소



9.1. 배포자의 다양화


리눅스용 애플리케이션 소프트웨어의 증가는 다양한 크로스 플랫폼 앱 디자인 개발 툴의 발달에 의한 것이다. 즉, 통합 프로그램 개발 환경인 IDE에서 리눅스 프로그램을 윈도우즈와 맥용 프로그램과 더불어 자동적으로 만들어 낼 수 있기 때문에 리눅스가 다시 대중화 플랫폼으로 재조명을 받고 있다. 그에 따라 당연히 윈도우즈 전용 개발 환경등 특정 플랫폼 만을 고집했던 소프트웨어 개발사들은 새로운 패러다임에서 경쟁력을 잃고 있다. 리눅스에서 불리했던 게임도 스팀이 리눅스를 지원하기 시작하면서 거의 다 해결되었다. 디바이스 드라이버나 소프트웨어 문제도 해결되었고 성능 및 보안 등 리눅스 플랫폼 자체가 가진 특징도 있다.
리눅스 커널이 기본 바탕이고 여기에 여러 배포자들이 있기 때문에 경쟁 구도이며 선택의 자유가 있다. 배포판이 달라도 같은 Linux Kernel과 잘 알려진 UX를 취사선택 가능하기 때문에 편리하다. 안드로이드 경우 SW 파편화8.0부터 안드로이드 트레블(Android Treble)을 적용해 해결하려 하고 있다.
최신 리눅스 커널 버전, 데스크톱 환경 DE (GNOME, KDE, Xfce, LXDE 등, 데스크톱 환경을 변경하기 위한 별도 DE 패키지로 추가 변경도 가능), Terminal/CLI/콘솔 (Bash 등등), 배포자 별로 제공되고 있는 디바이스 드라이버 버전 차이 확인 등등을 기준으로 리눅스 벤더를 선정 (입문자에게는 Ubuntu나 Fedora가 적합), 설치후 최적화 시키면 된다. 구글 안드로이드가 언급한 것들을 자체적으로 최적화한 경우이다.
높은 자유도와 수많은 배포자들간의 경쟁이 있는 것이 특징인 운영 체제인만큼 이는 계속 발전될 수밖에 없으며, 서버/임베디드 시장에서는 리눅스가 역으로 장점이고 데스크톱/랩톱 시장에서도 2010년 중후반부터 사용자가 늘고 있다. 참고로, 윈도우즈 환경에서 가능한 모든 기능을 대체할 리눅스용 앱/커맨드/스크립트들이 리눅스에 존재한다.

9.1.1. 데스크톱 환경


데스크톱 환경의 기반인 UX툴킷(SDK)들의 표준화 문제나 같은 툴킷 벤더 버전 별로도 사용법이 변경 되어 왔으나 2010년 중반부터 안정화 되어 가고 있다. 참고로, 과거 UX 툴킷의 급변과 라이브러리 사용법의 불안정화는 윈도우즈가 리눅스 보다 더 심했다.
GNOME 등의 UX와 Display Server 소프트웨어 프래임간의 통신 프로토콜에는 전통적인 X11과 새로운 Wayland, Quarz가 있다.
우분투의 경우, Wayland 디스플레이 서버 컴포지팅을 위해 Mutter가 사용된다.
각 리눅스 배포판의 디폴트 데스크톱 환경 하에서 GNOME, KDE, Xfce, LXDE 기반의 또다른 데스크톱 페키지를 선택하여 설치/변경도 가능하다. 데스크톱 용으로도 롤링 릴리즈라 오피스 등의 일상 프로그램을 깔아두고 매일 업데이트하며 쓰기 좋다. 맞춤 UX 룩을해서는 아치 리눅스젠투 리눅스를 추천하는데, 젠투는 직접 컴파일해서 설치하는 방식이라 어렵고 시간이 소모된다.[27]

9.1.2. 커맨드 셸


CLI라고 그런게 아주 없지는 않다. 패키지 관리자야 배포판마다 각자의 철학이 있으니 그렇다 치더라도, 2016년 기준, 최근 몇 년 사이에 인터넷 설정과 시스템 초기화에 사용되던 대세 프로그램이 각각 ifconfig에서 ip로, 그리고 SysV init 혹은 OpenRC에서 systemd로 변경된 예가 있다. 이 두 예시 모두 좀 더 나은 성능과 더 깊이 있는 레벨의 설정을 고려하여 만들어진 것이다.
셸 스크립트를 실행하고 CLI 환경을 관리하는 리눅스 셸마저도, Bash가 사실상의 표준이기는 하지만 데비안 계열은 실상 Bash가 아닌 Dash를 사용하여 미묘한 부분에서 호환성 문제가 발생하는 데다가 일부 배포판에서는 zsh이나 다른 셸을 기본 셸로 지정하는 등의 예가 있다. 이것 또한 기본적으로 셸이 지켜야 할 부분 이외에는 어떤 확장을 추가하더라도 문제가 없기에 발생하는 일.[28]
그 외에도, 한 배포판 내에서도 같은 이름의 툴인데도 BSD판 툴과 GNU판 툴이 저장소에 공존하기도 하고, python이라는 명령어에 어떤 배포판은 python2를 매핑시켜놓고 어떤 배포판은 python3을 매핑시켜놓는 등 파고들수록 여러 가지 문제를 찾을 수 있다.

9.2. 애플리케이션 설치/관리 방법


리눅스에서 애플리케이션 소프트웨어를 설치하고 관리하는 방법에는 다음과 같은 것들이 있다.
  • 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) 시스템 덕분에 공용 라이브러리가 설치되어 있는지 확인하기가 쉬워 라이브러리를 최대한 프로그램과 별개로 빼내어 설치하여 프로그램의 구성 파일이 중복되는 상황을 줄인다. 구성요소는 패키지 설치시 자동 감지 설치 된다.
패키지 시스템에서는 패키지 내에 의존성을 명시하고 리눅스 배포판들은 의존성이 모두 맞춰진 프로그램 세트를 구할 수 있도록 별도의 저장소를 만들어 두곤 한다. 각 프로그램이 문제 없이 돌아갈 수 있도록 안정 버전을 모아두는게 주요 목적인 만큼 필요한 구성요소를 버전별로 갖춰두고 각 프로그램마다 필요한 버전을 가리키도록 하는 것으로 문제를 해결하는 것이 보통이다.[29] 프그램을 찾으려고 여기저기 돌아다닐 필요도 없고 같은 요소를 중복 설치할 필요도 없고 보안 업데이트 등을 OS가 알아서 관리해 주고 필요한 것들은 알아서 선택해 주는등 편리하다. 이런 시스템은 지속성에 도움을 주기도 한다.[30]

9.3. 상용 프로그램


GNU/Linux OS 커널의 소스코드 라이선스가 GPL이라고 해서 리눅스에서 돌아가는 소프트웨어가 모두 자유 소프트웨어이거나 오픈소스 여야 할 필요는 없다.
아이폰의 AVPlayer가 그러하듯 자유 소프트웨어=무료 소프트웨어라는 공식은 잘못되어있다. 실제로 많은 자유 소프트웨어 프로그램은 지금도 유료로 팔리고 있고 이러한 유료로 팔리는 자유 소프트웨어 중에선 레드햇과 같은 유명 프로그램도 많다.
구글 안드로이드의 수익은 구글 플레이를 통한 거래의 수수료에서 나오지만 안드로이드 기술 자체는 엄연한 구글 소유다. 제조사는 안드로이드 인증을 받기 위해선 구글로부터 직접 기기 인증 요청을 해야 하고 이 과정은 결코 '무료'가 아니다. 이는 오픈 소스 라이선스를 가진 프로그램들이 주로 취하는 유료 정책 중 하나이기도 하다. MySQL은 오픈소스 부분만 포함한 커뮤니티 버전은 무료이고 오라클에서 수정한 부분을 포함한 버전만 유료에 상용 라이선스다. 다만 오라클이 수정한 부분을 사용함으로써 얻는 이득은 미비하고 유료 버전을 구매하는 이유는 레드헷이 그러하듯 오라클로부터 직접 고객 지원을 받을 수 있기 때문이다. 여담으로 현재 대부분의 리눅스 배포판은 MySQL 대신 커뮤니티 버전을 fork한 MariaDB로 대체했다. Java의 가장 널리 쓰이는 JVM인 HotSpotVM은 OpenJDK로 오픈 소스로 제공되지만 실상은 오라클이 소유한 엄연한 '상용 소프트웨어'이다. 또한 Java 기술 자체는 유료가 아니다. 안드로이드의 달빅 가상머신이 이미 Java 기술 저작권 침해로 오라클과 소송을 진행 중이다. 즉 Java도 엄연한 상용 기술이다. 다만 개발자들이 그렇게 느끼지 못할 뿐인데 이는 오라클에 합병되기 전 썬 마이크로시스템즈가 가진 Java 라이선스 정책에 의해 그렇게 느껴질 뿐이다.
하지만 이러한 프로그램들은 유명하고 널리 알려져 있기 때문에 그게 아니면 딱히 대적할 프로그램이 없는 경우가 많지만 치열한 경쟁 상대가 많은 소규모 회사나 개인 개발자가 제작한 프로그램은 다른 프로그램과 차별성을 두지 못하면 뒤쳐지기 쉽기 마련이다. 자유 소프트웨어로 배포하면 이러한 차별성을 두는 것에 이점을 상당량 잃게 되므로 상용 프로그램을 판매하는 회사는 자사의 프로그램을 자유 소프트웨어로 배포하는걸 꺼리게 된다. 특히 국내에서는 고전적 개발환경만을 고집하고 모던 IDE 디자인 툴 사용 능력이 없어 리눅스등 크로스 플랫폼 버전을 만들지 못하는 소프트웨어 제작사들이 많은데 리눅스 등의 자유소트트웨어 진영에 참여하지 못하고 있는 이유이다.
구글이 사용하는, 크로미움-구글 크롬이나 AOSP-안드로이드처럼 오픈 소스 프로젝트를 후원하고 브랜딩만 붙여서 상용 소프트웨어로 만드는 효율적인 구조의 예도 있으나 일단 전제조건이 오픈 소스 프로젝트가 일단 성공해야 그 뒤의 커뮤니티 지원이 성공적으로 이루어진다는 점, 그리고 직접적인 수익은 기대할 수 없다는 점에서 구글이라서 가능한 전략이라고 봐야 할 것이다.

9.4. 명령어 및 텍스트 사용환경


터미널이라고 줄여 부르는 터미널 에뮬레이터(Terminal Emulator)는 사용자가 데이터를 입력 출력하는 프로그램이며 사용자는 터미널 에뮬레이터를 통해 응용 프로그램에 접근하는 구조로 되어있다. 즉 터미널은 종류에 따라 CLI 또는 텍스트 유저 인터페이스(TUI), 넓게 보면 GUI 환경을 쓸 수 있도록 하는 프로그램이다.
GUI와 터미널이 공존하고 있다. 터미널 명령어가 존재하기 때문에 여러 가지 문제가 생겼을 때 터미널 명령어만 따라 입력해주면 바로 해결이 가능해서 오히려 GUI 보다 문제 해결에 훨씬 유리한게 터미널이다. 모든 유저들이 터미널 명령어로 일을 해결하고 싶어하는 것은 아니다! 실제론 터미널 명령어를 쓰는 것보다 복잡하더라도 GUI를 통해 일을 해결하고 싶은 사람들도 아주 많고 그것은 지금의 리눅스의 데스크톱 점유율이 확실히 입증한다. 다만 요즘 외국의 해결책 설명은 GUI 기반의 방법으로 먼저 하고 그 다음 콘솔 해결책을 표시해주기도 한다. 국내에는 유저층이 적어서 이러한 면이 아직 정착이 덜 된 것이 문제. 당장 나무위키의 여러 리눅스 관련 문서들도 터미널 명령어로 설명을 퉁치는 서술[31]들이 많다.
리눅스를 잘 모르는 일반인들은 왠지 검은 바탕의 흰 글씨의 프롬프트로 대변되는 CLI[32]를 떠올린다. 현재는 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는 문법 자체가 매우 비효율적이라[33] bash가 차라리 낫다. bash는 일단 쉽지 않다고는 해도 리눅스의 수많은 셸 중에서 경쟁을 거쳐 가장 많이 사용되는 셸이니 어느 정도 검증돼 있다고 볼 수 있다. 만약 꼭 bash나 타 셸을 써야 할 필요가 없다면, 셸을 간단히만 배우고 파이썬을 셸 대신 사용하여 리눅스를 활용하는 것도 가능하다. 문법이 직관적인 것은 물론이고 생산성도 더욱 높으며, 무엇보다 필요할 경우 파이썬 내에서 리눅스 셸 스크립트도 실행시킬 수 있다.
하지만, 파이썬을 따로 설치해야 하고 한 줄 한 줄 명령어를 입력해야 하는 상황에서는 별로 적합하지 않다는 단점이 있다. 말 그대로 셸 스크립트를 짜야 할 만한 반복적이고 정교한 작업이 필요할 경우 파이썬이 셸 스크립트를 효율적으로 대체할 수 있다는 것일 뿐, 완벽하게 대체하지는 못한다.
전통적인 Unix 환경이 그러하듯이 원격 접속은 기본적으로 텔넷이나 SSH 등을 통해 CLI 환경으로 접속이 가능하다.[34] 때문에 웹호스팅 등에서 서버에 접속하는 것이 바로 리눅스의 SSH 원격접속이다. 윈도우즈10부터는 리눅스 서브시스템이 탑재되어 bash와 SSH를 네이티브로 사용할 수 있는 선택지가 생겼다. 텔넷PC통신 시절에 많이 쓰던 그것이다.[35] 단, 텔넷은 암호화가 안 되기 때문에 보안성이 낮아서 요즘은 거의 안 쓰고, 암호화 통신을 하는 SSH를 많이 사용한다. 서버 관리 부분에서는 CLI 환경의 장점이 훨씬 많아서, MS도 PowerShell, netsh, Windows Terminal 같은 CLI 솔루션을 제공하고 있고 GUI에 의존적인 면을 줄이기 위해 노력하고 있다.
명심하자. 윈도우즈의 PowerShell이 왜 나왔겠는가? GUI 환경으로 누구나 쉽게 설정 가능하도록 되어 있는 것은 일반 유저를 위한것이다. 리눅스의 CLI환경, 일반 사용자가 따라하기 어려운 전문가적 설정은 파워 유저나 수펴유저를 위한 것이다. 리눅스역시 GUI 환경을 각종 theme 패키지를 통해 최적화 가능하다.

9.5. 다국어 지원


리눅스는 영어권 사용자를 대상으로 개발되고 있고 각 국가의 사용자들이 커뮤니티 차원에서 다국어 지원을 추가하고 있다. 라틴 캐랙터 계열 문자 사용 국가는 다국어 지원이 잘되는 편이나 한글화는 기대하지 않는게 좋다. 리브레 오피스에서 한글 스펠링 체크 애드인도 있다. 리눅스의 상용판인 레드햇이나 OpenSUSE 또한 팔리는 수준 만큼만 부족한 로컬라이징을 보완해서 출시하고 있다. 영어가 국제화인 시대이고 프로그램을 만든 국가가 대부분 영미권 이기 때문에 용어를 그대로 따르는게 편리하다.
오픈소스 자유 소프트웨어가 아닌 리눅스판 상용 프로그램을 국내에 판매한다면야 한글화를 옵션으로 지원해 주어야 할것이다. 윈도우즈나 맥용 프로그램 역시 한글화가 안되어 있는 경우가 태반으로 많다.
운영체제 레벨에서 한글이나 한자에 대한 지원도 잘되고 있다. 한국어 인터페이스도 설치 가능하고 우분투 경우 한글이나 한자 입력키 문제 경우 IBUS를 다른 입력기로 바꾸기 보다 20.04버전 경우 /usr/share/X11/xkb/symbols/kr 키보드 설정 파일에서 default를 kr104 항목에 위치시키면 간단히 해결된다.

9.6. 디바이스 드라이버 지원


리눅스 각각의 벤더들이 반도체사에서 제공하고 있는 리눅스용 디바이스 드라이버를 기반으로 각 배포판에 최적화를 시키고 있다. 그래픽 드라이버 경우 반드시 리눅스 배포자가 제공하는 것을 버전별로 선택하여 사용하여야 한다. nouveau 드라이버는 성능 저하 문제가 있으며 gpu제조사 드라이버를 직접 설치시 문제점이 있다. 인텔 iGPU경우 리눅스 커널 버전업시 자체 지원되고 있고, 참고로 Nvidia Optimus 경우 퍼포먼스 모드에서 스크린 Tearing 문제는 nvidia-drm[36] modeset 값을 1로 설정 해주어야 sync가 이루어져 테어링 문제가 없다. 반도체사나 주변기기 디바이스 드라이버 제조사에서 리눅스용 배포판을 윈도우즈용 디바이스 드라이버 버전과 거의 동시에 출시하고 있는 상황이다.
GNU/리눅스 OS 커널의 소스코드는 GPL이지만 거기서 실행되는 애플리케이션은 오픈소스로 프로그램으로 배포할수도 있고 상용 클로즈드 소스 프로그램으로도 배포할 수 있다. 유료 소프트웨어 보다는 자유 소프트웨어가 풍부하다.
PC 계열 이외의 임베디드 SoC 칩/보드에 대한 지원 양상을 보면 MS 윈도우즈 보다 리눅스 계열의 지원이 빠르면서도 충실한 경우가 많다. 윈도우즈 계열이 SoC/보드레벨에서 지원 범위가 극히 좁은 이유는 윈도우즈 라이선스 비용뿐아니라 PC용 CPU에 비해 훨씬 다종 다양한 SoC 제품군들에 대한 지원을 일일이 해줄 수 없다는 점이 크게 작용한다. 전력관리 기능이나 소비전력 효율화도 PC 운영체제나 CPU 보다 적극 도입되고 있다. 전용 드라이버 지원도 빠르다. SoC 시스템 사업구조가 PC용 CPU와는 상당히 다른 탓이 크다. SoC 업체들은 스스로가 주도하여 각종 리눅스 커널을 자사 전용 SoC에 맞춰 포팅하는 작업을 해야 하고 주변장치 드라이버 최적화등은 그 과정에서 자연스럽게 반영되기 마련이다. SoC 주변기기나 기타 라이선스 문제 역시 SoC 업체에서 주도적으로 해결하여 공급가능하므로 그러한 구심점이 없는 윈도우즈에 비해 문제해결이 한결 수월한 경향이 있다.

9.7. 설정법


7.2장 데스크톱 용도란의 설치후 리눅스 최적화 개요 참고 바란다. 배포자간의 공통된 리눅스 커널 덕분에 DE 및 CLI를 통해 모든 설정이 가능하다. 윈도우즈 보다 전문적인 셋팅이 가능하다. 새로운 기능이 도입되거나, 다른 프로그램과의 충돌을 피하거나, 사용자에게 더 많은 선택지를 주거나, 다른 프로그램과의 호환성을 높이거나, 편의성을 높이려고 하거나, 사용자별로 설정을 다르게 하거나 하는 등의 이유로 한 프로그램에 설정 파일이 여러 개가 있는 경우가 있다. 설정 파일의 위치가 로컬 및 글로벌로 되어있고 파일 익스텍션 명도 분리되어있다.
리눅스 상에서는 조합에 따라 다른 프로그램을 쓸 수도 있고 안 쓸수도 있기 때문에 신호나 출력이 거쳐가는 프로그램마다 각자 설정을 가지고 있는 경우가 많으며 대형 배포판에서는 여러 사용자의 요구를 커버하기 위해 여러 가지 프로그램을 모아 놓게 된다. 물론 GUI 내에서만 얌전하게 놀면 해결될 문제일 수도 있지만, 리눅스 초보 사용자들은 여러 프로그램을 깔거나 복잡한 설정 파일을 직접 건들지 않는게 좋다.

10. 배포판


리눅스/배포판 문서 참고

11. 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라기 보다는 유닉스 및 리눅스 진영을 카피한 측면이 많다.

12. Windows 대체 프로그램 일람


  • MS 오피스리브레오피스, WPS 오피스
  • MS 비주얼 스튜디오 → GNOME Builder, Glade[37], IntelliJ IDEA, Android Studio[38], 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[39], PDF Studio[40], Evince, Okular, 리브레오피스Draw[41]
  • 아웃룩 → 썬더버드, Evolution 등
  • 메모장 → CherryTree[42], gedit, Kate, Leafpad, Mousepad, JEdit, Notepadqq 등
  • 미디어 플레이어 → VLC, SMPlayer, MPlayer, mpv[43]
  • 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[44], Cinelerra(GTK), Kdenlive(KDE), Shotcut[45]등이 있다. AA Translator 프로그램을 이용해서 EDL→Ardour 형식 변환도 가능하다.
리눅스에서 게임 디스트리뷰션 앱인 Steam을 깔아 34,000개 이상의 최신 게임을 즐길 수 있다. 가상머신 프로그램 없이 리눅스 Wine으로 윈도우즈 클래식 게임을 직접 실행도 가능하다. 월드 오브 워크래프트 같은 경우 와인 폴더 내에 설정 파일에서 한 줄만 바꿔주면 된다. PlayOnLinux를 사용해서도 리그 오브 레전드 등을 플레이할 수 있다.
키보드/마우스 같은 입력장치의 경우 xbindkeys나 xinput으로 리눅스에서 튜닝하여 설정가능하다. PiperSolaar와 같은 서드파티 유틸도 있다. 온보드 메모리를 탑재한 게이밍 기어를 이용하면 윈도우즈나 macOS에서 세팅한 값을 리눅스에서 그대로 사용하는 것도 가능하다.
오래된 아톰을 쓰는 넷북에서도 인터넷 브라우징, 파일 저장 및 서버 등의 용도로 리눅스를 설치하여 비교적 빠르게 쓸 수 있다. 리눅스에서 가상 머신 프로그램을 이용하여 윈도우 한정판을 돌려도 된다. QEMU는 가상머신 VM에 리눅스가 점유하고 있는 GPU를 full pass-through하나거 공유하여 실제 머신(host os)에서와 같은 GPU 성능을 얻을 수 있다.

13. 관련 문서



[1] #[2] 출처: #[3] 책의 이름이다. Microsoft, Apple등에서 개발하는 운영체제는 폐쇄적이며 내부를 알 수 없는 '성당'으로, 리눅스를 쉽게 내부를 볼 수 있고 알 수 있는 '시장'으로 비유했다.[4] LFS, 젠투, 아치 리눅스 같은 경우 그 모든 걸 유저가 선택해서 쓰는 걸 목표로 하고 있다.[5] NetBSD의 경우 지원되는 CPU 플랫폼이 11개 정도이다. NetBSD의 모토는 "Of course it runs NetBSD!" 이다.[6] 코어를 켜고 끄는 건 바이오스에서 설정해야 하는 것이 일반적이다. 그것을 OS가 작동할 때 설정할 수 있다는 소리다.[7] 이전에도 PS3 크랙 시도가 있긴 있었으나 이 사건을 빌미로 PS3 보안이 완전히 붕괴되었다고 봐야 한다. 해커들로서는 뭐가 오픈되었던 것이 다시 사라지는 것을 해킹의 대의명분으로 쓰기 참 좋기 때문. 참고로 이전에 PSN 해킹 대란이 원인이라 되어 있었는데, 이건 2011년 일이다.[8] 한때 전세계 33위, 미 국방부의 실시간 조작이 가능한 컴퓨터 중에서는 1위의 성능을 가진 물건이었다고 한다.[9] 엔터프라이즈용 유료 프로그램 경우 소프트웨어 비용에 기술지원등이 포함됨을 의미한다.[10] #[11] #[12] 이 사건의 여파가 상당이 컸는지 요즘 나오는 배포판들은 대부분 해시값을 확인하라고 하며 아치 리눅스같이 자체적으로 해시값이 일치하는지 확인하는 프로그램도 깔려있는 경우도 많다.[13] 윈도우 서버, 윈도우 시스템이라고도 한다[14] GTK+에서 GTK로 명칭이 변경되었다. 무료이며 GTK 라이브러리 소스코드 라이선스도 LGPL로 앱 소스코드 공개의무가 없다.[15] 오픈소스 앱에 적합. 앱을 클로즈드 소스로 판매/배포 하려면 구독형태의 상업용 라이선스를 구입하여야 한다. 가격은 연간 $3,950이고 UI 빌더 툴도 별도로 연간 $999이 추가된다. 공식 기술지원이 없는 커뮤니티 라이선스의 경우 무료로 사용가능하나 GPL 라이선스로 빌드했거나 Qt Charts등과 같은 GPL로 배포되는 모듈을 사용하는 경우 앱 소스코드를 공개해야 한다, 앱 소스코드 공개없이 사용하려면 유료 라이선스를 구입해야 하거나 LGPL 로 빌드하고 GPL에 해당되는 모듈을 쓰면 안 된다.[16] 데스크탑용 GUI 환경을 그대로 사용할 수도, 필요 없는 부분을 치우고 아주 가벼운 GUI만 사용할 수도, 아니면 아예 사용하지 않을 수도 있다.[17] 밸브가 소스엔진을 리눅스에 포팅할 때도 그래픽 카드 제조사들과 긴밀히 협조해서 드라이버 개선(특히 멀티스레딩 지원)을 동시에 진행했다.[18] 둠3, 퀘이크3, 리턴 투 캐슬 울펜슈타인 등.[19] 다만 게임은 실행 파일만으로 즐길 수 없으므로 윈도우용 카피에서 실행 파일을 제외한 패키지 파일들(.pak)을 가져와야 한다.[20] JE 1.12.2를 기점으로 UWP(Win10, Win10 Mobile), 안드로이드, iOS, tvOS, 엑스박스 원, Nintendo Switch용 버전은 마인크래프트로 통합되었고 원래 '마인크래프트'였던 Win32, 리눅스, macOS용 버전은 '마인크래프트 자바 에디션'으로 변경되었다.[21] 특히 게임 뿐만 아니라 어도비 소프트웨어도 추가 패치만 하면 가능한 것으로 알고 있다.[22] 렌더링을 위해 수십~수천개의 컴퓨터를 서버마냥 돌리는 것이다.[23] SGI에 탑재된 유닉스의 일종인 OS[24] 유닉스 셸에서 사용되는 스크립트를 전부 윈도우용 프로그램 또는 .bat으로 번역한다고 생각해보자(...)[25] 일부 프로그램들은 개인이 아닌 회사에만 리눅스 버전을 제공하기도 한다.[26] 구글, 사내 리눅스PC 우분투→데비안 갈아탄다[27] CLI 설치라 처음엔 머리가 아프지만, 익숙해지면 기본 설치/맞춤 설정까지 1시간도 채 안 든다! 하지만, 터미널 명령어는 다른 배포판들의 특성과 마찬가지로 명령어 변동이 있다. 꽤나 머리아픈 부분. 그럴 때는 아치 리눅스 위키를 참고하자.[28] 셸 스크립트의 경우 완전한 호환을 원하는 스크립트는
#! /bin/sh
로 시작하고, 특정 셸을 통해 실행되기를 원하면
#! /bin/(셸의 이름)
으로 시작하는 식이다. 물론 전자의 경우에는 제한된 기능만을 사용할 수 있다.
[29] 젠투, 아치, 데비안 sid 등 특별한 release 주기 없이 rolling-release를 사용하는 배포판은 모든 프로그램과 구성요소가 최신버전으로 유지된다. 이 경우 반대로 시스템이 불안정해지는 역효과가 나타난다.[30] 데비안 계열이 유명해진건 의존성 처리를 안해주던 기존 패키지 관리 기능(대표적으로 레드헷의 rpm과 기존 슬랙웨어의 tar 묶음 패키지 설치 방식)에 의존성 기능을 넣었기 때문이다.[31] 정작 뉴비들은 터미널을 어떻게 진입해야 되는 지조차 모른다.[32] Command-line interface, 명령줄 사용자 환경.[33] 반복을 위한 유일한 구문인 for문도 꽤나 기형적이고, continue나 break도 존재하지를 않아서 모든 반복문을 goto로 처리해야 한다! 이게 왜 문제냐면, 모두 goto로 처리하면 알아볼 수 없는 스파게티 코드가 될 가능성이 높기 때문이다.[34] Windows에서도 텔넷 등 CLI 환경으로의 원격접속을 지원하나 무엇보다 Windows의 경우 기본은 GUI이기 때문에 CLI 모드에서 할 수 있는 작업은 제한되어 있다. 따라서 CLI에서 작업을 해도 결국 GUI로 접속을 해야 하는 경우가 꼭 생긴다. 반면 리눅스는 대부분의 작업이 CLI에서 가능하기 때문에 GUI는 필요가 없는 경우가 많다. 그래서 아예 리눅스 설치시 GUI 부분은 제외하고 설치하거나 설치 후 GUI 부분을 삭제하는 경우도 많다.[35] 이 때문에 리눅스 환경에서는 다른 프로그램 없이 바로 telnet 명령 입력하고 PC통신 연결 주소 입력하면 PC통신 화면이 바로 떴다. 애초에 PC통신 자체가 리눅스의 원본(?)인 유닉스의 터미널 환경을 사용하기 때문에 리눅스에서도 그대로 되는 것. PC통신 프로그램은 이 터미널 환경을 도스나 윈도우 환경에서도 쓸 수 있게 에뮬레이션 시켜주는 프로그램이다.[36] Direct Rendering Manager[37] GTK용 비주얼 빌더. MS 비주얼 스튜디오의 XAML Designer에 해당[38] IntelliJ IDEA의 안드로이드 특화 버전. 비주얼 스튜디오는 리눅스판이 없으나 안드로이드 스튜디오는 리눅스판이 있다. 안드로이드 에뮬레이터도 지원하여 리눅스에서 안드로이드 앱 소프트웨어 디자인에 최적. Java, Kotlin, 또는 Flutter 프레임워크가 있다. 또한 웹브라우저에서 동작하는 웹 앱 소프트웨어 디자인도 가능하다.[39] 리눅스 와인으로 실행가능. 뷰어도 기본 편집 가능이 있다. 와인에서 폰트 설정을 하면 어노테이트시 한글 깨짐 현상도 해결된다. 키보드 단축기 설정이 필요하다. 와인/리눅스간의 이미지 copy/paste도 new docu from image등을 사용하면 된다.[40] 무료 및 유료 버전이 있다. HiDPI모니터 사용시 설정창에서 Nimbus를 GTK+로 변경하여야 한다.[41] PDF 편집툴로도 사용가[42] 원노트 대체툴이다.[43] MPlayer와 같은 커맨드 라인 플레이어. MPlayer의 포크로 쓸데없는 기능들을 지우고 몇몇 새로운 기능을 추가했다. 화질도 더좋고 가벼워 여러 프론트엔드 미디어플레이어에서 백엔드로서 사용된다.[44] 단순한 편집만 가능하다.[45] 이들 세 가지는 좀더 전문적인 편집도 가능하다. Shortcut은 윈도우나 맥OS도 지원한다.