리눅스(Linux)

[리눅스] 가상화 & Virtual machine & Ubuntu & 네트워크

happyso 2020. 9. 5. 00:05

<운영체제에 대한 이해>

1. 운영체제란?

- 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임

- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종

- 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 제공

2. 운영체제의 목적

- 처리능력 향상, 사용가능도 향상, 신뢰도 향상, 반환시간 단축

- 컴퓨터의 하드웨어를 관리하는 것

- 컴퓨터에는 수많은 하드웨어(CPU, 메모리, 디스크, 키보드, 마우스, 모니터, 네트워크 등)가 있으며 이를 잘 관리해주어야 컴퓨터를 효율적으로 사용할 수 있다.

- 사용자에게 편의 제공

 

 

 

<가상머신에 대한 이해>

1. 가상머신의 정의

- 컴퓨팅 환경을 소프트웨어로 구현한 것, 즉 컴퓨터를 에뮬레이션 하는 소프트웨어.(하드웨어를 소프트웨어 적으로 처리해줌)

 

- VMware Workstation/Player, VirtureBox, ....

- VMware가 좋지만 유료기때문에 한계가 있어

- 가상화는 HOST PC가 가지고 있는 resource를 할당받아서 쓰므로 

- 메모리 무제한으로 줄 수 없음

 

2. HOST OS

- 가상화 소프트웨어가 동작하는 머신(PC)

- 호스트에 설치된 OS

- 실물컴퓨터에 설치된 OS

- 물리머신에 설치된 OS

 

- HOST에 깔려있는 것 HOST OS

 

3. Guest OS

- 가상화 소프트웨서 안에서 동작하는 운영체제

- 우분투는 Guest OS 중 하나

 

 

4. 동적할당

- GUEST OS안에서 프로그램을 깔아서 하드디스크를 쓰는 용량에 맞춰 늘려갈지, 아니면 미리 크기를 지정해놓고 쓸지 정하는 것. 성능적으로 미묘한 차이가 있긴 하지만 큰 차이는 없음

 

5. VDI(VirtureBox Disk)

- 하드디스크를 파일 형태로 만들어 논 것

- 이 과정까지 마치면 피씨를 하나 조립한 상태

 

<네트워크>

- VirtureBox에서 제공해주는 네트워크 카드의 종류를 이해해야함

- 통신이 가능하도록 해주는 기능 뿐만 아니라 네트워크가 연결되는 범위까지를 소프트화 해줌

- 네트워크 카드가 소프트웨어로 제공됨

 

 

1) NAT(Network Address Translation)

 

- 5개의 우분투를 깔았다고 보면 됨

- 내 피씨가 사용하는 네트워크 카드가 있고, 우분투가가지고 있는 네트워크 카드가 있음(소프트웨어적으로 처리)

이걸 NAT이라고 설정하면 호스트 머신이 가진 네트워크를 가지고 새로운 네트워크를 만드는 것

IP번호 앞에 3자리를 보면 다르다는 것을 알 ㅇ수 있어 -> 네트워크 대역이 틀리다.

호스트 머신을 통해 외부로 나갈 수 있음 대신 외부에있는 어떤 피씨에서 들어오기 위해선 fort forwarding이라는것을 해야함

- 이때 호스트 머신이 게이트 역할을 한다.

외부에서 보이는 아이피는 호스트 머신밖에 안보이기 때문에 호스트 머신에서 특정 포트로 들어왔을 떄 이쪽으로 가라고 알려줘야함 -> 이게 fort forwarding이라고 함

- NAT: 게스트끼리 통신을 할 수 없음

 

2) NAT Network

- 위 그림과 차이 : 가상머신끼리 연결돼있음

- 일반적으로 안에 있는 놈들끼리는 통신이 가능함

- NAT Natwork: 게스트끼리 통신을 할 수 있음

 

 

3) Internal Network(내부 네트워크)

- 지들끼리만 통신하고 외부랑 할 수 없는 것

 

4) Host-Only Adapter(호스트 전용)

 

5) Bridge Adapter (브릿지)

- 동일하게 되는 것

- IP대역이 동일한 것

- 직접적으로 외부와 통신할 IP가 있기 떄문에 제일 쉽지만 환경에 따라 다름

