22.04.05

HyeonKi Jo·2022년 4월 4일
1
post-thumbnail

이론

운영체제

운영체제란?

  • Legacy : 전통적인 방식
  • 운영 체제 또는 OS(Operation System)은 하드웨어 관리, 소프트웨어 실행 하기 위해, 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다.
  • 최근에는 가상화 기술의 발전에 힘업어 실제 하드웨어가 아닌 하이퍼바이저(가상머신) 위에서 실행되기도 한다.
  • 또, 입출력과 메모리 할당과 같은 하드웨어 기능의 경우, 운영 체제는 응용 프로그램과 컴퓨터 하드웨어 사이의 중재역할(커널, Kernel)을 한다.
  • 현재는 Windows, MacOS X, Linux가 있고, 이 밖에 BSD. 유닉스 등의 PC용 OS도 존재한다.
  • 운영 체제는 실행되는 응용 프로그램들이 메모리와 CPU, IO장치등의 자원들을 사용할 수 있도록 만들어 준다.
  • 도한, 멀티태스킹을 지원하는 경우, 여러 개의 응용 프로그램을 실행하고 있는 동안, 운영 체제는 이러한 모든 프로세스들을 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이는 효과를 낸다.

운영체제 구성 요소

커널

커널(kernel)이란 OS에서 가장 중요한 프로그램 중 하나이며, 하드웨어 자원을 관리하는 관리자이다. 즉, 어떤 프로그램이 작동할 수 있도록 CPU, 메모리, 디스크 등 하드웨어 자원을 배분하는 것이 커널이다.

커널의 4가지 기능

  • 메모리 관리 : 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적.
  • 프로세스 관리 : 어느 프로세스가 중앙 처리 장치 (CPU)를 언제 얼마나 오랫동안 사용할지(스케쥴링, 배치, 배분)를 결정한다.
  • 장치 드라이버 : 하드웨어와 프로세스 사이에서 중재자/인터프리터(번역, 통역)의 역할을 수행한다.
  • 시스템 호출 및 보안 : 프로세스의 서비스 요청을 수신한다.

  • 쉘(shell)이란 사람이 사용하는 명령어를 프로그램이 실행할 수 있도록 만들어주는 인터페이스이다.

실습

복습

  • backup : ova 파일로 내보내기 (다른 머신으로 옮기기)
  • snapshot : 타임머신 기능 (어느 한 시점을 찍고 돌아가는 복원 기능)
  • ssh : Secure Shell (서버(Phisical M. Virtual M)에 접속하는 도구)
  • ip a : ip확인하는 명령어
    - CentOS7Minimal에서 ip a한 ip와 CMD에서 ipconfig한 ip가 다르다. -> 통신이 불가
  • ssh root@10.0.2.15 -> 현재 불가
  • DHCP : Dynamic Host Configuration Protocol (자동 IP할당)
    • 복제한 VM이 MAC주소가 똑같아서 IP를 똑같이 부여해버린다.
    • 그렇다면 복제한 VM의 MAC주소를 바꿔줘야 한다.
    • 복제VM이 켜져있다면 poweroff한 후, VM설정에 들어가 네트워크 -> 고급 -> MAC주소 오른쪽 새로고침 누르기

