Linux기초

"Linux Stuty"

Posted by Chungman on April 3, 2021

Linux 프로그래밍 강의 구성

image

Linux란?

< 유닉스(Unix) >

  • 중.대형 서버 시스템에서 가장 많이 사용되는 OS
  • 고성능, 고가용성의 운영체제
  • 예_ IBM(AIX), HP(HP-UX), SUN(Soralis)

< 리눅스(Linux) >

  • 1991년 리누스토발즈(Linus Torvalds) 가중/대형 기종에서만 작동하던 유닉스를 PC에서도 동작 할 수 있게 만든 OS
  • 특징•프로그램 소스코드를 무료로 공개하여 사용자는 원하는대로 특정 기능을 추가함
  • 어느 플랫폼에도 포팅이 가능함
  • 현재는 개인PC, 기업의 중대형 컴퓨터, 임베디드기기, 모바일기기에서도 리눅스가 동작

Linux 구성

< 리눅스구성 >

  • 리누스토르발스(Linus B. Torvalds)가 1991년에 리눅스 커널(kernel) 0.01 버전을 작성
  • 1992년에 0.02 버전을 내놓으면서 인터넷에 소스코드를 공개, 이것이 리눅스의 시초
  • 통상적인 리눅스는 토르발스가 만든 커널에 컴파일러, 셸, 기타프로그램이 조합된 배포판
  • 배포판은 전세계적으로 수백가지가 넘지만 모두 토르발스가 제작한 커널을 사용하며 대표적인 것이 우분투리눅스

image

커널

< 커널의 구성 >

  • 안정버전(stable version): 이미 검증된 개발완료 코드로 구성
  • 메인라인버전(mainline version): 토르발스가 개발중인 버전, 안정버전이 나오기 전에 추가된 기능을 미리 접하고싶을 때 사용
  • 프리패치버전(prepatchversion): 안정버전이 나오기 전에 추가된 기능을 미리 접하고싶을 때 사용

< 커널 버전 업그레이드 >

  • 2019년 5월을 기준으로 안정화 된 최신 커널은 5.1.15 버전
  • 파일이름에 붙은 숫자 5.1.15의 5는 주버전(major version), 1은 부버전(minor version), 15는 패치버전(patch version)을 의미
  • 배포판에 포함된 기본 커널을 사용자가 직접 최신 커널로 업그레이드 할 수 있으며, ‘커널 업그레이드’ 또는 ‘커널컴파일’ 이라고 함

image

가상머신

< 가상머신 >

  • PC 1대만으로 여러 대의 PC를 운영하는 것처럼 만드는 방법 (가상머신 소프트웨어 또는 가상머신 프로그램이라 부름)

< 가상머신 소프트웨어 >

  • 컴퓨터에 설치된 운영체제(호스트OS) 안에 가상의 컴퓨터를 만들고 이 가상의 컴퓨터 안에 또 다른 운영체제(게스트OS)를 설치·운영 할 수 있도록 제작된 소프트웨어
  • PC에 설치되어 있는 윈도우를 호스트 운영체제(host operating system) 또는 호스트OS, 가상머신에 설치한 운영체제를 게스트 운영체제(guest operating system) 또는 게스트 OS라고 함

image

  • 가상머신(게스트컴퓨터) 3대를 만들고 리눅스 3대 설치
  • 가상머신 3대에는 가상IP 주소를 할당하고, 가상 라우터를 통해 가상머신 3대를 하나의 네트워크로 묶어 동일한 네트워크 환경으로 사용 → 윈도우(호스트OS) 1대와 리눅스 3대로 이루어진 환경이 만들어짐

가상머신의 장점

< 컴퓨터 1대에 실무와 비슷한 네트워크 환경 구성 >

  • 실무환경에서 사용되는 각종 리눅스 네트워크 서버 기능을 컴퓨터 1대에 구축가능

< 운영체제의 특정 시점을 저장하는 스냅숏 기능 >

  • 중요한 시점을 저장하는 기능, 필요시 언제든 저장시점으로 돌아 갈 수 있음

< 여러개의 하드웨어를 장착하여 테스트 가능 >

  • 가상머신에서는 사용자가 원하는 용량의 가상 하드디스크를 여러개 장착가능

< 현재 상태를 저장했다 추후에 이어서 작업하게 해주는 Suspend 기능 >

  • Suspend(일시중지) 기능을 이용하면 현재의 가상머신 상태를 그대로 보관하여 우선 종료하고, 추후에 가상머신을 다시 가동하여 Suspend 상태부터 이어서 작업가능

< 가상머신을 사용하기에 적합한 경우 >

  • 실무와 비슷한 네트워크 환경을 구성하여 여러대의 서버를 구축하려 할 때
  • 여러가지 운영체제를 설치하여 학습하려 할 때
  • 새로운 시스템을 도입하기 전에 테스트 해보려 할 때