- 교육장 , 회사 같은 곳에서는 IP가 고정되어있음. --> 브릿지 쓰기 어렵고 NAT같은 것을 써야함

 

- 우리는 지금부터 NAT네트워크를 쓸것임

 

<NAT네트워크를 만들어주기 위해서는>

- 10.0.2.0 ~ 24 까지 서브 네트워크가 생김

- NAT Network추가할 때마다 어댑터가 만들어짐

- 기타 -> 만들기 누르면 어댑터가 추가됨 (나중에 이야기 해도 됨)

 

내가 컴퓨터를 하나 만들어놨어. 내가 사용할 프로그램이 깔려만 있으면 쓸 수 있음. 가상머신을 만든 호스트와 유사한 환경을 가지고 있어야함. 

 

 


 

<VM Ware 다운받는 법>

#1 아래 사이트에서 2개의 파일을 다운로드합니다. 

https://download.hanbit.co.kr/ubuntu/18.04/

VMware-player-15.0.3-12422535.exe

Ubuntu18.04_Server.exe

 

#2 VMware-player-15.0.3-12422535.exe 을 실행해서 설치를 진행합니다. (기본 설정 상태로 설치 진행)

 

#3 Ubuntu18.04_Server.exe 을 실행해서 압축해제합니다. (압축 해제할 폴더는 중복되지 않게 설정)

 

#4 시작 메뉴에서 VMware Workstation 15 Player 를 실행합니다.



#5 만들어 놓은 가상 머신 이미지를 불러와서 실행

 

#6 #3에서 압축해제한 디렉터리에 server.vmx 파일을 선택

 

#7 교재의 저자가 만들어서 배포한 가상머신을 실행

 

#8 우분투 실행을 확인



VirtualBox 시작 시 오류가 나는 경우

#1 가상화 여부 확인 

작업관리자(Ctrl+Alt+Del) 

 

#2 Windows 기능 켜기/끄기 설정 확인/변경

 

#3 CMOS 가상화 설정(활성화)

 

리눅스 커널 소스 확인

https://github.com/torvalds/linux

 

 

VirtualBox 스냅샷 기능 

#1 터미널에서 abc.txt 파일을 생성

 

#2 새로운 파일을 생성한 상태를 저장



#3 새로운 파일을 추가



#4 #2 상태로 되돌아 가고 싶은 경우

 

#5 #3번 상태로 이동(복원)




#6 실수로 시스템 파일을 삭제 후 리부팅

 

#7 부팅이 되지 않는 것을 확인

 

#8 스냅샷을 이용해서 복구

 

VirtualBox 확장 기능 이용

#1 장치 > 게시트 확장 CD 이미지 삽입

 

 

 



#2 재시동 후 윈도우를 확대, 축소했을 때 해상도가 변경되는 것을 확인

 

#3 호스트와 게스트 간 클립보드 공유를 설정

#3-1 장치 > 클립보드 공유 > 양방향을 선택 후 리부팅

 

#3-2 호스트와 게스트 간 Copy & Paste 동작 여부를 확인

 

#4 호스트와 게스트 간 공유 폴더 설정

https://gist.github.com/estorgio/0c76e29c0439e683caca694f338d4003

 

#4-1 호스트 머신에 공유에 사용할 디렉터리를 생성



#4-2 root 사용자로 로그인 후 게스트 머신에 공유에 사용할 디렉터리를 생성

사용자 머신이름

~~~~~~ ~~~~~~

ubuntu@server:~$ sudo su 

root@server:/home/ubuntu# cd 

root@server:~# mkdir /ShareFolder



# cd ⇐ 루트 사용자가 cd 명령어를 실행

$ cd ⇐ 일반 사용자가 cd 명령어를 실행

 

#4-3 장치 > 공유 폴더 > 공유 폴더 설정을 설정



#4-4 설정

폴더 경로 : 호스트 머신에서 사용할 공유 폴더 경로

폴더 이름 : 폴더를 구분하기 위한 이름

읽기 전용 : 게스트 운영체제에서 읽기 용도로만 사용 (선택하지 않으면 읽고 쓸 수 있음)

자동 마운트 : 게스트 운영체제가 실행될 때 자동으로 공유가 되도록 설정