NAT

  • NIC : Network Interface Card (랜카드), 실제 랜카드
  • vNIC : Virtual Network Interface Card(가상 랜카드)
  • 공인IP가 없으면 인터넷의 통신이 되지 않는다.
    - 통신사에서 내 공유기에 공인(외부) IP를 주고, 수수료를 먹는것이 인터넷 요금이다. (네이버에 내 아이피 검색)
    • 결국 각 집마다 IP가 하나 있는 것이고,
    • 각 client는 공유기에서 사설 IP를 받아 사용하는 것이다.
  • NAT는 공유기 안에서, 사설IP와 공인IP를 서로 전환하여 통신할 수 있도록 해주는 것이다.
  • 포트
    - 80, 22 등이 있다.
  • 포트 포워드 : 포워드(forward, 전달), 스위치, IP 공유기 를 통해 내 PC로 들어올 수 있도록 한다. 호스트포트를 열고, 거기로 오는 호스트Ip의 신호를 받아서 게스트포트를 열어주고 연결시켜준다.
  • **IP통신에는, 출발지 IP번호목적지 IP번호가 필수이다.
  • 공유기를 세팅하지 않으면, 안에서 밖으로 나갈 수 있지만(아웃 바운드), 처음부터 밖에서 들어보는 트래픽(인바운드)은 들어오지 못한다. 방화벽에 막히게 된다.(deny)
  • 이를 송신 전용 게이트웨이라고 한다.**
  • 호스트 ip (win10 ip)
  • 게스트 ip (VM ip)
  • 호스트 포트 : 22, 게스트 포트: 22
  • known host 리스트 목록에 집어넣어진다. (알려진 호스트로 저장)

    만약 안될 때,

    • dir로 .ssh폴더 확인
    • .ssh들어가서 dir로 known host 파일 있나 확인
    • del known host로 삭제
    • cd ../로 복귀후 다시 시도해보기
  • 명령프롬프트에서 exit로 나갈 수 있음
  • 옆 사람 VM에도 접속해보자
    • adduuser '아이디'
    • passwd '아이디' 이렇게 접속용 계정을 만들어 보자
    • ssh '아이디'@ip주소 를 입력하면 로그인이 되는 것을 볼 수 있다.

VirtualBox 네트워크 종류

  • bridge : 외부 IP 사용가능
  • NAT (같은 IP)
    • NAT를 이용하면, 고정된 IP를 사용하여, VM을 복제하면 IP가 똑같아 문제가 될 수 있다. 따라서 Natnetwork를 사용해야 한다. 이것은 Virtualbox의 특징이다.
  • Natnetwork(직접 만들 수 있음)
    • Vbox 환경설정(전역)에 들어가서 네트워크 -> 네트워크 추가 -> 확인 누르면 된다.
    • 각 VM 설정에 들어가 네트워크를 NATNetwork로 바꿔준다.
    • 다른 곳에서는 자동으로 NatNetwork를 만들어주고 Nat를 하나로 통합하지만 Vbox에서는 특이하게 둘로 나뉘었다.
  • host only(호스트 전용 어댑터)
  • 내부네트워크(가상스위치)

하나의 호스트, 두개의 VM

  • 하나의 호스트, 하나의 VM이 있을 때, 호스트 IP하나로 게스트 VM으로 들어갈 수 있었다.
  • 만약 VM이 두개라면 어떻게 들어가야 하나?

    포트포워드에 답이 있다.
    포트를 서로 달리해서 다로 연결 해 준다

    • 이때 Vbox의 모습이 도커 컨테이너이다.
  • NATNetwork에서도 포트포워딩을 설정할 수 있다.

host only(호스트 전용 어댑터)

  • VM둘다 설정 네트워크에 들어가서 Host only로 바꿔준다.

  • 인터넷 사용 불가능한 IP이다. 그러나 SSH로 접근은 가능하다.

  • 호스트의 IP만 통신하는 네트워크이다. 호스트에서 ping을 보내면 반사가 온다.

    • 이 IP는 외부와 통신하는 용도가 아닌, 자기 자신을 위한 IP. 루프백 IP라고 한다.
  • 이 상태에서 인터넷을 사용하려면 LAN카드를 하나씩 추가하면 된다.

  • VM각 설정에 들어가서 네트워크 -> 어댑터2 -> NAT, NATNetwork를 추가한다.

  • VMware에서는 유료지만 1개의 랜카드로 둘다 사용할 수 있다.

  • 포트포워딩을 진행해서, SSH연결을 통해 같은 네트워크 사람을 들어오게 할 수 있다. 그래서, 우리는 랜카드 2개로 SSH연결과 인터넷을 사용할 수 있게 되었다.

  • 자동 IP주는 방법은 실무에서는 보안상의 이유는 사용되지 않는다.

