본문 바로가기

개념정리/Linux

Linux 구조

1. Linux 역사

1970년 Ken Thompson과 Dennis Ritchie가 Unix 운영 체제를 출시한 것을 시작으로 많은 사건이 최초의 Linux 커널을 만들고 최종적으로는 Linux 운영 체제(OS)를 탄생시키는 계기가 되었습니다. Richard Stallman은 1983년에 GNU 프로젝트를 시작했습니다. 그의 목표는 무료 Unix 계열 운영 체제를 만드는 것이었고 그의 작업의 일부로 GNU General Public License(GPL)가 만들어졌습니다. 

Linux는 600개 이상의 배포판으로 제공됩니다. 가장 인기 있고 잘 알려진 것으로는 Ubuntu, Debian, Fedora, OpenSUSE, Elementary, Manjaro, Gentoo Linux, RedHat 및 Linux Mint가 있습니다.

Linux는 일반적으로 다른 운영 체제보다 더 안전한 것으로 간주되며 과거에는 커널 취약점이 많았지만 그 빈도는 점점 줄어들고 있습니다. Windows 운영 체제보다 맬웨어에 덜 취약하며 매우 자주 업데이트됩니다. Linux는 또한 매우 안정적이며 일반적으로 최종 사용자에게 매우 높은 성능을 제공합니다. 그러나 초보자에게는 더 어려울 수 있으며 Windows만큼 하드웨어 드라이버가 많지 않습니다.

Linux는 무료이며 오픈 소스이므로 누구나 소스 코드를 수정하고 상업적 또는 비상업적으로 배포할 수 있습니다. Linux 기반 운영 체제는 서버, 메인프레임, 데스크탑, 라우터, 텔레비전, 비디오 게임 콘솔 등과 같은 임베디드 시스템에서 실행됩니다. 스마트폰과 태블릿에서 실행되는 전반적인 안드로이드 운영체제는 리눅스 커널을 기반으로 하고 있으며, 이로 인해 리눅스가 가장 널리 설치되는 운영체제이다.

Linux는 Windows, iOS, Android 또는 macOS와 같은 운영 체제입니다. OS는 컴퓨터와 관련된 모든 하드웨어 리소스를 관리하는 소프트웨어입니다. 이는 OS가 소프트웨어와 하드웨어 간의 전체 통신을 관리한다는 의미입니다. 또한 다양한 배포판(distro)이 존재합니다. 이는 Windows 운영 체제 버전과 같습니다.

대화형 인스턴스를 통해 Parrot OS의 맞춤형 버전인 Pwnbox에 액세스할 수 있습니다. 이는 모듈을 통해 작업할 기본 OS가 됩니다. Parrot OS는 보안, 개인 정보 보호 및 개발에 중점을 둔 Debian 기반 Linux 배포판입니다.

2. Linux 5가지 철학

원칙 설명
Everything is a file 운영 체제에서 실행되는 다양한 서비스에 대한 모든 구성 파일은 하나 이상의 텍스트 파일에 저장
Small, single-purpose programs  우리가 함께 작업할 수 있도록 결합할 수 있는 다양한 도구를 제공
Ability to chain programs together
to perform complex tasks 
다양한 도구의 통합 및 조합을 통해 특정 데이터 결과 처리 또는 필터링과 같은 크고 복잡한 작업을 수행
Avoid captive user interfaces 셸과 함께 작동하도록 설계되어 사용자가 운영 체제를 더 효과적으로 제어
Configuration data stored in a text file   /etc/passwd : 시스템에 등록된 모든 사용자를 저장하는 파일 존재

 

3. 7가지 구성요소