마운트 지정 : 게스트 머신에서 사용할 공유 폴더 경로 (/ShareFolder)



#4-5 파일 공유를 확인

 

포트 포워딩을 이용한 내부 네트워크 이용

#1 FireFox 브라우저를 실행해서 네이버로 접속되는 것을 확인

 

#2 우분투에 nginx 서버를 설치

ubuntu@server:~$ sudo apt-get update

[sudo] ubuntu의 암호: ubuntu

받기:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]  

기존:2 http://kr.archive.ubuntu.com/ubuntu bionic InRelease                   

받기:3 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]  

받기:4 http://security.ubuntu.com/ubuntu bionic-security/main amd64 DEP-11 Metadata [48.9 kB]

받기:5 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]

받기:6 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 DEP-11 Metadata [56.0 kB]

받기:7 http://security.ubuntu.com/ubuntu bionic-security/universe DEP-11 64x64 Icons [109 kB]

받기:8 http://kr.archive.ubuntu.com/ubuntu bionic

:

 

ubuntu@server:~$ sudo apt-get install -y nginx

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다       

상태 정보를 읽는 중입니다... 완료

다음의 추가 패키지가 설치될 것입니다 :

  libnginx-mod-http-geoip libnginx-mod-http-image-filter

  libnginx-mod-http-xslt-filter libnginx-mod-mail libnginx-mod-stream

  nginx-common nginx-core

제안하는 패키지:

  fcgiwrap nginx-doc

다음 새 패키지를 설치할 것입니다:

  libnginx-mod-http-geoip libnginx-mod-http-image-filter

:

 

ubuntu@server:~$ sudo service nginx restart

 

ubuntu@server:~$ sudo service nginx status

● nginx.service - A high performance web server and a reverse proxy server

   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en

   Active: active (running) since Fri 2020-09-04 15:43:21 KST; 8s ago

     Docs: man:nginx(8)

  Process: 3448 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 -

  Process: 3450 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code

  Process: 3449 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process 

 Main PID: 3451 (nginx)

    Tasks: 2 (limit: 2328)

   CGroup: /system.slice/nginx.service

           ├─3451 nginx: master process /usr/sbin/nginx -g daemon on; master_pro

           └─3452 nginx: worker process

 

 9월 04 15:43:21 server systemd[1]: Stopped A high performance web server and a 

:

 

#3 우분투 가상머신의 IP를 확인

ubuntu@server:~$ ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host 

       valid_lft forever preferred_lft forever

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 08:00:27:96:b2:75 brd ff:ff:ff:ff:ff:ff

    inet 10.0.2.4/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3

       valid_lft 525sec preferred_lft 525sec

    inet6 fe80::2e79:698a:dba3:9968/64 scope link noprefixroute 

       valid_lft forever preferred_lft forever

 

#4 우분투에서 nginx로 접속

http://localhost

http://127.0.0.1

http://10.0.2.4 



#5 호스트 머신에서 우분투 머신의 IP로 nginx에 접속되는지 확인

 

#6 호스트 머신의 IP 주소를 확인

Microsoft Windows [Version 10.0.18363.753]

(c) 2019 Microsoft Corporation. All rights reserved.

 

C:\Users\myanj> ipconfig

 

Windows IP 구성

 

이더넷 어댑터 이더넷: ⇐ 랜카드 = NIC(Network Interface Controller) 

~~~~~~ ⇒ LAN 영역에서 사용하는 통신기술 중 하나

          LAN 영역에서 사용하는 기술 중 사실상 표준(De Factor Standard) 방식

   연결별 DNS 접미사. . . . :

   링크-로컬 IPv6 주소 . . . . : fe80::467:328a:16f3:43f1%6

   IPv4 주소 . . . . . . . . . : 192.168.0.218 ⇐ 32비트로 구성된 주소 체계 (232 개의 주소를 표현) 

   ~~                                                 0.0.0.0~255.255.255.255

   서브넷 마스크 . . . . . . . : 255.255.255.0

   기본 게이트웨이 . . . . . . : 192.168.0.1 ⇐ 게이트웨이 → SW 측면 / 라우터 → HW 측명

                                                     각기 다른 네트워크ID를 사용하는 LAN 영역을 연결해주는 기능