Bridge (브릿지)

  • 매우 편하다.
  • host only, NAT방법들은 노트북으로 설정했다, 집가서 인터넷을 바꿔도 똑같다. 그러나 브릿지는 다를 것이다.
  • 브릿지는 인터넷, 호스트와 모두 통신할 수 있다.
  • 먼저 각 VM에 네트워크 설정에서 어댑터2를 다 꺼주고, ost Only정을 어댑터에 브릿지 설정으로 바꿔준다.
  • 랜카드 2개를 이용하는 방법이 가장 무난한 방법이고, 브릿지는 IP를 못받는 상황이 발생한다.

센토스 7 경량 데스크톱 설치(X-Window)

센토스 7 경량 데스크톱 설치

  • 먼저 연결된 복제였던 VM을 지우고 새로 완전한 복제 VM을 만들어준다. 이름은 CentOS7XFCE로 한다.
  • 기본 메모리를 4Gb, CPU 2개, 디스플레이 비디오 메모리를 최대로 스케일업해준다.
    1. 센토스 7 커널 업데이트
# yum -y install yum-plugin-fastestmirror 
# yum install epel-release -y
# yum update -y
# yum install kernel-devel kernel-headers -y
# yum install -y install gcc make linux-headers-$(uname r) dkms
# reboot
  • yum : CentOS의 명령어

    「YUM 이란 Yellowdog Updater Modified 의 약자로서 rpm 기반의 시스템을 위한 자동 업데이터 이자 패키지 설치/ 삭제 도구입니다. 또한 YUM은 자동적으로 의존성을 처리해 주며 rpm 패키지들을 안전하게 설치, 삭제 및 업데이트하기 위해 반드시 해야 할 일을 스스로 해결합니다.」
    -솔직히 그냥 설치명령어다.-
    출처: https://nowonbun.tistory.com/114 [명월 일지]

  • yum-plugin-fastestmirror : 가장 가까운 mirror 사이트를 찾는다.
  • -y옵션 : 설치할때 묻지말고 설치
  • update : 버전업의 업데이트 (기능, 보안 등)
  • 이름에 kernel~~ 라고 들어간 것을 설치하게 되면 reboot으로 재부팅이 필요하다.

센토스 7 xfce 데스크톱 설치

# yum groupinstall "X Window System" Xfce -y
# systemctl set-default graphical.target
# rm -rf /etc/systemd/system/default.target
# ln -s '/usr/lib/systemd/system/graphical.target' '/etc/systemd/system/default.target'
# yum install -y unzip wget
  • rm : remove
  • rm -rf : remove 폴더까지 다 지워버림
  • unzip : zip해제
  • yum install -y unzip wget : wget을 설치하고 압축해제 까지 진행한다.

한글 나눔글꼴 설치

# mkdir /usr/share/fonts/nanumfont && cd $_
# wget http://cdn.naver.com/naver/NanumFont/fontfiles/NanumFont_TTF_ALL.zip
# unzip NanumFont_TTF_ALL.zip
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install -y perl gcc dkms kernel-devel kernel-headers make bzip2
  • mkdir : 디렉토리 만들기
  • wget :
  • re

Desktop화면

  • Not listed?-> root로그인 해준 후, 터미널을 켠다.
  • VM메뉴바에 장치를 누르고, 게스트 확장 CD 이미지 삽입을 눌러준다.
  • 이후 아래 명령어 입력
#mount /dev/sr0 /mnt
#cd /mnt
#./VBoxLinuxAdditions.run
#reboot

  • 위 작업을 마치면 화면 크기를 조정할 때, 알아서 화면 사이즈 조정이 된다.

  • VM메뉴바에 장치 -> 클립보드 공유 양방향, 장치 -> 드래그앤드롭 양방향 으로 설정하여 편안한 복붙을 즐기쟈
    - VM (Ctrl + shift + c 혹은 마우스 오른쪽 버튼)

