Linux

최근 편집일시 :

분류






}}} ||

[ 펼치기 · 접기 ]





파일:Linux 로고(글자).png


개발
리누스 토르발스
플랫폼
AMD64, IA-32, ARM, MIPS, PowerPC, SPARC(64bit), RISC-V
개발 언어
C언어, 어셈블리어 및 기타 언어
커널 홈페이지
파일:Linux 로고(글자).png[[파일:Linux 로고(글자) 화이트.svg

1. 개요
2. 역사
2.1. 초기
2.2. 성장
2.3. 현재
3. 다양한 배포판
4. 다양한 플랫폼
5. 명칭 논쟁
6. 라이선스
7. 보안
9. GUI 환경
9.1. 구성 요소
9.2. 데스크톱 환경
9.3. UI / UX 툴킷
10. 주요 용도
10.1. 데스크톱 및 노트북
10.2. 서버 용도
10.3. 모바일 용도
10.4. 임베디드 기기 용도
10.5. 게임 용도
10.6. VFX
11. Linux 시장 점유율 현황
12. 특징
12.1. 배포자의 다양화
12.1.1. 데스크톱 환경
12.1.2. 커맨드 셸
12.2. 애플리케이션 설치/관리 방법
12.2.1. 의존성 관리
12.3. 상용 프로그램
12.4. 명령어 및 텍스트 사용환경
12.5. 다국어 지원
12.6. 디바이스 드라이버 지원
12.7. 설정법
15. macOS와의 차이
16. Windows 대체 소프트웨어 일람
17. 관련 문서




1. 개요[편집]


컴퓨터 OS 커널의 일종인 Linux 커널, 또는 Linux 커널을 사용하는 운영체제를 가리키는 말이기도 하다. GNU 쪽 사람들은 Linux는 커널일 뿐이고, 이 커널을 가져다가 GNU 프로그램들을 올려 만든 운영체제는 GNU/Linux라고 이야기하며 이런 명칭에 민감하게 반응하는 경우도 있다. 소스 코드가 공개되어 있는 대표적인 오픈 소스 소프트웨어다. 컴퓨터 역사상 가장 많은 참여자가 관여하고 있는 오픈 소스 프로젝트다. 모바일 운영체제로 유명한 Android 역시 Linux 커널을 가져다 쓰고 있다.

Linux라는 이름은 Linus' *nix, 리누스의 Unix라는 뜻으로 지어졌다. *nix는 Unix 계열 운영체제라는 뜻이다. 나중에 Linux Is Not UniX라는 재귀약자를 새로 만들어냈다.

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

2007년부터 2019년 사이의 Linux 커널 참여자 중 회사순위를 보면 1위 Intel (10.01%), 2위 Red Hat (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위 Texas Instruments (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위 Linux 재단 (0.78%) 등으로 모두 반도체/통신/IT/시스템 업체임을 알 수 있다.[2]

Linux 재단 공식 웹사이트

2. 역사[편집]



2.1. 초기[편집]


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

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


2.2. 성장[편집]


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

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


2.3. 현재[편집]


데스크톱/랩톱 용도뿐만 아니라 웹 서버, 클라우드 컴퓨팅, 모바일 기기, 임베디드 기기 등 여러 분야에서 폭넓게 사용되고 있다.

반도체 회사 및 Red Hat 등 Linux 운영체제 배포자들이 주로 Linux 커널에 참여하고 있다. 모바일 시장에서 Linux 커널을 쓰는 Android의 위상이야 더 말할 필요가 없을 정도이다.

Microsoft Windows에서는 Windows 10부터 Linux 커널을 탑재한 WSL(Windows Subsystem for Linux)을 포함시켜 Linux 환경을 지원하고 있다.[4] Linux에서도 와인, 와인을 기반으로 한 Bottles 등을 통해 Windows용 소프트웨어를 실행할 수 있다.


3. 다양한 배포판[편집]


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

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

운영체제 하나를 구성하는 데에도 핵심부 커널부터 해서 그 상위 미들웨어를 거쳐 사용자가 접하는 인터페이스에 이르기까지 수십~수백 가지의 프로그램이 들어가고 그걸 엔드유저가 직접 하나하나 신경쓸 순 없기 때문에[5] 배포자의 기준으로 하나의 세트(배포판)를 만들어 내고 사용자에게 배포된다.

Linux에 입문하는 엔드 유저는 배포판(벤더)들이 다양하다고 걱정할 필요가 없고 UbuntuFedora, Debian, 만자로등의 사용자 친화적 배포판을 사용하면 된다. USB나 SSD로 여러 배포판의 Linux OS를 설치없이 테스트 해볼 수 있는 장점도 있다.

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

Linux 커널 자체도 변형판이 있다. 각 배포판 제작 팀에서 자기 입맛에 맞춰 약간 씩의 수정을 가하기도 하고, 공식 Linux에는 포함되지 않은 패치를 집어넣어서 직접 컴파일 할 수도 있다.

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


4. 다양한 플랫폼[편집]


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

Linux는 CPU 핫플러그인도 지원한다. 컴퓨터가 작동되는 중에 작동되는 코어를 켜고 끌 수 있다는 소리다. 실제로 이 기능은 ARM big.LITTLE의 핵심 기능으로 사용되고 있다.[7]


위와 같은 Linux로 동작되는 전용 포터블 콘솔 게임기 말고도 닌텐도 64, 드림캐스트, 게임큐브, Xbox 360, Wii, Wii U, PS4, XBOX ONE에 모두 Linux를 설치가능하다. 다만, Linux 하드웨어 요구 사양이 과거에 비해는 다소 올라가서 Wii와 같은 7세대 이전의 게임기에서는 Linux 버전이나 앱에서 어느정도 타협을 봐야 한다.

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

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


5. 명칭 논쟁[편집]


'Linux'가 아니라 'GNU/Linux'라고 불러야 한다는 주장도 있다. 자유 소프트웨어 운동을 창시한 리처드 스톨먼도 'GNU/Linux'라고 부르지 않는 기자들과는 대화도 하지 않는다고. 사실 리누스 토르발스가 만든 것은 Linux 커널 뿐이며, OS의 구성물 대다수는 자유 소프트웨어 재단 하에서 만들어진 소프트웨어로 채워져 있다. 커널이 OS의 핵심이기는 하지만 분량은 극히 일부일 뿐이다.

하지만 리누스 본인은 GNU/Linux라 부르는 걸 이상하다 생각하고 Linux라 부르는 걸 선호한다. 'Linux'라는 상표를 가지고 있는 원 제작자가 좋아하지 않는 행위이다 보니, 이 쪽 관련으로 본인의 자서전에서 리처드 스톨먼을 언급하기도 한다. Linux 자체는 GNU프로젝트가 아닌데도 불구하고 FSF가 Linux를 GNU/Linux라고 하는 등의 GNU 프로젝트인 것처럼 포장 하는 행위를 별로 좋아하지 않는다. the fact that rms and the FSF has tried to paint Linux as a GNU project 특히 Android는 제일 많이 보급된 Linux 배포판으로 볼 수 있는데, 여기에 GNU의 프로젝트는 포함되지 않는다.

GNU/FSF 쪽 지지자들은, ①Linux 커널은 전체 운영체제의 일부에 불과하고, ②OS를 구성하는 주요 컴포넌트 중 상당수가 GNU 프로젝트에서 만든 것이기에, ③이를 이용해 만든 전체 OS는 "GNU 시스템의 일종"이라고 주장한다. 따라서 "GNU/Linux" 또는 "GNU 플러스 Linux"가 맞는 명칭이라는 것이다. 대부분의 Linux 시스템에서 사용되는 GNU 컴포넌트 중 몇 개만 예를 들자면,
  • GNU Core Utilities (통칭 coreutils): UNIX 명령행 유틸리티들. `cp`, `rm`, `mv`, `cat` 등 필수적인 명령어들이 여기에 포함되어 있다.
  • GNU Compiler Collections (통칭 GCC): C를 비롯한 각종 언어의 컴파일러.
  • GNU C Library (통칭 glibc): C언어용 라이브러리.
  • GNU GRUB: BIOS와 EFI 시스템을 위한 부트로더.
등 OS를 구성하는 데 있어 필수적인 컴포넌트를 여럿 만들었음을 알 수 있다.

반면 GNU 컴포넌트를 사용하지 않고도 충분히 전체 OS를 구성할 수 있다며, "Linux"라는 명칭을 지지하는 사람들도 있다. 예를 들어 coreutils는 Busybox로, GCC는 LLVM/Clang으로, glibc는 Bionic이나 musl libc로, GRUB은 syslinux나 u-boot로 대체할 수 있다는 것이다. (실제로 Alpine LinuxAndroid 같은 배포판이 비슷한 구성을 하고 있다.) 또 전체 OS를 구성하는 컴포넌트는 GNU와 커널을 제외해도 여러 가지가 있는데[10], 왜 GNU만 특별취급해서 이름에 넣어야 하냐는 지적도 있다.

이런 논쟁이 격해지다 보면 "커널이 운영체제의 '일부'에 지나지 않는다면, 왜 GNU는 Hurd[11]에서 그 '일부'를 30년째 못 완성하고 있냐"라는 주장이나, "GNU 프로젝트의 지원이 없었으면 Linux는 그냥 리누스의 취미활동으로 끝났을 것"이라는 극단주의자들도 종종 볼 수 있다.

데스크톱/서버 Linux를 Android와 구분하여 표현할 때 GNU/Linux라고 하기도 한다. Android는 Linux 커널을 쓰긴 하지만 그것 말고는 공통점이 적기 때문이다.


6. 라이선스[편집]


Linux 커널 소스코드는 GPL v2가 적용되며 라이선스 버젼이 고정되어있다. 이유는 '개조된 GPL 소프트웨어가 실행되지 못하도록 막는 DRM' 행태를 못하도록 하는 GPL v3조항에 Linus Torvalds가 반대했기 때문이다.(Tivo DVR등 임베디드 시스템에 Linux가 사용되고 있던 이유이다.) 등록 상표 사용는 2008년까지 유료였으나 그 이후 부터 무료로 사용이 가능하다.[12]

대부분의 오픈 소스 Linux 소프트웨어는 오픈 소스 라이선스를 적용시키는데, 그 종류에는 GPL, AGPL, LGPL, MPL, MIT, Apache, BSD 등이 있다. 이중에서 GPL과 AGPL 경우만 재배포시 소스 코드 배포 의무가 있다. GPL도 통신을 하여 사용하면 소스코드 배포의무가 없다.

Linux 커널이 GPL 라이선스로 배포되고 있기 때문에 Linux 상에서 동작하는 모든 소프트웨어도 GPL이여야 한다라는 주장을 하는 경우가 있는데 이는 사실이 아니고, Linux의 경우 GPL은 커널 소프트웨어에 한정되어 있고 그밖의 소프트웨어가 Linux 커널의 API를 콜하여 사용하는 것으로는 GPL의 파생 저작물(derivative work)에 해당 되지 않기 때문에 GPL과 통신을 하여 이용하면 소스코드 비공개 상용 소프트웨어를 제작/배포 하는 것이 가능하다. 시스템 콜을 하여 사용하는 것으로는 파생저작물이 아니라는 것을 명시화 한바 있다. 예를 들어 Android의 경우 GPL인 Linux 커널을 사용하고 있음에도 불구하고 소스 코드 배포 의무가 없는 Apache나 MIT 라이선스를 채택하고 있다.

그 외 유저 스페이스 어플리케이션, Linux 커널 소스 밖 드라이버 등에서는 각각의 소프트웨어 라이선스에 따라 소스 코드 공개 의무가 정해진다. 공개 의무가 없는 경우의 예시로 GTK나 Flutter 라이브러리를 사용한 앱은 소스 코드 공개 의무가 없는 LGPL이나 BSD로 배포할 수 있다. 또한 Linux의 차세대 디스플레이 프로토콜인 Wayland가 소스코드 공개/배포가 필요없는 MIT 라이선스를 채택하고 있으며, AMD와 NVIDIA의 Linux 그래픽 드라이버 역시 MIT 라이선스 혹은 클로즈드 소스로 배포된다.

대부분의 Linux 벤더는 각자의 커뮤니티 쪽에서 서포트를 관리하고 있지만, 소프트웨어는 무료로 제공하면서 기술 지원 서비스 등을 선택사항으로 하는 비즈니스 모델을 취하고 있는 경우도 있다. 상업용 서버나 기타 비즈니스용 소프트웨어를 사용하다가 어떠한 문제가 발생했을 때, 보통 보수적인 기업에서는 비용을 지불하고 전문 기술 지원을 받는 것을 선호하는 경향이 있기 때문이다. 예를 들면 Ubuntu를 배포하는 캐노니컬 같은 경우에는 기술 지원 계약을 통해 수익을 얻고 있으며(물론 막강한 후원자가 있기는 하지만), Red Hat의 경우 Red Hat Enterprise Linux라는 이름으로 솔루션 및 기업 서포트까지 제공하는 유료 프로그램을 판매하고 있다.

유료 기술지원을 받는 것은 선택사항이다. Linux 커널을 사용하는 RHEL 패키지 구성을 상표권등을 리브랜딩 하고 기술 지원 옵션없이 RHEL 소스코드를 참고하여 재배포하는 CentOS, Rocky Linux 등도 있다.

7. 보안[편집]


Linux 배포자가 분산되어 있고 악성코드가 주로 Windows를 타겟으로 하기 때문에 상대적으로 멀웨어로부터 자유로운 편이다.

하지만 다른 OS와 마찬가지로 보안 업데이트를 하지 않거나, 루트 사용자 관리를 잘못하면 보안 관련한 문제가 생길 수 있다. 유명 배포판인 Linux 민트의 홈페이지가 해킹 당해서 조작된 ISO 파일이 등록되는 사건도 있었다.[13][14] 그러므로 Linux 배포판 ISO를 다운받고 해시값까지 확인하는 것이 좋다.[15] 루트(슈퍼 유저) 퍼미션, 보안 키/인증서가 있는 저장소 사용, 백신으로 스캔, 방화벽(GuFw, Firewalld), 백업 유틸 등을 사용하여 예방할 수 있다.

Wine을 사용하는 경우에도 샌드박스 환경이 아니기 때문에 무조건 방심하면 안된다. 워너크라이의 경우 시스템 파일은 건들지 못했지만 Wine과 연결된 home 폴더는 암호화시킨 전력이 있다. 그러므로 Wine 대신 기본적으로 샌드박스 기술을 지원하는 Bottles등을 사용하면 안전하다.

8. 커널[편집]


파일:나무위키상세내용.png   자세한 내용은 Linux/커널 문서를 참고하십시오.


9. GUI 환경[편집]



윈도우와 macOS의 경우 GUI 환경이 시스템에 고정으로 포함되어 있으며 분리할 수 없다.[16] 반면 Linux에서는 커널GUI 환경이 분리되어 GUI 환경이 별도로 관리되고 있어 필요에 따라 선택하여 사용할 수 있다.

9.1. 구성 요소[편집]


Linux의 GUI 환경을 구성하는 요소로 디스플레이 서버, 디스플레이 매니저, 윈도우 매니저, 데스크톱 환경 등이 있다.

파일:linux-display-scope.png
Linux GUI 구성 요소

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


9.2. 데스크톱 환경[편집]


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


9.3. UI / UX 툴킷[편집]


프로그램을 디자인하면서 유저 인터페이스 UI를 구성하기 위해 사용하는 프로그래밍 툴로, SDK 또는 GUI 프로그래밍 라이브러리 라고도 한다. Linux를 공식 지원하는 대표적인 UI/UX 툴킷으로는 GTK[18], Flutter, Uno Platform, wxWidgets, Qt[19] 등등이 있다. 각 툴킷별로 UI를 그래픽 툴처럼 작성할 수 있는 별도의 비주얼 빌더도 있다. 상식적인 것이지만, UI/UX 비주얼 빌더 소프트웨어 소스코드가 GPL이라고 해서 거기서 추출된 XML등의 코드가 GPL을 따를 필요는 없다. 즉, XML을 하이드도 가능하다. UI/UX 툴킷 GUI 프로그래밍 라이브러리가 LGPL, MIT, Apache, BSD 등등일 경우 앱 소스코드 공개/배포도 불필요하다.

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


10. 주요 용도[편집]



10.1. 데스크톱 및 노트북[편집]


웹서버 관리나 프로그래밍 용도로는 Linux만큼 좋은 OS가 없다. 대부분의 어플리케이션들은 클릭 몇 번만 하면 설치 가능하다.
멀티미디어 기기 역시 Linux용 드라이버를 제공하고 있으며 무선 랜카드 등의 디바이스 드라이버도 각 반도체사에서 Linux 커널에 직접 참여하여 커널 자체에 포함시키고 있어 별도 드라이버 설치 없이도 자동으로 사용가능하다.

오피스 스위트의 경우, MS Office 대신 LibreOffice를 사용하면 된다. 기관에서 MS Office 문서가 사용되고 있으나 LibreOffice에서 MS Office 파일을 오픈-편집-저장을 지원하고 있다.

동영상 편집도 가능한데, Kdenlive와 ShotCut은 오픈소스 프로그램인데도 전문적인 기능을 제공한다.

대체 프로그램이 없을 경우 Linux에서 윈도우 프로그램을 직접 실행하게 해주는 Wine, Bottles나 kvm/qemu virt-manager등의 유틸로 가상머신을 사용할 수 있다.

게임 회사 밸브에서는 Linux를 게임 플랫폼으로 만들기 위해 많은 노력을 하고 있다. NVIDIA와 협력해서 Linux 기반의 게임 특화 운영체제 SteamOS를 만들기도 했고 다른 배포판에서도 Steam을 이용하여 최신 게임을 플레이할 수 있다.

10.2. 서버 용도[편집]


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

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

GUI가 없는 환경은 가벼워서 서버 성능에도 도움이 되고 보안에도 도움이 된다. Linux는 GUI를 선택적[20]으로 사용할 수 있지만 윈도우는 GUI 부분을 삭제하는 것 자체가 불가능하다.[21] 서버 관리에 있어서 CLI는 GUI보다 효율이 압도적으로 뛰어나다. 이러한 전문적인 환경에서는 GUI가 CLI의 효율을 따라잡을 수 없다.

그래서 예전에 소스 엔진 게임들의 멀티플레이 로비에서도 호스팅해주는 게임 서버(데디케이티드 서버)들의 운영체제는 반이 Linux였다.

구글은 원래 Ubuntu 기반의 구분투(Goobuntu)라는 자체 운영 체제를 썼으나 Debian 기반의 지Linux(gLinux)로 바꿨다.[22] 구글은 웹 서버구글 웹 서버라는 자체 소프트웨어를 사용한다.


10.3. 모바일 용도[편집]


Android는 Linux 커널을 가져다 쓰고 있는 사실은 잘 알려져 있다. Linux 커널 위에 GUI 앱 등을 위해 구글이 따로 넣은 요소가 많다. Ubuntu 터치도 Android만큼은 아니지만 마찬가지로 기존 Linux 기술 스택과 다른 부분이 많다.

Android에서도 Termux와 같은 터미널을 사용하면 Android 위에 데스크톱용 GNU/Linux를 설치할 수 있다. 이를 이용하면 Linux GUI 환경도 제한적으로 돌릴 수 있지만 제약이 많아 대체로 터미널로만 사용한다.[23]

Android와는 별개로 기존 GNU/Linux를 모바일에서도 사용하기 위한 시도들이 진행되고 있다. Linux는 커널과 데스크톱 환경이 분리되어 있어 데스크톱 환경만 모바일용으로 적절히 만들면 기존 데스크톱 앱이 그대로 호환되는 스마트폰/태블릿을 만들 수 있다. 대표적으로는 KaiOS, postmarketOS, Phosh, JingOS 등등이 있다.


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


CCTV, TV, 게임기나 노래방 기계같은 멀티미디어 기기부터 라우터나 휴대전화 같은 통신기기, 키오스크나 ATM 같은 무인 서비스 기기, 스마트홈, 로봇, 자동차 인포테인먼트 등 각종 통신이나 멀티미디어, 사물인터넷용 임베디드 기기에 Linux가 사용되는 경우가 많다. 산업용 각종 임베디드 보드에서도 Linux를 사용하는 경우가 많다.

10.5. 게임 용도[편집]


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

첫 번째로, 스팀 게임들이다. 기획단계에서 스팀이 Linux를 공식 지원하게 되었고, 그에 따라서 밸브 사 자체의 게임은 물론이고 스팀을 플랫폼으로 하는 게임들 중 Linux로 만들어지는 게임이 대폭적으로 늘었다. 현재 약 9천개 # 이상의 최신 게임을 즐길 수 있다. (카운터-스트라이크를 한물 지난 컴퓨터에서 OpenGL로 돌려보자.) 사실, Linux 플랫폼 지원강화는 윈도우 마켓이 클로즈드 방식으로 변했기 때문이다. 밸브는 윈도우를 비난하는 언급을 했으며, Linux 플랫폼을 일종의 보험 용도로 인식하여 지원을 강화한다고 발표하였다.# 또한, 스팀에 Wine의 파생 버전으로 게임실행에 중점을 둔 '프로톤(Proton)'을 탑재해 윈도우 게임을 Linux에서도 실행도 가능하다.# 와인으로도 실행이 불가능 한 윈도우용 게임의 경우에는 KVM/QEMU GPU 패스스루를 사용하면 된다.

밸브가 자사의 UMPC스팀 덱으로 인해 프로톤의 호환성에 많은 투자를 하고 있는데다, 게임사들도 스팀 덱 때문에 프로톤과의 호환성에 신경쓰기 시작했기에 앞으로 Linux 스팀 게임의 호환성 미래는 밝다고 볼 수 있다.

물론 위의 방법으로도 돌아가지 않는 게임들이 존재하는데, 안티 치트 프로그램을 사용하는 게임들이다. 배틀그라운드가 대표적이다.

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

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

존 카맥이드 소프트웨어에서 출시하는 PC 게임은 거의 다 Linux를 지원한다. 물론 패치도. DirectX를 사용하지 않고 OpenGL을 사용하기 때문에 가능한 모양. 철지난 게임들[25]의 바이너리 파일을 Linux용으로 공개하였다.[26]

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

세번째로 에뮬레이터를 거치는 게임은 대부분 Linux에서도 사용할 수 있는 에뮬레이터가 있기 때문에 큰 문제 없이 사용할 수 있다.참고 마인크래프트 자바 에디션[27]와 같은 경우에도 Java 기반이기 때문에 문제 없이 실행이 가능하다.

네번째로, Wine이 생각보다 최근 성능이 좋아지면서 이를 통해 플레이 할 수 있는 게임이 많아졌다.[28]특히 블리자드의 게임들이 지원이 빨라 최신 게임들이 모두 플래티넘 등급이라 거의 플레이하는 데 지장이 없는 수준이다. 그 외의 경우, WineHQ AppDB나 Lutris를 참고하자. Lutris를 사용하면 유저들이 삽질해가면서 만든 스크립트로 고생할 필요 없이 바로 게임을 실행시킬 수 있다. 특히 2019년 들어서 DXVK(DirectX 11 이하)와 VKD3D(DirectX 12)의 성능이 상당히 발전했기 때문에 사양만 받쳐준다면 다이렉트 X 전용 게임도 무리없이 돌릴 수 있다. 성능은 게임이나 사용 환경에 따라 다르지만 보통은 윈도우랑 비슷하거나 20~30 프레임 가량 떨어지는 경우가 많다. 배틀필드 5 섀도우 오브 더 툼 레이더

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

콘솔 게임기나 아케이드 게임기에도 들어가는 경우가 있으며, 스팀 덱등에 Linux 커널이 쓰이고 있다. 참고로, Xbox는 윈도우 OS나 다름없고 플레이스테이션, 닌텐도는 FreeBSD에 기반하고 있다.

10.6. VFX[편집]


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

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

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

11. Linux 시장 점유율 현황[편집]


웹서버, 클라우드 서버 시장에서 압도적 점유율을 보이고 있다. 웹서버만 보고 단순히 전세계 100만 개 도메인을 조사해 보면 96.5%가 Linux 서버라고 하기도 하고 #, 알렉사 기준 많이 쓰는 도메인을 기준으로 보면 70%가 Linux 서버라고 한다.# 인터넷 서비스 용도로는 윈도우나 Unix 서버는 보기가 어려울 정도로 대세가 되어 있다.

모바일에서도 실질적으로 Linux가 장악하고 있다고 할 수 있다. 모바일용인 Android가 Linux에 기반하고 있기 때문이다.

데스크탑 시장에서는 윈도우가 유료로 금액 측면으로는 통계상으로 유리하게 잡히고 있으나, Linux의 GUI 데스크탑 환경인 GNOME이 버전 40.0+ 부터 연속하여 사용성이 게선되고 있어 Linux는 데스크탑 시장에서도 전망이 좋다.

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

슈퍼컴퓨터 OS의 경우 사실상 Linux가 100%를 차지한다. top500 참조.

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

12. 특징[편집]



12.1. 배포자의 다양화[편집]


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

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

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

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


12.1.1. 데스크톱 환경[편집]


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

어플리케이션 클라이언트와 Display Server 사이의 통신 프로토콜에는 기존방식의 X11과 새로운 Wayland가 있다.
GNOME의 경우, Wayland 컴포지팅을 위해 Mutter가 사용되고, KDE의 경우에는 Kwin이 사용된다.

각 Linux 배포판의 디폴트 데스크톱 환경 하에서 GNOME, KDE, Xfce, LXDE 기반의 또다른 데스크톱 페키지를 선택하여 설치/변경도 가능하다. 데스크톱 용으로도 롤링 릴리즈라 오피스 등의 일상 프로그램을 깔아두고 매일 업데이트하며 쓰기 좋다. 맞춤 UX 룩을해서는 Arch LinuxGentoo Linux를 추천하는데, 젠투는 직접 컴파일해서 설치하는 방식이라 어렵고 시간이 소모된다.[33]


12.1.2. 커맨드 셸[편집]


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

셸 스크립트를 실행하고 CLI 환경을 관리하는 Linux 셸마저도, Bash가 사실상의 표준이기는 하지만 Debian 계열은 실상 Bash가 아닌 Dash를 사용하여 미묘한 부분에서 호환성 문제가 발생하는 데다가 일부 배포판에서는 zsh이나 다른 셸을 기본 셸로 지정하는 등의 예가 있다. 이것 또한 기본적으로 셸이 지켜야 할 부분 이외에는 어떤 확장을 추가하더라도 문제가 없기에 발생하는 일.[34]

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


12.2. 애플리케이션 설치/관리 방법[편집]


Linux에서 애플리케이션을 설치하는 방법은 여러 가지가 있는데 크게 분류하여 다음과 같다.

- 소스코드를 받아서[35] 직접 컴파일 후 설치하는 방법. 가장 고전적인 방식이다.
- 시스템 패키지 매니저를 사용하여 패키지를 설치하는 방법. 흔히 보는 Debian 계열의
sudo apt install <프로그램명>
이 이것이다.
- Flatpak, Snap와 같은 시스템에서 독립된 패키지 매니저를 사용하여 패키지를 설치하는 방법. 배포판의 의존성을 따르지 않고 자체적으로 의존성을 해결한다.
- AppImage 형태의 패키지를 설치 혹은 실행하는 방법.[36] 필요한 의존성을 모두 한 독립적인 패키지 파일에 담아 의존성을 해결한다.
- GUI 소프트웨어를 사용하여 패키지를 설치하는 방법. 앞서 언급한 패키지 매니저를 GUI를 통해 관리한다.

패키지 매니저나 설치 파일 확장자는 배포판에 따라서 다르다. 예를 들어 apt 시스템 패키지 매니저와 및 *.deb 패키지 확장명은 UbuntuDebian 계열에서 주로 사용되며, dnf 시스템 패키지 매니저 및 *.rpm 패키지 확장명은 RHEL페도라 계열에서 주로 사용된다.

Flatpak, Snap, AppImage는 최근 등장한 패키지 설치/관리 방법이다. 한 배포판에 종속되어 있지 않고 독립적이기 때문에 모든 배포판에서 사용 가능하며, 패키지 설치 시 루트 권한을 필요로 하지 않는다. 또한 자체적으로 의존성을 해결하기 때문에 후술할 의존성 문제로부터 자유롭다. Linux 처음 접한 초보자에게 추천되는 이유이다.


12.2.1. 의존성 관리[편집]


Linux[37] 배포판에서 패키지들을 관리할 때에는 특히 의존성 문제를 신경써야 한다.

전통적으로, Linux에서 프로그램을 설치하면 그 해당 프로그램만 딱 설치하며, 부속품 격인 '의존 패키지들[38]'은 별도로 설치해야 한다.[39] 그러다 보니 어떤 프로그램을 설치하려면 의존 패키지들까지 일일이 따로 구해서 설치하는 불편함이 존재했었다. 이를 해결하기 위해 등장한 것이 시스템 패키지 매니저이다. 시스템 패키지 매니저의 출현은 이러한 의존성 문제를 대신 해결해주었다.

또한 Linux에서는 윈도우macOS와 달리, 프로그램들이 서로 의존성을 공유한다. 이것은 저장공간 낭비를 줄인다는 장점은 있지만 서로 다른 의존성을 요구하는 프로그램들을 동시에 설치할 수 없거나, 프로그램 한번 업데이트했더니 다른 프로그램이 먹통이 된다거나 하는 치명적인 문제가 있다. 또한 각 배포판마다 다른 의존 패키지가 필요하여 각 배포판마다 설치 파일을 별도로 제작해야 하는 파편화도 발생시킨다. 따라서 대부분의 Linux 배포판들은 의존 패키지들을 해당 의존성을 필요로 하는 패키지 내에 명시하고, 의존성이 모두 맞춰진 프로그램 세트를 구할 수 있도록 각 배포판 버전마다 따로 저장소를 만들어 두어 각 프로그램마다 필요한 버전을 가리키도록 하는 것으로 문제를 해결한다.[40]

다만 이러한 의존성 처리 방식이 비효울적이라는 비판이 있었고, 그래서 최근에 등장한 것이 Flatpak, Snap, AppImage, 그리고 Docker[41]이다. 이들은 기존의 시스템에 설치되어 있는 패키지들과는 독립적으로 각 프로그램의 의존성을 관리하여 앞서 나온 의존성 관련 문제들을 해결한다.


12.3. 상용 프로그램[편집]


Linux 서버 상에서 사용되는 프로그램들중 유료 프로그램들이 많다. Linux 엔터프라이즈용 프로그램들도 유료 프로그램들이 대다수다

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

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


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


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

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

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

전통적인 Unix 환경이 그러하듯이 원격 접속은 기본적으로 텔넷이나 SSH 등을 통해 CLI 환경으로 접속하는 것이다. 웹호스팅 등에서 서버에 접속하는 것도 바로 Linux의 SSH 원격접속이다. 텔넷PC통신 시절에 많이 쓰던 그것으로, 이 때문에 Linux 환경에서는 다른 프로그램 없이 바로 telnet 명령 입력하고 PC통신 연결 주소 입력하면 PC통신 화면이 바로 떴다. 애초에 PC통신 자체가 Linux의 원본(?)인 Unix의 터미널 환경을 사용하기 때문에 Linux에서도 그대로 되는 것. PC통신 프로그램은 이 터미널 환경을 도스나 윈도우 환경에서도 쓸 수 있게 에뮬레이션 시켜주는 프로그램이다. 단, 텔넷은 암호화가 안 되기 때문에 보안성이 낮아서 요즘은 거의 안 쓰고, 암호화 통신을 하는 SSH를 많이 사용한다. 이처럼 서버 관리 부분에서는 CLI 환경으로 접속하는 것이 기본일 뿐더러, 대부분의 작업이 CLI로도 모두 가능하므로 GUI는 필요가 없는 경우가 많다. 그래서 서버 등 원격접속해서 쓰는 용도로 Linux를 설치한다면 아예 GUI 부분은 제외하고 설치하거나 설치 후 GUI 부분을 삭제하는 경우도 많다. 물론 Windows에서도 텔넷 등 CLI 환경으로의 원격접속을 지원하긴 하지만 어디까지나 기본은 GUI이기 때문에 CLI 모드에서 할 수 있는 작업은 제한되어 있다.


12.5. 다국어 지원[편집]


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

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

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


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


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

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

12.7. 설정법[편집]


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

Linux 상에서는 조합에 따라 다른 프로그램을 쓸 수도 있고 안 쓸수도 있기 때문에 신호나 출력이 거쳐가는 프로그램마다 각자 설정을 가지고 있는 경우가 많으며 대형 배포판에서는 여러 사용자의 요구를 커버하기 위해 여러 가지 프로그램을 모아 놓게 된다.


13. 배포판[편집]


파일:나무위키상세내용.png   자세한 내용은 Linux/배포판 문서를 참고하십시오.


14. 명령어[편집]


파일:나무위키상세내용.png   자세한 내용은 Linux/명령어 문서를 참고하십시오.



15. macOS와의 차이[편집]


macOS와 Linux의 공통점은 POSIX 규격을 따르는 Unix-like 운영체제라는 점이 있으나 macOS는 일부 컴포넌트를 제외하고 모두 폐쇄형 클로즈드 코드이다.

macOS의 하부 시스템인 Darwin과 그 커널인 XNU는 미국 대학에서 만든 마이크로커널인 Mach 3.0과 4.4BSD-Lite2의 구성요소로 주로 FreeBSD와 약간의 NetBSD 가져다가 Apple에서 자기 입맛대로 섞어 만든 하이브리드 커널 방식의 OS이다.

macOS는 상표적인 Unix 운영체제이고 POSIX C API, X11 GUI 애플리케이션 구동, Unix식 권한 체계와 유틸리티, 셸 등이 그러하다. macOS는 일부 데스크탑 어플 정도에서 쓰이고 있다.

macOS에 기본 포함된 Unix 유틸리티들은 BSD의 소스코드에 기반하고 있다. macOS에서 기본적으로 창 관리자 내지 디스플레이 서버의 기능을 하는 것은 오래된 X11과 유사한 Quartz Compositor다. macOS에서 X11 응용프로그램을 구동하려면 Quartz 위에서 도는 X11 서버인 XQuartz를 따로 설치해야 하며 이렇게 구동한 X11 응용프로그램은 Cocoa API 프레임워크로 작성된 네이티브 macOS 앱과 이질적으로 표시된다.


16. Windows 대체 소프트웨어 일람[편집]


  • MS OfficeLibreOffice, WPS Office
  • Visual Studio → GNOME Builder, Glade[45], Android Studio[46], Eclipse, IntelliJ IDEA, Code::Blocks, NetBeans, CLion, KDevelop
  • SourceTree → SmartGit, GitKraken, Guitar Git GUI
  • 포토샵GIMP, Krita, Pinta 등
  • 일러스트레이터Inkscape, Karbon14 등
  • 라이트룸 → Darktable, LightZone, RawTherapee 등
  • InDesign → LibreOffice Writer(워드+DTP 통합; Frame/Column/Section/Style등의 강력한 레이아웃 기능이있다.)
  • 어도비 아크로뱃 → PDF Studio[47], Evince, Okular, 리브레오피스 Draw[48]
  • 아웃룩 → Thunderbird, Evolution 등
  • 메모장 → CherryTree[49], gedit, 그놈 텍스트 편집기, Kate, Leafpad, Mousepad, JEdit, Notepadqq 등
  • 미디어 플레이어 → VLC, SMPlayer, MPlayer, 그놈 동영상(Totem), Kaffeine, mpv[50]
  • 비디오 에디터 → Avidemux, Cinelerra, Kdenlive, Shotcut. AA Translator 프로그램을 이용해서 EDL→Ardour 형식 변환도 가능하다.
  • Skype(Linux 버전 지원) → Discord, Mercury Messenger, Pidgin, Emesene, Empathy, KMess 등
  • 파티션 매직 → GParted, KDE Partition Manager
  • Hyper-V 가상머신 → KVM(Kernel-based VM)-QEMU. SPICE+QXL, SPICE+VirtIO(VirGL), GPU Full Passthrough 모드 등을 지원한다.
  • Windows 소프트웨어 직접 실행 → WINE, Bottles, CrossOver


17. 관련 문서[편집]



파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-10-30 01:53:22에 나무위키 Linux 문서에서 가져왔습니다.

[1] #[2] 출처: #[3] GNU Hurd. 1990년 첫 버전을 발표한 이래로 2023년 까지 안정화가 안 된 물건이다. 이 때문에 후술할 Linux vs GNU/Linux 명칭 논란에서 언급되기도 한다.[4] Linux 커널은 WSL2 부터 탑재됨.[5] LFS, 젠투, Arch Linux 같은 경우 그 모든 걸 유저가 선택해서 쓰는 걸 목표로 하고 있다.[6] NetBSD의 경우 지원되는 CPU 플랫폼이 11개 정도이다. NetBSD의 모토는 "Of course it runs NetBSD!" 이다.[7] 코어를 켜고 끄는 건 바이오스에서 설정해야 하는 것이 일반적이다. 그것을 OS가 작동할 때 설정할 수 있다는 소리다.[8] 이전에도 PS3 크랙 시도가 있긴 있었으나 이 사건을 빌미로 PS3 보안이 완전히 붕괴되었다고 봐야 한다. 해커들로서는 뭐가 오픈되었던 것이 다시 사라지는 것을 해킹의 대의명분으로 쓰기 참 좋기 때문. 참고로 이전에 PSN 해킹 대란이 원인이라 되어 있었는데, 이건 2011년 일이다.[9] 한때 전세계 33위, 미 국방부의 실시간 조작이 가능한 컴퓨터 중에서는 1위의 성능을 가진 물건이었다고 한다.[10] 데스크탑 환경에서 필수불가결한 요소인 freedesktop.org 소속의 프로젝트들 (X11, Wayland, Mesa3D 등), Red Hat과 같은 기업들도 참여하고 있는 서비스 매니저인 systemd 등[11] GNU에서 UNIX를 대체할 자체 커널을 개발하고자 발족한 프로젝트. 1990년 개발 시작[12] https://en.wikipedia.org/wiki/Linux_Mark_Institute[13] #[14] #[15] 이 사건의 여파가 상당이 컸는지 해당 사건 이후 배포판들은 대부분 해시값을 확인하라고 하며 Arch Linux 같이 자체적으로 해시값이 일치하는지 확인하는 프로그램도 깔려있는 경우도 많다.[16] 윈도우의 경우 커널에서 GUI를 담당하는게 아닌 win32k.sys라는 커널 모드 드라이버가 GUI 기능을 담당한다.[17] 윈도우 서버, 윈도우 시스템이라고도 한다.[18] GTK+에서 GTK로 명칭이 변경되었다. 무료이며 GTK 라이브러리 소스코드 라이선스도 LGPL로 앱 소스코드 공개/배포 필요가 없다.[19] Qt는 클로즈드 상용 프로그램에 사용시 유료이다.[20] 데스크톱용 GUI 환경을 그대로 사용할 수도, 필요 없는 부분을 치우고 아주 가벼운 GUI만 사용할 수도, 아니면 아예 사용하지 않을 수도 있다.[21] 아주 안 되는건 아니다.#[22] 구글, 사내 LinuxPC Ubuntu→Debian 갈아탄다. 물론 그 Ubuntu도 Debian 기반으로 나온 운영체제니까 Ubuntu 때랑 전반적인 환경은 크게 바뀌지 않을 것으로 보인다. [23] VNC 서버를 활성화해 연결해야되며 llvmpipe로 3D가속이 되며(사실상 소프트웨어 렌더링) 소리는 pulse audio를 별도로 불러와야 한다.[24] 밸브가 소스엔진을 Linux에 포팅할 때도 그래픽 카드 제조사들과 긴밀히 협조해서 드라이버 개선(특히 멀티스레딩 지원)을 동시에 진행했다.[25] 둠3, 퀘이크3, 리턴 투 캐슬 울펜슈타인 등.[26] 다만 게임은 실행 파일만으로 즐길 수 없으므로 윈도우용 카피에서 실행 파일을 제외한 패키지 파일들(.pak)을 가져와야 한다.[27] JE 1.12.2를 기점으로 UWP(Win10, Win10 Mobile), Android, iOS, tvOS, 엑스박스 원, Nintendo Switch용 버전은 마인크래프트로 통합되었고 원래 '마인크래프트'였던 Win32, Linux, macOS용 버전은 '마인크래프트 자바 에디션'으로 변경되었다.[28] 특히 게임 뿐만 아니라 어도비 소프트웨어도 추가 패치만 하면 가능하다.[29] 렌더링을 위해 수십~수천개의 컴퓨터를 서버마냥 돌리는 것이다.[30] SGI에 탑재된 Unix의 일종인 OS[31] Unix 셸에서 사용되는 스크립트를 전부 윈도우용 프로그램 또는 .bat으로 번역한다고 생각해보자.[32] 일부 프로그램들은 개인이 아닌 회사에만 Linux 버전을 제공하기도 한다.[33] CLI 설치라 처음엔 머리가 아프지만, 익숙해지면 기본 설치/맞춤 설정까지 1시간도 채 안 든다! 하지만, 터미널 명령어는 다른 배포판들의 특성과 마찬가지로 명령어 변동이 있다. 꽤나 머리아픈 부분. 그럴 때는 Arch Linux 위키를 참고하자.[34] 셸 스크립트의 경우 완전한 호환을 원하는 스크립트는
#! /bin/sh
로 시작하고, 특정 셸을 통해 실행되기를 원하면
#! /bin/(셸의 이름)
으로 시작하는 식이다. 물론 전자의 경우에는 제한된 기능만을 사용할 수 있다.
[35] 주로 *.tar.gz 등 압축 파일로 배포된다.[36] 별도의 패키지 설치 과정 없이 실행 권한만을 준 후 바로 실행할 수 있다.[37] Android 제외. AndroidLinux 커널만 가져다 썼을 뿐 사실상 다른 OS라 봐도 무방하다.[38] 영문에서 주로 'dependencies'라 하는 그것. 해당 프로그램의 구동에 필요한 부속 라이브러리 등을 의미한다.[39] 상술한 소스코드 직접 설치 방식이 그렇다.[40] Gentoo Linux, Arch Linux, Debian sid 등 특별한 릴리즈 주기 없이 rolling-release를 사용하는 배포판은 모든 프로그램과 구성요소를 최신 버전으로 유지하여 의존성을 해결한다. 만약 한 의존 패키지의 버전이 올라가 이를 의존성으로 두는 패키지들이 더 이상 그 의존성을 해결할 수 없는 상황이 되면, 그 패키지들을 새 의존 패키지 버전에 의존성을 두도록 모두 다시 컴파일한다.[41] Docker의 경우 가상화 기술이긴 해도 패키지 매니저나 앱스토어는 아니다보니, 앱 설치를 위해 의존성 관리를 최적화한 앞의 것들과는 차이가 있다.[42] Java 그 자체를 쓰지 않고 이의 API를 이용한 것은 공정 이용이라고 보았다.[43] 반복을 위한 유일한 구문인 for문도 꽤나 기형적이고, continue나 break도 존재하지를 않아서 모든 반복문을 goto로 처리해야 한다! 이게 왜 문제냐면, 모두 goto로 처리하면 알아볼 수 없는 스파게티 코드가 될 가능성이 높기 때문이다.[44] Direct Rendering Manager[45] GTK용 비주얼 빌더. VS의 XAML Designer에 해당[46] 마소의 VS는 Linux판이 없으나 Android Studio는 Linux판이 있다. Android 에뮬레이터도 지원하여 Linux에서 Android 앱 디자인에 최적. Java, Kotlin, 또는 Flutter 프레임워크가 있다. 웹브라우저에서 동작하는 웹 앱 소프트웨어 디자인도 가능하다.[47] 무료 및 유료 버전이 있다. HiDPI모니터 사용시 설정창에서 Nimbus를 GTK+로 변경하여야 한다.[48] PDF 편집툴로도 사용가[49] 원노트 대체툴이다.[50] MPlayer와 같은 커맨드 라인 플레이어. MPlayer의 포크로 쓸데없는 기능들을 지우고 몇몇 새로운 기능을 추가했다. 화질도 더좋고 가벼워 Celluloid 등 여러 프론트엔드 미디어플레이어에서 백엔드로서 사용된다.