이더넷 어댑터 VirtualBox Host-Only Network:          스위칭(switching) ⇒ LAN 영역에서 내부 통신을 수행 (MAC 주소)

 

   연결별 DNS 접미사. . . . :

   링크-로컬 IPv6 주소 . . . . : fe80::d9df:db0e:379f:7e13%41

   IPv4 주소 . . . . . . . . . : 192.168.56.1

   서브넷 마스크 . . . . . . . : 255.255.255.0

   기본 게이트웨이 . . . . . . :

 

무선 LAN 어댑터 Wi-Fi:

 

   미디어 상태 . . . . . . . . : 미디어 연결 끊김

   연결별 DNS 접미사. . . . :



IP(Internet Protocol) 주소

인터넷 공간에서 자기 PC가 사용하는 고유한 식별자를 의미

 

서브넷 마스크(subnet mask)

IP 주소에서 네트워크 ID와 호스트 ID를 구분하는 방법



   IPv4 주소 . . . . . . . . . : 192.168.  0.218

  서브넷 마스크 . . . . . . .  : 255.255.255.0

                                 ~~~~~~~~~~~ ~~~ 

                                 192.168.0   218

                                 네트워크ID  호스트ID



#7 NatNetwork 수정

 

호스트 IP   : 호스트 머신에서 사용하는 IP 주소

호스트 포트 : 호스트 머신에서 포트 포워딩에 사용할 포트 번호

게스트 IP   : 게스트 머신(우분트)에서 사용하고 있는 IP 주소

게스트 포트 : 게스트 머신에서 사용하고 있는 서비스 포트



#8 호스트 머신에서 접속 확인

http://192.168.0.218:8888 



우분투 서버, 우분투 데스크탑, 쿠분투 설치를 꼭 해 보세요. (106페이지)

 

Ubuntu Desktop 설치 (교재 62~67 페이지 참조)

https://myanjini.tistory.com/entry/Ubuntu-Desktop-%EC%84%A4%EC%B9%98

 

Ubuntu Desktop 초기 설정 (교재 68~77 페이지 참조)

https://myanjini.tistory.com/entry/Ubuntu-Desktop-%EC%B4%88%EA%B8%B0-%EC%84%A4%EC%A0%95

 

Ubuntu Server 설치 (교재 80~85 페이지 참조)

https://myanjini.tistory.com/entry/Ubuntu-Server-%EC%84%A4%EC%B9%98

 

Ubuntu Server 초기 설정 (교재 86~91 페이지 참조)

https://myanjini.tistory.com/entry/Ubuntu-Server-%EC%B4%88%EA%B8%B0-%EC%84%A4%EC%A0%95



vi 에디터 사용법을 연습해 보세요. (121 ~ 128 페이지)


<이론수업>

 

GNU 프로젝트

1) 대표적인 리눅스 배포판

- 핵심이 되는 소스코드에 쉽게 쓸 수 있는 다양한 응용프로그램과 유저 인터페이스들을 제공해주는것

- 우분투, fedora, kubuntu, debian 등등,,

 

2) GNU 프로젝트의 목표와 FSF

- 모두가 공유할 수 있는 소프트웨어를 만드는 것이 목표

- 1985년 스톨먼은 GNU 프로젝트에서 제작한 소프트웨어를 지원하면서 누구든 소프트웨어를 자유롭게 사용할 숭 ㅣㅆ도록 FSF설립(Free Software Foundation)

 

 

3) GPL(General Public License)

 

 

리눅스의 탄생

1)유닉스 

- 리눅스가 탄생하기 이전 운영체제

- 지금도 많이 사용되는 운영체제 중 하나이지만 높은 비용 지불 필요

 

2) 리눅스

- 뮤료 유닉스 개념

- 유닉스와 거의 동일한 운영체제이면서 무료, 어떤 면에서는 유닉스보다 뛰어남

 

3) 커널

- 하드웨어를 제어해줌

- 리누스 토르발스가 1991년에 리눅스 커널 0.01 버전을 작성

- 1992년에 0.02버전을 내놓으면서 인터넷에 소스코드를 공개, 이것이 리눅스의 시초

- 통산적인 리눅스는 토르발스가 만든 커널에 컴파일러, 쉘(사용자가 제어할 수 있는..), 기타 프로그램이 조합된 배포판

