Linux에서 모든 유닉스 명령이 다시 작성 되었습니까?


답변:


93

OS의 매우 다른 두 부분을 혼동하는 것 같습니다. 그것들은 종종 상호 교환 가능하게 참조되기 때문에 이해할 수 있지만 기술적으로 잘못되었으므로 귀하의 질문은 잘못된 전제에 기초합니다. 묻고 자하는 질문을 충분히 탐구하고 희망적으로 대답하기 위해서는 짧은 역사 수업이 필요합니다.

첫째, 유닉스가있었습니다. 기본적으로 그 당시 유닉스 는 AT & T 유닉스 시스템을 의미 했습니다 . 그러나 AT & T UNIX는 Free가 아니기 때문에 Richard Stallman은 Free 인 Unix 시스템을 작성하기 위해 GNU 프로젝트를 시작했습니다 . 따라서 Gnu 라는 이름은 GNU가 아닌 Unix가 아닙니다 . GNU에 대한 계획은 1983 년에 공개 되었고 1984 년에 개발이 시작되었습니다 .

1990 년대 초, GNU는 대부분의 유닉스 유틸리티를 처음부터 다시 구현했습니다. 위키 백과는 재 작성되지 않은 전체 시스템의 일부 구성 요소를 나열 합니다 (TeX, X Window System 및 Mach 마이크로 커널은 재 작성되지 않은 구성 요소의 예로 언급 됨). 그러나 대부분 사용자 영역 도구는 충족시키기 위해 처음부터 재 작성되었습니다. AT & T (또는 비 무료) 코드의 재사용을 피하고 명령 행 옵션을 추가하여 기능을 확장하는 것을 목표로합니다. 결과적으로 GNU 유틸리티는 원래 영감을 얻은 도구보다 정기적으로 더 강력했습니다.

이 시점에서 GNU에는 여전히 핵심 구성 요소 운영 체제 커널이 누락 되어 다른 OS를 실행하지 않는 실제 컴퓨터에서 모든 것이 함께 작동하도록합니다. 1991 년 Linus Torvalds는 장난감 프로젝트를 시작했으며 결국 Linux로 알려졌습니다. 당시 새로운 32 비트 Intel 80386 CPU 에 대해 배우는 것은 기본적으로 학교 프로젝트였으며 , 매우 간단하게 시작되었지만 결국 실제로 사용 가능한 운영 체제 커널로 변형되기 시작했습니다. 그러나 사용자 소프트웨어는 없었습니다. Linux 자체는 셸, 커널 초기화 이외의 시스템 시작 기능, 텍스트 편집기, 그래픽 인터페이스, 아무것도 제공하지 않습니다.. 커널은 자동차 엔진과 같습니다. 유용한 자동차를 만드는 데 필수적이지만 자체적으로 쓸모가 없습니다 (유용한 자동차의 경우 바퀴, 변속기, 조향, 운전자가 앉을 수있는 곳, 연료 탱크 또는 기타 에너지 저장 장치 등)가 필요합니다. 리눅스 커널은 결국 GNU 소프트웨어와 같은 GNU 일반 공중 사용 허가서에 따라 배포되었습니다 .

그래서 사람들은 둘을 짝짓기 시작했습니다. 유닉스와 유사한 유저 랜드와 POSIX 와의 유사성을 포함한 Unix의 아이디어를 기반으로 한 커널과 함께 원하는만큼 해킹 할 수있는 소스 코드를 제공하며 비용이 들지 않았습니다. . 특히 리눅스 배포판 이 일반화 되기 전에는 약간의 작업이 필요했지만 약간의 시간을 투자 할 의향이있는 사람들이 사용할 수있을 정도로 완성되었습니다.

요즘 GNU는 자체 커널을 제공합니다. 아마 들어 보지 못했지만 GNU Hurd 라고 합니다. 그러나 허드는 1990 년대 초반 리눅스가 애호가들과 땜장이들 사이에서 인기를 끌기 시작했을 때 주변에 없었기 때문에 리눅스 커널과 대부분의 GNU 사용자 조합이 개발자들 사이에서 가장 주목을 받았습니다.

