리눅스와 데비안


개요


운영체제의 간단한 정의와 CentOS/Debian의 차이에 대해 알아보겠다.

이번 포스팅에서는 42과제중 하나인 born2beroot에서 요구하는 수준정도의 운영체제 개념을 알아보겠다.

자세한 포스팅은 운영체제 카테고리에서 하겠다.


운영체제





CentOS


센트OS라고 발음한다. CentOS 프로젝트에서 레드햇과 제휴하여 만든 리눅스 운영체제이다.

레드햇 엔터프라이즈 리눅스의 소스 코드를 그대로 가져온 운영체제이다. 그러나 레드햇의 기술 지원은 받지 않으며 자체 커뮤니티에 의해 관리된다.

거의 대부분의 서버 운영체제로 센트OS를 사용한다.

업데이트 방식은 Yum을 사용한다. yum은 RPM 기반의 시스템을 위한 설치,제거, 업데이트 도구이다.

RPM 매니저는 Red hat Package Manager의 약자로 레드햇에서 사용했던 리눅스 패키지 관리 시스템이다.

패키지 관리 시스템은 컴퓨터의 운영 체제를 위해 일정한 방식으로 컴퓨터 프로그램의 설치, 업그레이드, 구성, 제거 과정을 자동화하는 소프트웨어 도구들의 모임이다

패키지란 아카이브 파일로 된 소프트웨어 배포판과 데이터를 의미한다.




Debian


개발자

데비안은 데비안 프로젝트가 개발한 리눅스 운영체제이다.


관리

레드햇 리눅스는 회사에 의해 관리, 유지보수가 되지만 데비안은 전적으로 커뮤니티에 의해 관리된다.

그렇기 때문에 업데이트가 굉장히 길다.


업데이트 방식

데비안의 업데이트 방식은 APT를 사용한다.

Advanced Packaging Tool의 약자로 데비안 리눅스 계열에서 설치, 업그레이드, 제거등 소프트웨어를 관리하는 도구이다.


패키지 관리자

패키지 관리자는 dpkg로 .deb 패키지의 설치, 삭제를 위해 사용된다.

간단하게 데비안은 DEB 패키지 포맷, dpkg/APT 패키치 관리자를 사용한다.


지원 아키텍처

데비안은 amd64, arm64, armel, armhf, i386, mips64el, mipsel, ppc64el, s390x의 아키텍처를 지원한다.


업데이트 주기

새로운 버전은 2년정도의 주기를 가지고 배포된다.


패키지 개수

데비안은 약 51000개의 패키지를 기본적으로 가지고 있다.


파일 시스템

데비안의 파일시스템은 EXT4를 사용하고 있다. 파일을 변경하기 전 미리 변경사항을 받아둔 다음 반영하는 방식이다.

파일시스템이란 물리적인 디스크의 파티션 내에서 클러스터 단위 데이터를 배치하고 관리하기 위한 체계를 의미한다.

클러스터란 트랙안에서 2개 이상의 섹터를 묶어서 하나의 단위로 만들어 놓은 것이다.


커널

데비안은 당연히 리눅스 커널을 사용한다.

커널은 하드웨어와 프로세스를 잇는 핵심 인터페이스이다. 커널이라는 단어의 뜻인 알맹이, 씨앗처럼 운영체제의 심장같은 존재이다.

보안, 메모리 관리, 프로세스 관리, 자원 관리등 운영체제의 주요 업무를 담당한다.

리눅스 커널은 단일형 커널, 다른말로 모놀리식 커널이다. 운영체제의 일반적인 기능을 커널과 동일한 메모리 공간에서 적재, 실행하는 것을 말한다.

리눅스 자체는 운영체제가 아니라 커널이다.

리눅스 커널을 사용하는 운영체제를 리눅스라고 부르기도 하기 때문에 리눅스 운영체제도 틀린말은 아니다.

커널은 운영체제의 일부분이고 가장 중요한 부분이다.

컴퓨터를 부팅시킬때 메모리에 가장 먼저 적재되는 부분이다.

예를 들어 카메라 앱을 실행 시킬때, 앱의 소프트웨어는 카메라와 마이크를 사용하길 원한다고 커널한테 말한다.

그러면 커널은 카메라와 마이크 하드웨어의 작동을 요청할 것이다.

운영체제는 커널과 함께 사용자 친화적인 시스템 프로그램을 포함한 하드웨어와 사용자간의 인터페이스이다.

https://www.fosslinux.com/42926/is-linux-an-operating-system-or-a-kernel.htm


Aptitude

Aptitude는 UI가 추가된 apt의 프론트엔드라고 보면된다.

따라서 의존성 문제 발생 시 삭제/설치/보류에 관한 기준 제시와 같이 사용자가 대화식으로 패키지를 설치하고 검색하고 삭제할 수 있다.

UI는 ncurses라이브러리에 기반을 두고있다. 따라서 apt-get을 따라할 수 있다.

ncurses는 프로그래머가 텍스트 사용자 인터페이스를 터미널 독립 방식으로 기록할 수 있도록 API를 제공하는 프로그래밍 라이브러리이다.