요소 설명
Bootloader 운영 체제를 시작하기 위한 부팅 프로세스를 안내하기 위해 실행되는 코드입니다.
Parrot Linux는 GRUB 부트로더를 사용합니다.
OS Kernel 커널은 운영 체제의 주요 구성 요소입니다. 
하드웨어 수준에서 시스템의 I/O 장치에 대한 리소스를 관리합니다.
Daemons Linux에서는 백그라운드 서비스를 "데몬"이라고 합니다. 
예약, 인쇄, 멀티미디어 등의 주요 기능이 올바르게 작동하는지 확인하는 것입니다.
이러한 작은 프로그램은 컴퓨터를 부팅하거나 로그인한 후에 로드됩니다.
OS Shell 운영 체제 셸 또는 명령 언어 해석기(명령줄이라고도 함)는 OS와 사용자 간의 인터페이스입니다.
이 인터페이스를 통해 사용자는 OS에 수행할 작업을 지시할 수 있습니다.
일반적으로 사용되는 쉘은 Bash, Tcsh/Csh, Ksh, Zsh 및 Fish입니다.
Graphics server 그래픽 프로그램이 X-윈도우 시스템에서 로컬 또는 원격으로 실행될 수 있도록 하는 "X" 또는 "X-서버"라는 그래픽 하위 시스템(서버)을 제공합니다.
Window Manager 그래픽 사용자 인터페이스(GUI)라고도 합니다.
GNOME, KDE, MATE, Unity, Cinnamon을 포함한 다양한 옵션이 있습니다. 
데스크탑 환경에는 일반적으로 파일 및 웹 브라우저를 포함한 여러 애플리케이션이 있습니다.
이를 통해 사용자는 운영 체제의 필수적이고 자주 액세스되는 기능과 서비스에 액세스하고 관리할 수 있습니다.
Utilities 사용자나 다른 프로그램을 위해 특정 기능을 수행하는 프로그램입니다.

 

4. Linux 아키텍처

Layer 설명
Hardware 시스템의 RAM, 하드 드라이브, CPU 등과 같은 주변 장치
Kernel CPU, 할당된 메모리, 액세스된 데이터 등과 같은 일반적인 컴퓨터 하드웨어 리소스를 가상화하고 제어하는 ​​기능을 갖춘 Linux 운영 체제의 핵심입니다. 커널은 각 프로세스에 고유한 가상 리소스를 제공하고 서로 다른 프로세스 간의 충돌을 방지/완화합니다.
Shell 사용자가 명령을 입력하여 커널 기능을 실행할 수 있는 셸이라고도 하는 명령줄 인터페이스( CLI )입니다.
System Utility 사용자가 운영 체제의 모든 기능을 사용할 수 있도록 합니다.

 

5. 파일 시스템 계층 (트리형 계층 구조)

 - 표준 최상위 디렉토리 (알아야 할 14가지 하위 디렉토리)

Path 설명
/ 최상위 디렉토리
루트 파일 시스템이며 다른 파일 시스템을 마운트하기 전에 운영 체제를 부팅하는 데 필요한 모든 파일과 다른 파일 시스템을 부팅하는 데 필요한 파일을 포함합니다. 부팅 후 다른 모든 파일 시스템은 표준 마운트 지점에 루트의 하위 디렉터리로 마운트됩니다.
/bin 필수 명령 바이너리가 포함
/boot 정적 부트로더, 커널 실행 파일, Linux OS 부팅에 필요한 파일로 구성
/dev 시스템에 연결된 모든 하드웨어 장치에 대한 액세스를 용이하게 하는 장치 파일이 포함
/etc 로컬 시스템 구성 파일 및 설치된 애플리케이션의 구성파일 저장
/home 시스템의 각 사용자의 하위 디렉토리 포함
/lib 시스템 부팅에 필요한 공유 라이브러리 파일
/media USB 드라이브와 같은 외부 이동식 미디어 장치 장착
/mnt 일반 파일 시스템의 임시 마운트 지점
/opt 타사 도구와 같은 선택적 파일 저장
/root 루트 사용자의 홈 디렉터리
/sbin 시스템 관리에 사용되는 실행 파일(바이너리 시스템 파일)이 포함
/tmp 운영 체제와 많은 프로그램은 tmp 디렉토리에 임시 파일을 저장
일반적으로 시스템 부팅 시 지워지며 경고 없이 삭제될 수 있음
/usr 실행 파일, 라이브러리, man 파일 등이 포함
/var 로그 파일, 이메일 받은 편지함, 웹 애플리케이션 관련 파일, cron 파일 등과 같은 가변 데이터 파일이 포함