또한 오늘날 많은 유닉스 시스템은 GNU 사용자 영역의 일부를 설치하거나 관리자가 쉽게 설치할 수 있도록합니다. GNU 이외의 시스템에서는 GNU bash, GNU Compiler Collection, GNU C 라이브러리 (바닐라 또는 패치) 등을 볼 수 있습니다.

설상가상으로, 일부 시스템은 Linux 커널을 사용하지만 GNU 사용자 영역은 전혀 없습니다. 널리 사용되는 예를 보려면 기본적으로 사용자 정의 사용자 영역과 연결된 Linux 커널 인 Android OS를 고려 하십시오.

이것은 GNU, Linux 및 다양한 유닉스 사이의 경계를 크게 흐리게하기 때문에 중요 합니다 ( UNIX하나 뿐이지 만 많은 유닉스와 더 많은 유닉스 계열 OS가 있습니다 ). 리눅스에 관해 물어볼 때, GNU / 리눅스 시스템에 대해 자주 묻는 것입니다. 그러나 Linux를 전혀 사용하지 않고 FreeBSD 커널 위에서 GNU 사용자 영역을 실행하는 Debian GNU / kFreeBSD를 고려 하십시오. 또는 예 를 들어 coreutils를 포함한 다양한 GNU 패키지를 쉽게 설치할 수있는 Solaris와 같은 . Mac OS X에는 GNU 사용자 영역의 일부도 포함되어 있다고 생각합니다. 또는 위에서 언급 한 Android를 고려하십시오.

결국 사용 가능한 GNU 시스템GNU 이외의 코드를 실행할 수 있고 GNU 이외의 시스템은 GNU 코드를 실행할 수 있지만 GNU 유틸리티 에는 GNU 이외의 코드가 포함되어 있지 않습니다.


1
지난 몇 년 동안 FreeBSD를 사용했을 때는 많은 GNU 도구를 사용하지 않았지만 GNU make 대신 BSD make와 같은 자체 GNU 도구를 사용했습니다.
reinierpost 2009 년

5
@reinierpost OSX는 매우 유사합니다. 일반 설치에는 대부분 BSD 버전의 것들이 포함되어 있지만 GNU coreutils 등은 MacPorts 및 기타를 통해 쉽게 구할 수 있습니다. XCode는 LLVM뿐만 아니라 gcc도 사용합니다. 복잡합니다 :)
MattDMo

1
@reinierpost make 는 대체하기에 나쁘지 않습니다. C 컴파일러는 좀 더 참여하고있다. 최소한 FreeBSD 8.0은 GCC를 기본 컴파일러로 사용합니다 . 특히 버전 4.2.1. 최신 버전을 기본 시스템에 통합하지 못하게하는 "라이센스 문제"는 아마도 GPL2 +에서 GPL3 + 로의 전환에 관한 것일 수도 있지만 확실하지는 않았습니다.
CVn

3
@ hunter2 지금까지 투표 수에 따라 필요하지 않은 것 같습니다. ;) 나는 또한 전체 역사를 쓰지 않았다. Minix는 Linux가 자체 호스팅되기 전에 Linux 개발 및 부트 스트랩 시스템으로서 중요한 역할을 수행했지만 Linux, GNU 및 원래 UNIX 간의 관계에는 거의 영향을 미치지 않았으며, 이는 문제의 핵심 라인입니다.
CVn

3
@ hunter2 만약 우리가 그 경로를 따라 가려고한다면, 유닉스가 먼저 나오지 않았다는 것은 절대적으로 사실입니다. 그러나 질문에 대답하기 위해 이것은 충분히 근사한 것처럼 보였습니다. 한 문장으로 된 답변은 "Linux 시스템에서 찾은 TeX와 X를 제외한 기본적으로 모든 UNIX가 GNU의 일부로 다시 작성되었습니다"와 같은 것이었을 것입니다. 필요한 것-그리고 답은 여전히 ​​모든 세부 사항을 다루는 것보다 훨씬 부족합니다.
CVn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.