리눅스 기본 규격
1. 개요
리눅스 기본 규격(LSB)은 리눅스 배포판 간의 호환성을 목표로 2001년에 처음 등장한 규격이다. LSB는 응용 프로그램 바이너리 인터페이스(ABI)를 제공하여 독립 소프트웨어 벤더(ISV)가 바이너리 호환성을 확보하도록 설계되었으며, 버전 5.0부터 하위 호환성이 깨졌다. LSB는 ISO 표준으로 등록되어 있으며, 다양한 버전의 규격이 존재한다. LSB는 데비안 프로젝트 등에서 비판을 받았으며, 패키지 형식 논란, 준수 테스트 스위트의 품질 문제 등이 지적되었다. 데비안과 우분투는 2015년에 LSB 지원을 중단했다.
| 설명: '리눅스 배포판을 위한 표준을 정의하는 프로젝트' |
| 최초 버전 | 2001년 |
|---|---|
| 최신 버전 | 5.0 (2016년 4월) |
| 상태 | 중단됨 |
| 핵심 구성 요소 | '라이브러리' 컴파일러 '헤더 파일' 패키징 표준 '명령어 인터페이스' |
|---|---|
| 주요 목표 | 다양한 배포판 간의 애플리케이션 호환성 보장 |
| 사용 예 | '특정 LSB 버전을 대상으로 빌드된 애플리케이션은 해당 버전을 준수하는 모든 배포판에서 실행 가능' |
| 기술적 접근 방식 | '표준 인터페이스 및 서비스 집합 정의, 배포판이 준수해야 함' |
| 인증 기관 | '리눅스 재단' |
|---|---|
| 인증 프로세스 | '애플리케이션이 LSB 사양을 준수하는지 확인' |
| 관련 표준 | 'POSIX' '유닉스' |
|---|
| 추가 정보 | init 스크립트 주석 규칙 정의 기능 이름 표준화 '공유 라이브러리 이름: ld-lsb.so' |
|---|
-
리눅스 재단 -
젠 (하이퍼바이저)
젠은 하나의 물리적 하드웨어에서 여러 운영 체제를 동시에 실행할 수 있게 하는 하이퍼바이저로, 다양한 가상화 방식을 지원하며 여러 분야에서 활용된다. -
리눅스 재단 -
오픈 소스 개발 연구소
오픈 소스 개발 연구소는 기업 환경에서 리눅스 사용 개선을 목표로 산업 이니셔티브를 후원하고, 자유 소프트웨어 및 오픈 소스 커뮤니티에 하드웨어 자원을 제공하며, 리눅스 개발자 고용, 오픈 소스 소프트웨어 테스트 및 보고 등의 활동을 수행했던 조직이다. -
리눅스 -
리누스의 법칙
리누스의 법칙은 오픈 소스 개발에서 많은 개발자가 코드 검토에 참여할수록 버그가 빨리 발견되고 수정된다는 개념을 담고 있지만, 개발 환경에 따라 효과가 달라질 수 있다는 비판도 존재한다. -
리눅스 -
2038년 문제
2038년 문제는 유닉스 시간의 정수 오버플로우로 인해 2038년 1월 19일 이후에 오류가 발생하는 문제이며, 64비트 시스템 전환 등으로 해결하려 한다. -
리눅스 API -
와인 (소프트웨어)
와인(Wine)은 유닉스 계열 운영체제에서 윈도우 응용 프로그램을 실행하기 위한 호환성 계층으로, 윈도우 API를 직접 구현하여 윈도우 프로그램이 리눅스, macOS 등에서 실행되도록 지원하며, 여러 기업의 후원을 받아 꾸준히 발전해왔다. -
리눅스 API -
OpenAL
OpenAL은 3차원 오디오를 위한 크로스 플랫폼 API로, 소스 객체, 오디오 버퍼, 리스너를 사용하여 3차원 공간에서 소리를 구현하며 다양한 운영 체제와 하드웨어를 지원한다.
2. 역사
리눅스 재단의 전신인 자유 표준 그룹(Free Standards Group)이 2001년에 리눅스 배포판 간의 호환성을 보장하기 위해 LSB를 처음 발표하였다. LSB는 2001년 6월 버전 1.0이 출시된 이후 여러 버전을 거치면서 발전했다. 초기에는 주로 하드웨어 관련 규격을 추가했는데, 2002년 1월에는 IA-32 아키텍처, 6월에는 PowerPC 32비트 아키텍처 규격이 추가되었다.
2004년 버전 2.0에서는 LSB-Core, LSB-CXX, LSB-Graphics, LSB-I18n (미출시) 등으로 모듈화가 이루어졌다. AMD64, PowerPC 64비트 등 새로운 하드웨어 규격이 추가되었고, Single UNIX Specification (SUS) 버전 3과 동기화되었다.
이후 버전에서는 라이브러리 API, GNU C 라이브러리 버전, ISO POSIX 표준 등이 업데이트되었다. 2015년 6월 2일 출시된 버전 5.0은 이전 버전과 하위 호환되지 않는 첫 번째 주요 릴리스였다.
2.1. 버전 역사
| 버전 | 릴리스 날짜 | 내용 |
|---|---|---|
| 1.0 | 2001년 6월 29일 | 최초 릴리스 |
| 1.1 | 2002년 1월 22일 | IA-32 하드웨어별 규격 추가 |
| 1.2 | 2002년 6월 28일 | PowerPC 32비트 하드웨어별 규격 추가, 2002년 7월부터 인증 시작 |
| 1.2.1 | 2002년 10월 | Itanium 하드웨어별 규격 추가 |
| 1.3 | 2002년 12월 17일 | Itanium, Enterprise System Architecture/390, z/Architecture 하드웨어별 규격 추가 |
| 2.0 | 2004년 8월 31일 | |
| 2.0.1 | 2004년 10월 21일 | 모든 하드웨어 아키텍처에 대한 명세서(LSB-Graphics 제외, 제네릭 버전만 제공)가 포함된 LSB 2.0의 ISO 버전. |
| 2.1 | 2005년 3월 11일 | |
| 3.0 | 2005년 7월 1일 | |
| 3.1 | 2005년 10월 31일 | ISO/IEC 23360:2006으로 제출. |
| 3.2 | 2008년 1월 28일 | ISO/IEC 23360:2006으로 제출. |
| 4.0 | 2008년 11월 11일 | |
| 4.1 | 2011년 2월 16일 | |
| 5.0 | 2015년 6월 2일 |
3. ISO 표준
LSB는 공식 ISO 표준이다. LSB 버전 3.1과 5.0은 ISO/IEC 국제 표준으로 등록되어 있으며, 각 버전별 상세 규격은 하위 섹션에 정리되어 있다. ISO/IEC 23360 (리눅스 표준 기반 3.1 사양)과 ISO/IEC 9945:2003 (POSIX) 국제 표준 간의 충돌 영역을 식별하는 ISO/IEC TR 24715:2006도 있다. ISO/IEC 23360과 ISO/IEC TR 24715는 ISO 웹사이트에서 내려받을 수 있다.
3.1. LSB 3.1
LSB는 ISO의 공식 표준이다.
LSB 버전 3.1은 ISO/IEC 국제 표준으로 등록되어 있으며, 다음과 같이 구성되어 있다.
| 규격 번호 | 내용 |
|---|---|
| ISO/IEC 23360-1:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 1: 일반 사양 |
| ISO/IEC 23360-2:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 2: IA-32 아키텍처 사양 |
| ISO/IEC 23360-3:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 3: IA-64 아키텍처 사양 |
| ISO/IEC 23360-4:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 4: AMD64 아키텍처 사양 |
| ISO/IEC 23360-5:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 5: PPC32 아키텍처 사양 |
| ISO/IEC 23360-6:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 6: PPC64 아키텍처 사양 |
| ISO/IEC 23360-7:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 7: S390 아키텍처 사양 |
| ISO/IEC 23360-8:2006 | 리눅스 표준 기반(LSB) 코어 사양 3.1 — 파트 8: S390X 아키텍처 사양 |
ISO/IEC 23360 (리눅스 표준 기반 3.1 사양)과 ISO/IEC 9945:2003 (POSIX) 국제 표준 간의 충돌 영역을 식별하는 ISO/IEC TR 24715:2006도 있다.
ISO/IEC 23360과 ISO/IEC TR 24715는 ISO 웹사이트에서 다운로드할 수 있다.
3.2. LSB 5.0
LSB 버전 5.0은 ISO/IEC 국제 표준으로 등록되어 있다.
LSB 5.0의 표준 목록은 다음과 같다.
| 파트 번호 | 규격 내용 |
|---|---|
| ISO/IEC 23360-1-1:2021 | 공통 정의 |
| ISO/IEC 23360-1-2:2021 | 코어 사양 일반 부분 |
| ISO/IEC 23360-1-3:2021 | 데스크톱 사양 일반 부분 |
| ISO/IEC 23360-1-4:2021 | 언어 사양 |
| ISO/IEC 23360-1-5:2021 | 이미징 사양 |
| ISO/IEC TS 23360-1-6:2021 | 그래픽 및 Gtk3 사양 |
| ISO/IEC 23360-2-2:2021 | X86-32 아키텍처용 코어 사양 |
| ISO/IEC 23360-2-3:2021 | X86-32 아키텍처용 데스크톱 사양 |
| ISO/IEC 23360-3-2:2021 | IA64(Itanium™) 아키텍처용 코어 사양 |
| ISO/IEC 23360-3-3:2021 | IA64(Itanium™) 아키텍처용 데스크톱 사양 |
| ISO/IEC 23360-4-2:2021 | AMD64(X86-64) 아키텍처용 코어 사양 |
| ISO/IEC 23360-4-3:2021 | AMD64(X86-64) 아키텍처용 데스크톱 사양 |
| ISO/IEC 23360-5-2:2021 | PowerPC 32 아키텍처용 코어 사양 |
| ISO/IEC 23360-5-3:2021 | PowerPC 32 아키텍처용 데스크톱 사양 |
| ISO/IEC 23360-6-2:2021 | PowerPC 64 아키텍처용 코어 사양 |
| ISO/IEC 23360-6-3:2021 | PowerPC 64 아키텍처용 데스크톱 사양 |
| ISO/IEC 23360-7-2:2021 | S390 아키텍처용 코어 사양 |
| ISO/IEC 23360-7-3:2021 | S390 아키텍처용 데스크톱 사양 |
| ISO/IEC 23360-8-2:2021 | S390X 아키텍처용 코어 사양 |
| ISO/IEC 23360-8-3:2021 | S390X 아키텍처용 데스크톱 사양 |
ISO/IEC 23360 및 ISO/IEC TR 24715는 ISO 웹사이트에서 무료로 내려받을 수 있다.
4. 하위 호환성
LSB는 바이너리 호환성을 위해 설계되었으며 독립 소프트웨어 벤더를 위한 안정적인 응용 프로그램 바이너리 인터페이스(ABI)를 생성했다. 하위 호환성을 달성하기 위해 각 후속 버전은 순수하게 추가하는 방식이었다. 즉, 인터페이스는 추가만 되었고 제거된 인터페이스는 없었다. LSB는 인터페이스가 LSB에서 제거될 경우 애플리케이션 개발자에게 충분한 시간을 제공하기 위해 인터페이스 폐지 정책을 채택했다.
이를 통해 개발자는 LSB의 모든 인터페이스를 알려진 기간 동안 신뢰할 수 있었고 변경 사항을 계획할 수도 있었다. 인터페이스는 최소 3개의 주요 버전 또는 약 11년 동안 "폐지됨"으로 표시된 후에만 제거되었다.
LSB 5.0은 이전 버전과의 하위 호환성을 깬 최초의 주요 릴리스였다.
5. 비판 및 논란
LSB는 회원사 외부, 특히 데비안 프로젝트로부터 의견을 수렴하지 않았다는 비판을 받았다. LSB가 표준이었고 경쟁자가 없었음에도 불구하고, 소수의 리눅스 배포판에서만 이를 따랐다. LSB 버전 4.0에 대해 인증을 받은 배포판 릴리스는 21개에 불과했는데, 레드 플래그 리눅스 데스크톱 6.0, 레드햇 엔터프라이즈 리눅스 6.0, SUSE 리눅스 엔터프라이즈 11, Ubuntu 9.04 (Jaunty Jackalope) 등이 대표적이다. 버전 4.1에 대해서는 이보다 훨씬 적은 수가 인증을 받았다.
또한, 인증 테스트 스위트의 버그와 불완전함에 대한 비판도 제기되었다. GNU C 라이브러리 주요 개발자인 울리히 드레퍼는 LSB 테스트 스위트에 버그가 있어, 배포판 간 비호환성을 유발할 수 있다고 지적했다. 그는 배포판 테스트만으로는 애플리케이션 호환성 문제를 해결할 수 없다고 비판하며, 애플리케이션 테스트가 부족하다는 점을 강조했다.
5.1. 패키지 형식 논란
LSB는 소프트웨어 패키지 형식으로 RPM 패키지 관리자의 제한된 형태를 사용하도록 규정했다. 이는 deb 형식을 사용하는 데비안 등 다른 배포판과의 논쟁을 일으켰다. 데비안은 Alien 프로그램을 통해 LSB 호환 RPM 패키지를 변환하여 설치할 수 있지만, 완전한 LSB 준수는 아니라고 명시하고 있다.