Aptitude는 high level 패키지 매니저이다. 고수준 패키지 매니저의 역할은 메타데이터 검색 및 의존성 문제 해결 작업 관리이다.

메타데이터는 데이터에 대한 데이터로 다른 데이터를 설명해주는 데이터를 말한다.

예를 들어 사진을 찍었다면 사진을 설명해주기 위한 촬영시간, 위치, 해상도 등등 사진 데이터를 설명해주는 데이터라고 생각하면 된다.

패키지명을 유연하게 조회할 수 있다.

“automatically installed” 또는 “manually installed” 로 패키지 조건을 지정해서 더 이상 필요하지 않을 때 자동으로 삭제처리가 이루어지도록 할 수 있다.

why와 why-not 커맨드를 통해 특정 패키지를 설치할 때 어떤 것이 요구되고 어떤 것과 충돌하는지 확인할 수 있으며 대안을 알려준다.

패키지에 적용될 처리액션을 색상으로 표현해서 쉽게 확인가능하다.

apt-get 보다 더욱 효율적으로 의존성 해결책을 제시한다.

대부분의 aptitude의 구문은 apt-get의 구문과 거의 동일하게 유지된다.


Apt

Apt는 Advanced Packaging Tool의 약자로 소프트웨어의 설치와 삭제를 다루는 오픈소스 소프트웨어이다.

초기에는 .deb 패키지를 위해 설계되었지만 RPM 패키지도 호환이 되게 발전했다.

참고로 RPM은 레드햇 계열 저수준 패키지 매니저일 수도 있고 확장자일 수도 있다.

Apt는 GUI가 없으며 전부다 커맨드 라인으로 처리한다.

패키지 설치를 위해 커맨드 라인에 칠때마다,

‘/etc/apt/sources.list’에서 의존성을 고려해서 소스들로 구성된 패키지를 찾고, 정렬하고, 자동으로 설치하기 때문에 의존성에 대해서 걱정할 필요가 없다.

여기서 의존성이란 한 패키지가 정상적으로 동작하기 위해서 다른 패키지나 라이브러리 패키지등이 필요한 경우를 말한다.

따라서 Apt 또한 고수준 패키지 매니저이다.

데비안에서 저수준 패키지 매니저는 dpkg이다. 저수준 패키지 매니저는 패키지 파일을 설치하고 삭제하는 작업을 관리한다.

apt 는 apt-get + apt-cache 자주 쓰는 기능을 넣은것이다.

apt-cache는 소프트웨어나 라이브러리를 터미널에서 검색하는 명령어이고 apt-get은 설치, 삭제, 업데이트할 때 쓰는 것이다.


AppArmor

application Armor의 줄임말로 데비안 계열의 리눅스의 보안 시스템이다. 리눅스 커널의 보안모듈에 속해있다.

시스템 관리자가 프로세스의 프로필별로 프로그램의 역량을 제한할 수 있게 해주는 모듈이다.

각 프로세스는 자체 보안 프로필을 가질 수 있다.

보안 프로필은 네트워크 액세스 또는 파일 읽기/쓰기/ 실행 권한과 같은 특정 기능을 관리한다.

AppArmor의 보안 정책은 개별 어플리케이션이 접근할 수 있는 시스템 자원과 소프트웨어에서 발생할 수 있는 행위들을 제어하는 문제에 여러가지 접근법을 정의하고 있다.

MAC(Mandatory Access Control)이 지원하고 있는데 정의된 정책을 활용해서 사용자와 프로세스를 제어한다.

강제적 접근통제

MAC모델에서 사용자들은 자원에 대한 권한을 관리자로 부터 부여받는다.

그리고 오직 관리자만이 객체과 자원들에 대한 권한을 할당할 수 있다.

자원에 대한 접근은 사용자에게 보안등급이 주어진 동안에 대상의 보안레벨에 기반한다.

관리자만이 객체의 보안레벨 또는 사용자 보안등급을 수정할 수 있다.

정보시스템 내에서 어떤 주체가 어떤 객체에 접근하려 할 때 양자의 보안레이블 정보에 기초하여 높은 보안을 요하는 정보가 낮은 보안수준의 주체에게 노출되지 않도록 접근을 제한하는 접근통제 방법


enforce mode

허가되지 않은 파일에 접근하는 것을 거부하는 모드


complain mode

허가되지 않은 파일에 접근 시에 위반 사항만 보고하는 모드




LVM


LVM 자세한 설명

LVM이란 논리적인 공간을 관리하는 프로그램이다.

리눅스는 디스크를 파티션으로 나누어 각각의 디렉터리에 파일 시스템으로 마운트 한 뒤 지정된 위치에 데이터를 저장해서 사용한다.

LVM은 커널에 구현된 기능으로 디스크를 볼륨이라는 논리 단위로 다룬다.

따라서 하나의 디스크를 여러개로 나누어 사용할 수도 있고 파티션의 크기를 조절할 수도 있다.

물리 볼륨

physical volume으로 /dev/sda1와 같은 파티션들을 말한다.

볼륨 그룹

물리 볼륨을 합쳐서 1개의 물리 그룹으로 만드는 것을 말한다.

논리 볼륨

볼륨 그룹을 1개 이상으로 나눠서 논리 그룹으로 나눈 것을 말한다.