- 배포판은 전 세계적으로 수백 가지가 넘지만 모두 토르발스가 제작한 커널을 사용하며 대표적인 것이 우분투 리눅스

 

4) 리눅스 배포판의 구성

사진첨부 예정

 

5) 커널의 구성

- 안정버전 : 이미 검증된 개발 완료 코드로 구성

- 메인라인버전 : 토르발스가 개발중인 버전, 안정 버전이 나오기 전에 추가된 기능을 미리 접하고 싶을 떄 사용

- 프리패치 버전 : 안정 버전이 나오기 전에 추가된 기능을 미리 접하고 싶을 때 사용

 

6) 커널 버전 업그레이드 

 

 

github.com/torvalds/linux

 

torvalds/linux

Linux kernel source tree. Contribute to torvalds/linux development by creating an account on GitHub.

github.com

 

 

7) 데비안 리눅스

- 유명한 리눅스 배포판 중 하나이며 1993년에 이언머독이 창시한 데비안 프로젝트에서 제작

- 패키지의 설치와 업그레이드가 상당히 단군하고 apt프로그램을 이용하여 소프트웨어 설피나 업데이트가 자동으로 진행됨

 

8) 우분투 리눅스

- 데비안 리눅스를 기초로 유니티 데스크톱 환경을 사용하는 리눅스 배포판

- 첫 버전을 출시한 이후 계속 업그레이드 됨, 인기 리눅스 배포판 중 하나

- 기본적으로 우분투 데스크톱과 우분투 서버를 배포

- 쿠분투, 우분투 킬린, 루분투, 주분투 등 다양한 배포판 개발, 이를 통틀어 '우분투 플레이버스(Ubuntu flavours)'라고 부름

- 우분트 데스크탑(GUI) , 우분투 서버(CLI)

 

9) 우분투 리눅스 버전 주기

- 일반 버전은 약 6개월 마다, LTS(장기5년)버전은 2년마다 새로운 버전 발표

 

10) 최소 권장사항

 

ubuntu system requirements - Google 검색

2020. 2. 19. · I want to install ubuntu but latest version is 18.04 LTS, what is the system requirement for this. I have 1gb ram and 32 bit system, core duo 2 ...

www.google.com

 

11) 가상머신의 개념

- PC 1대 만으로 여러대의 PC를 운영하는 것처럼 만드는 방법

- 실습에서 사용할 환경 안내

 : PC 1대에서 리눅스 3대를 구동(리눅스 서버, 서버(B), 리눅스 클라이언트)

 

12) 가상머신 소프트웨어 

- 컴퓨터에 설치된 운영체제(호스트OS)안에 가상의 컴퓨터를 만들고 이 가상의 컴퓨터 안네 또 다른 운영체제(게스트OS)를 설치 운영할 수 있도록 제작된 소프트웨어

 

VM이라고 되어있는게 가상 라우터

이더넷?이 네트워크 카드...?

 

 

 

<스냅샷 기능>

해서는 안될 뭔가를 했을 때

현재상태의 스냅샷을 따로 뜨는 이유는 ? 중요한 작업을 할 때마다

현재상태가 문제가 있는 상태일 때도 스냅샷을 찍는 경우는? 에러난 원인을 찾기위해서!!!!

스냅샷 자체를 자주 남겨야함

우분투 설치하면 일단 스냅샷 냄겨놔(원본상태)

 

 

 

이더넷 어댑터:

NIC(Network Interface Controller)를 나타냄 (랜카드)

이더넷이란 뭘 뜻할까? 기술 표준 (랜 영역에서 사용하는  통신기술 중 하나)

그럼 랜은 뭘까? 

 

이더넷 어댑터 이더넷

어댑터 : 랜카드 (NIC = LAN 카드)

IPV4 주소 : 버전4 (32비트로 구성된 주소 체계)

IP : 인터넷 공간에서 자기PC가 사용하는 고유한 식별자를 의미

서브넷 마스크 : IP주소에서 네트워크ID와 호스트ID를 구분하는 방법

게이트웨이(소프트웨어 측면에서의 명명) : 나가는 구멍, 라우터(하드웨어 측면에서의 명명)