리눅스는 유닉스를 기반으로 개발된 오퍼레이팅 시스템이다.
GNU = Gnu is Not Unix
GNU 프로젝트는 IBM과 미국전신전화 등 컴퓨터 기업들이 유닉스를 상용화해서 사용료를 요구하는 것에 반발해 시작되었다.
GNU 프로젝트를 주도한 리처드 스톨만은 소프트웨어 상업화의 독점 체제에 반대했다.
초기 컴퓨터 개발 공동체의 상호협력적인 문화로 돌아갈 것을 주장하면서 1985년 3월에 GNU 선언문을 발표한다.
그리고 GNU 프로젝트를 지원하기 위해 자유 소프트웨어 재단(FSF) 설립과 GNU 공개 라이선스(GPL)라는 규약을 만들어서 누구나 공개된 소스를 수정하고 배포할 수 있게 한다.
이러한 자유 소프트웨어 운동은 프로그래머들의 입장과 맞물리면서 이후 오픈 소스 운동을 만들어 내었다.
1990년대 초 GNU 프로젝트는 운영체제에 필요한 많은 프로그램을 만들어냈다.
그러나 장치 드라이버, 커널 등이 완성되지 않았었다.
1991년 핀란드의 프로그래머인 리누스 토발즈가 사용자와의 인터페이스를 담당하는 리눅스 커널을 발표했다.
이를 통해 GNU 시스템과 통합되면서 GNU / Linux 라는 완전한 운영체제가 탄생하게 되었다.
리눅스의 특징
유닉스 기반
- 리눅스 커널 자체가 유닉스의 미닉스를 참고하여 개발 되었다.
- 기존의 유닉스는 높은 하드웨어 스펙을 기반으로 복잡하고 큰 네트워크 시스템을 위해서 만들어진 운영체제이다.
- 리눅스는 여기에서 커널과 명령어 체계를 바꾸면서 일반인들이 보다 사용하기 쉽게 만들었습니다.
- 유닉스를 기반으로 하기 때문에 개발자들에게도 익숙한 환경이였고 결국 많은 사람들에게 빠르게 확산되었다.
다중 사용자와 멀티 태스킹을 지원
- 리눅스는 다중 사용자와 멀티 태스킹을 지원한다.
- 보안성이 높은 파일을 관리하기 용이하여 서버에서 많이 쓰이고 있다.
자유 소프트웨어
- 리눅스는 자유 소프트웨어 라이센스를 갖는다.
- 누구나 소스 코드를 이용하고 수정해서 재배포 할 수 있다.
- 리눅스 커널과 소프트웨어 등을 모아서 패키지 관리 프로그램으로 구성한 것을 리눅스 배포판이라고 한다.
리눅스 구조
리눅스는 크게 커널, 셸, 디렉토리로 3가지로 구성되어 있다.
커널
- 운영체제의 핵심으로 메모리관리, 프로세스 관리, 장치 관리 등 컴퓨터의 모든 자원을 초기화하고 제어하는 기능을 수행한다.
셸
- 사용자가 입력한 문장을 읽어 요청을 실행하며 커널이 명령어를 해석해 결과를 수행한 후 결과를 다른 프로그램이나 커널로 전송한다.
- 즉 사용자와 커널의 중간다리 역할을 수행한다.
- 리눅스는 bash셸을 기본으로 사용한다.
디렉토리
- 파일을 가지고 있거나 또 다른 디렉터리를 가지고 있는 그룹을 의미하며 파일 시스템에 의해 관리되고 있다.
파일 시스템 계층구조
리눅스의 디렉토리 구조는 전체적으로 tree 구조이며 명령어의 성격과 내용 및 사용권한 등에 따라 디렉토리로 구분된다.
~ :
- 홈 디렉토리
- 터미널 구동시 최초의 위치
/:
- FHS의 가장 최상단 디렉토리이며 Root 디렉토리라고도 한다.
- 시스템의 근간을 이루는 가장 중요한 디렉토리로 파티션 설정 시 반드시 존재해야한다.
- 절대경로의 기준이 되는 디렉토리이다.
/bin:
- 리눅스의 기본적인 명령어가 저장된 디렉토리
- 시스템을 운영하는데 기본적인 명령어들이 모여있다.
- 서브 디렉토리가 없다.
/home:
- 사용자 홈 디렉토리, 일반 사용자의 홈 디렉토리가 만들어 지는 곳
/boot:
- 부트 설정 파일과 lilo를 제외한 부트 관련 모든 파일을 모아놓은 디렉토리
/etc:
- 호스트의 설정 파일을 모아놓은 디렉토리
/lib:
- 시스템 부트 때 필요하거나 /bin 디렉토리 내 명령어들의 실행에 필요한 공유 라이브러리들을 모아놓은 디렉토리
/usr:
- 일반 사용자들을 위한 대부분의 프로그램 라이브러리 파일이 위치한다.
- /usr/bin: 일반 사용자들이 사용 가능한 명령어 파일들이 존재하는 디렉토리
- /usr/local: 새로운 프로그램들이 설치되는 공간
디렉토리 경로
Absolute Path
- 이름 그대로 절대적인 경로, 완전한 경로를 의미
- Root 디렉토리부터 시작하는 경로를 뜻한다.
- 현재 나의 위치와 상관없이 항상 정확한 경로 전달
Relative Path
- 이름 그대로 상대적인 경로를 의미
- 현재 내 위치를 기반으로 움직인다.
- .과 .. 이 두 가지 심볼이 중요하다
- .는 현재 디렉토리 ..는 상위 디렉토리를 의미한다
'리눅스' 카테고리의 다른 글
WSL을 사용하여 Windows에 Linux를 설치하는 방법 (0) | 2024.02.18 |
---|---|
[Linux] OpenSSL을 Ubuntu에서 설치하고 업데이트하는 방법 (2) | 2023.06.12 |
[Linux] 리눅스 부팅 시 톰캣 자동 실행 (0) | 2023.06.05 |