gedit 설치

#yum install gedit -y
  • 메모장 이다.


리눅스 기본 명령어

0. 실습 준비

  • mkdir dir{A, B, C}
    - 각각 dirA, dirB, dirC 폴더가 만들어진다.
  • touch dir{A, B, C}/file{X, Y, Z}
    - 각 dirA~C 폴더 안에 fileX, fileY, fileZ파일들이 생성된다.(폴더하나에 X~Z까지 생성)
  • touch file{A, B, C, D}
    - fileA~D까지 만들어진다.


  • ls -F ./ dirA dirB dirC
    - 현재 폴더부터 dirA, dirB, dirC 폴더들에 모든 폴더 리스트를 다 보여준다.

1. CLI 구문

  • Command [option][Arguments]

  • uname
    - 운영체제의 이름
    • -a 옵션으로 자세한 정보를 알 수 있다.
  • date
    - 날짜와 시간확인,
    • 혹시 date가 틀어져있을 수도 있다.
  • cal
    - callender, 달력이 나온다.
    • cal 2 2016 : 2016년 2월 달력을 보여라
  • clear
    - 화면 정리

    여러가지 옵션

    • uname -a
      - (all일수도 있고 아닐수도 있음)
      • 옵션은 명령마다 달라서 다 외울 수 없다.
    • uname -s
    • uname -r
    • uname -s -r
    • uname -sr
      - -s -r처럼 따로, 혹은 -sr처럼 옵션을 줄 수 있다.

  • ls : 현재 위치의 파일 리스트를 보여준다.
    - ls -l : ls 명령어 + 파일별 세부 정보를 보여준다.
  • cd : Change Directory, 현재 위치에서 이동한다.
    - ~ : 틸드라고 읽는다, home으로 가게 된다.
    • / : cd에서 최상위 폴더를 말한다.
    • 절대경로 (예: /var/log/samba/old)로 한번에 이동할 수 있다.
  • uname; date : 이렇게 두가지 명령어를 ;세미콜론을 이용해 한번에 사용할 수 있다.
  • cal 5 2019; date; uname -a : 이렇게 볼 수 도 있다.


  • sleep [sec] : sec(초)만큼 멈추게 된다. 실행에 대한 우선순위를 부여할때 사용한다.
  • Ctrl+C : Terminates the command currently, 최근 실행 명령을 취소한다.
  • Ctrl+D : Indicates end-of-file or exit
  • mkdir : mk(make)dir(directory) 폴더 생성
    - mkdir -p /test : 최상위 디렉토리 아래 test디렉토리 생성
    - mkdir -p /test; cd /test; pwd : 최상위 test만들고 이동하고 현재위치 출력까지
  • pwd : 현재 작업 위치 확인
  • cat > file1 : 파일에 내용 입력
    - cat > file1 : 입력
    hello, Linux
    <Ctrl + D> : 파일의 끝 의미
    cat file1 : file내용 확인 (cat < file1) 이렇게 볼 수도 있다.

센토스 7 구글 크롬 설치(나중에 할 것)

# vi /etc/yum.repos.d/google-chrome.repo 
[google-chrome] 
name=google-chrome 
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1 
gpgcheck=1 
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub 
# yum install google-chrome-stable -y
# vi /opt/google/chrome/google-chrome
exec -a "$0" "$HERE/chrome" "$@" --no-sandbox --user-data-dir
#  /usr/bin/google-chrome
  • 이후 reboot 해준다.
  • 위 방법은 원래 Vbox는 구글 크롬이 사용이 안되지만, Repository를 새로 생성하여, 구글 크롬을 설치하여 사용할 수 있도록 하는 방법이다.
profile
Talking Potato

0개의 댓글