32-bit CPU는 21억의 주소 절대값을 가진다. 하지만 메모리 어드레스에는 음수가 없기 때문에 음수 부분의 주소가 양수로 올라가서 42억, 즉 4GB의 메모리에 접근할 수 있게 된다. 16GB의 RAM을 가진 컴퓨터에서 32-bit의 CPU를 사용할 경우엔 Quad-Core여야 메모리를 전부 사용할 수 있다는 개념이다.
About Linux
Linux는 Red Hat 계열과 Debian 계열 중 Debian 계열의 OS이다.
원래 리누스 토발즈가 리눅스라는 OS 자체를 만든 줄 알았는데,
사실은 리눅스에 들어가는 Kernel을 개발한 것이라고 한다.
Kernel은 운영체제의 핵심 요소로써
사용자 -> Shell -> Kernel의 과정을 거쳐 명령어를 전달받고 실행하는 역할이라고 한다.
네트워크에 관하여
Networking을 위한 요소 3가지
1. 내 주소 : IP (Internet Protocol) 2. 서브넷 마스크 3. 대문 주소 : Gateway (Router)
서브넷 마스크 : 내 주소와 255.255.255.0을 2진수로 치환해서 AND연산을 수행하고 목적하는 IP주소도 같은 방식으로 연산을 수행한 후에 비교를 한다. IP주소의 앞자리 3개에 255라는 마스크를 씌워서 본연의 값을 그대로 나오게 하고 비교 결과가 같을 경우 같은 곳에 있는 것이기 때문에 대문 주소를 찾을 필요가 없다. (이 부분은 아직 잘 모르겠다. 일단은 서브넷 마스크의 동작 원리까지 이해했다.)
대문 주소 : 대문을 거쳐서 바깥으로 나가야 하기 때문에 대문 주소를 모르면 안에서 헤맬 수 밖에 없다.
IP의 종류
공인(Public) IP, 사설(Private) IP
물리적(Physical) IP (MAC Address) : 하드웨어에 박혀 있는 고정 IP
논리적(Logical) IP : 소프트웨어로 변경 가능한 IP
수동(Manual) IP : 내 IP, 서브넷 마스크, 게이트웨이를 직접 설정하는 것
자동(Automatic) IP : 부팅 시 자동으로 설정해주는 것
*DHCP(Dynamic Host Configuration Protocol) 서버 = 자동 IP 사용 시에 IP를 부여해주는 서버
NAT(Network Address Translation)
공인 IP는 가격이 비싸지만 인터넷에 접속이 가능하고,
사설 IP는 가격은 비싸지 않지만 인터넷에 접근하지 못하고 주변 기기와의 연결만 가능하다.
그래서 공인 IP 하나와 사설 IP 여러 개를 구매해서 공인 IP 하나를 여럿이서 돌려쓰는 구조로 사용한다.
사설 IP의 종류
10.xx.xx.xx 172.xx.xx.xx 192.168.xx.xx
DNS (Domain Name Server)
숫자로 된 IP를 도메인 네임으로 변환하거나,
그 반대를 수행하는 것.
IP로 설정할 수 없는 것
사설 IP Look Backup IP : 127.0.0.1 (내가 나의 IP를 가리키는 대명사 : localhost)
ping 카운트 옵션
$ ping -c 4 localhost
리눅스 IP 확인 명령어
ip a ip address ifconfig
1 : 진짜 IP주소(localhost)
2 : 가짜 IP주소(10으로 시작하기 때문에 사설 IP)
Software & Updates
업데이트 하기 전 패키지를 다운받을 사이트를 지정해주는 작업을 먼저 진행한다.
Software & Updates(보라색 아이콘)을 클릭한다.
위에서부터 4개의 항목을 체크하고 Download from: 에서 Other... 클릭.
패키지를 다운로드할 사이트를 잡아줄 것이다.
Korea, Republic of에서 하단 메뉴를 내려 원하는 사이트를 선택해준다.
해외(먼 지역)의 사이트로부터 패키지를 받을 경우 시간이 길어지기 때문에 필요한 작업이다.
선택 후 Close 버튼을 클릭하면 Reload 창이 뜨는데,
이는 현재 내 OS와 서버에 있는 버전의 상태를 같게 만들기 위한 새로고침 과정이라고 한다.
이 과정이 끝나면 아까 Software & Updates 아이콘 옆에 있던 비슷한 모양의 흑백 아이콘을 클릭한다.
클릭하면 뜨는 실질적인 업데이트를 진행하는 프로그램이다. Install Now를 클릭한다.
Details를 열어 각종 진행 사항을 확인할 수 있다.
소프트웨어 업데이트가 완료되면 Restart Now를 진행한다.
Install Ubuntu Restricted Extras
애플리케이션 목록에서 Terminal을 클릭한다. 윈도우의 cmd와 비슷한 프로그램이다.
"sudo apt install ubuntu-restricted-extras"라는 명령어를 입력해준다.
여기서 sudo란 관리자 권한으로 실행하겠다는 뜻으로
Super User DO, Switch User DO 두 가지의 의미를 모두 갖고 있다.
비밀번호의 입력이 시각적으로 보이지는 않지만 입력하고 엔터키를 누른다.
[Y/n] 은 기본값이 Y라는 뜻이므로 Continue를 위해 엔터키를 한 번 더 눌러준다.
Tab키 -> Enter키
각종 Agreement이다.
기본으로 커서가 No에 위치해 있다. Tab 또는 방향키로 Yes에 올린 후 Enter.
Ubuntu Restricted Extras 다운로드가 완료되었다.
키보드 단축키 설정
Settings 앱을 실행하고 Keyboard Shorcuts 메뉴에 들어간다.
Terminal의 실행 단축키인 Ctrl+Alt+T 를 확인한다.
또한 Launch web browser의 Disabled 부분을 클릭하여 단축키를 지정해준다.
키보드에서 "Ctrl+Alt+B" 입력 후 Set.
*Ubuntu에선 물론이고 HostOS에서 사용하는 단축키와도 겹치지 않도록 설정해야 한다.
Terminal에 gnome-system-monitor 입력 시 시스템 모니터(윈도우의 작업관리자)가 실행된다.
시스템 모니터 또한 단축키화 할 것이니 설정에 들어와서 맨 밑까지 내리면
+ 버튼을 확인할 수 있다. 클릭한다.
Name - 본인이 알아볼 단축키 이름
Command - 터미널에서 사용하는 명령어
Shortcut - 입력할 키보드 조합
윈도우즈의 작업관리자 단축키와 같은 로그아웃 단축키를 지정해제 해야 한다.
충돌이 일어날 경우 HostOS의 단축키를 우선으로 실행하므로
우분투 로그아웃을 위해 Ctrl+Alt+Delete 입력 시 윈도우즈의 작업관리자가 실행되어 버릴 것이다.
클릭 후 Backspace 키 누르기.
한글 언어팩 설치를 위한 5가지 프로그램 인스톨
몇 가지 프로그램을 인스톨할 것이다.
위와 같은 명령어를 입력한다. 여기서 \(역슬래시)는
명령어를 논리적으로 줄바꿈하지 않고 하나의 명령어를 이어서 쓰되 보기에 편하도록 내려쓰는 것이다.
소프트웨어 업데이트와 같이 진행해주면 된다.
Language Support 애플리케이션을 실행하고, Install을 클릭한다.
인스톨이 완료되면 Close한다.
로그아웃 후 다시 로그인한다.
검색창에 Region & Language를 검색하여 설정에 들어간다.
+버튼 클릭 -> Korean -> Korean(Hangul) -> Add
메뉴바 우측에 '한'이라고 적힌 메뉴가 생겼을 것이다. 클릭해서 Korean(Hangul)로 바꿔주면 전환이 가능하다.
또한 Setup을 클릭해서 토글 단축키를 확인할 수 있다.
Text Editor를 열어 토글 한영키를 확인해보자.
Hello, World!
(Shift+Space)
안녕하세요
방화벽
Firewall은 기본적으로 외부에서 나에게 접근하는 Inbound를 필터링한다. 반대의 개념인 OutBound를 필터링하는 것은 Froxy가 한다고 한다.
Firewall은 관리자 모드로만 실행 가능하기에 앞에 sudo를 붙인다.
네트워크 관련 접근이 안 될 때는 방화벽을 의심해보자.
방화벽의 스테이터스 확인 - sudo ufw status
방화벽 활성화 - sudo ufw enable
*ufw = Ubuntu FireWall
가로 계층
2-Tier : Client - Server (Request - Response)
3-Tier : Client - Middle - Server
4-Tier : Web Browser - Web Server - WAS - DB Server
N-Tier : Client - ............. - Server
세로 계층
OSI(Open System Interconnectivity) 7 Layers
제 3계층과 제 4계층 - 게이트 갯수 : 65536개(포트넘버) (이를 ufw이 필터링한다, 공항의 게이트 번호와 같다) 방화벽이 모든 인바운드를 기본적으로 전부 막고 필요할 때만 열어준다.
대형 서버용 OS 발전의 흐름
Mainframe -> Unix -> Minix -> Linux
Linus Benedict Torvalds는 어셈블리어로 Linux Kernel 0.01 버전을 처음 작성했다.
Unix 시스템의 작은 버전인 Minix보다 좋은 운영체제를 만드는 것을 목표로 삼아
1992년에는 0.02 버전을 작성하면서 인터넷에 소스 코드를 공개했는데,
이것이 Linux의 탄생이었다.
Linux는 GNU 프로젝트에 의해 만들어졌으므로 GNU/Linux라고 부르는 것이 맞다.
About Ubuntu
Ubuntu Desktop : GUI 기반의 인터페이스 환경.
Ubuntu Server : TUI 기반의 인터페이스 환경.
일반 버전
지원 기간 : 약 9개월
출시 주기 : 약 6개월
LTS(Long Term Support) 버전 : 주로 정식 버전이라고 부름
지원 기간 : 약 5년
출시 주기 : 약 2년
버전명은 출시년도.출시월
ex) 20.04 LTS : 2020년 4월에 출시된 LTS 버전
Tweaks를 이용한 가상 데스크탑 활용
install 명령 시에 추가할 수 있는 -y 옵션은 다음 단계에 묻는 확인 메시지에 미리 동의하겠다는 의미이다.
설치가 끝났다면 Show Applications에서 Tweaks를 실행하고 Workspaces 메뉴에 들어가서
원하는대로 설정한다.
Ctrl+Alt+위, 아래 방향키
또는
윈도우 키로 가상 데스크탑 간을 이동하고 확인할 수 있다.
우분투의 패키지
우분투에서는 프로그램이나 소프트웨어, 애플리케이션 등의 용어 대신 패키지라고 부른다.
패키지 설치 방법 5가지
1. dpkg - Debian Package - 데비안 패키지 설치 파일로, 의존성 문제가 있으며, 저장된 .deb파일을 통해 패키지를 설치한다. 의존성 ex) galculator는 libquadmath0 패키지가 있지 않으면 설치할 수 없다.
2. apt - a CLI utility installing packages in terminal - Advanced Package Tool의 약자로, .deb 패키지를 편리하게 설치하기 위한 도구. apt-get 방식은 패키지 설치 명령을 입력하면 자동으로 /etc/apt/sources.list 파일을 확인한다. 이 파일에는 Ubuntu 20.04 LTS 패키지 저장소의 인터넷 주소가 적혀 있기 때문에 입력받은 패키지명에 맞는 패키지를 가져와 보여주고, 설치에 동의하면 서버로부터 패키지를 다운받는다. 어떤 패키지를 설치하고자 할 때, 의존성 문제가 있는 파일도 자동으로 설치해주어서 의존성 문제를 완전히 해결했다.
3. Synaptic Package Manager - a GUI for dpkg/apt - Ubuntu Software Center에서 다운로드할 수 있다. GUI 기반의 환경으로 패키지들을 관리할 수 있음.
4. aptitude - a console client with CLI and ncurses-based TUI interfaces - GUI와 TUI가 섞인 환경의 툴. 자주 쓰이지 않는다.
5. Ubuntu Software Center 우분투 데스크탑을 사용하는 유저 또는 우분투 리눅스에 대해 잘 모르는 사람을 위한 패키지 설치 방법으로, GUI로 직관적이고 간편하게 패키지를 설치할 수 있다.
패키지를 설치하기 전에 반드시 $ sudo apt update를 해주어야 한다(Update cache).
가상화 프로그램은 HostOS 위에서 GuestOS를 실행시켜 동시에 여러개의 OS를 사용할 수 있게 해주는 프로그램이다. Megazone Cloud에서 제공해 준 랩탑은 Windows 10 환경이며, 여러 가상화 프로그램 중 무료로 사용 가능한 VMWare의 VirtualBox를 통해 CANONICAL 사에서 Linux 기반으로 개발한 Ubuntu Desktop을 설치한다고 한다. 강사님이 Ubuntu Desktop과 Ubuntu Server 두 가지가 있다고 하시는데 내가 아직 잘 모르기 때문에 그 부분은 추후에 정리하기로 하고 일단 설치와 셋업을 진행해보자.
VirtualBox 6.1.26 platform packages에서 본인의 OS에 맞는 것으로 선택해 다운로드한다.
또한 VirtualBox 6.1.26 Oracle VM VirtualBox Extension Pack에서 OS에 구애받지 않는 확장팩도 다운로드한다.
다운로드한 exe파일을 실행하면 VirtualBox Setup이 시작된다. 설치 경로, 설치 옵션 등을 원하는대로 선택한 후 설치를 끝낸다.
Extension Pack도 설치가 완료되었다.
바탕화면에 생긴 VirtualBox 아이콘을 눌러 실행시키면 나오는 초기화면이다. 파일 -> 환경설정으로 들어간다.
여기서 일반, 입력, 확장 이 3가지 부분을 세팅해 줄 것이다.
기본 머신 폴더의 경로를 지정해 줄 것이다. 가상 머신(ex Ubuntu, CentOS...)을 인식할 기본 위치인데, 가상화 프로그램을 포토샵 프로그램이라고 가정했을 때 이 가상 머신은 .psd 파일이 된다. 가상화 프로그램에서 가상 머신 파일을 실행시켜 GuestOS를 동작시키는 것이다.
C 드라이브에 새 폴더인 My Virtual Machines를 만들어 준 후에 그 위치를 잡아준다.
다음은 입력 설정이다. 가상 머신 탭으로 이동한 뒤 '호스트 키 조합'에 대응하는 키를 확인한다.
기본값은 Right Control로 되어 있을 것이다. 우리 교육 과정에서는 데스크탑과 별도의 키보드가 아닌 랩탑을 사용하기 때문에 Right Control 키가 없어 따로 재지정해주게 되었다. 강사님 말씀으로는 잘 안 쓰이는 키를 사용하는 편이 충돌을 막을 수 있다고 하신다.
확장 설정이다. 오른쪽에 작게 보이는 +버튼을 클릭한다.
아까 다운로드한 Extension Pack 파일이 잡힐 것이다. 이걸 선택해서 열기버튼을 누르면 된다.
가상화 프로그램 설치는 끝났으니 실행할 파일인 우분투를 다운로드 해야 한다.
www.ubuntu.com 에 접속하여 Download -> Ubuntu Desktop -> 20.04 LTS 를 클릭한다.
잠시 기다리면 다운로드가 시작된다. 용량이 어느 정도 있어서 설치에 시간이 좀 걸릴 것이다. iso 확장자명은 디스크 이미지를 말하는데 CD와 비슷한 개념이라고 생각하면 될 것 같다.
우분투 디스크 이미지의 다운로드가 완료되면 아까 설정을 마친 VirtualBox의 툴바에서 '새로 만들기'를 클릭한다.
머신 폴더는 아까 잡아둔 경로로 잡힐 것이고, 이름과 종류, 버전을 설정하면 되는데 이런 식으로 이름에 핵심 키워드가 들어오면 종류와 버전에서 자동으로 인식을 해 준다.
Ubuntu Desktop에 할당해 줄 메모리 크기이다.
우리 과정에선 지급받은 랩탑의 RAM이 16GB이므로 여유있게 4GB로 잡았다.
'만들기' 클릭
VirtualBox를 사용하고 있으므로 VDI로 선택하고 진행한다.
예를 들어 가상 하드 디스크의 크기를 100GB로 설정할 경우 '동적 할당'을 사용하면 초기에는 용량을 적게 잡아 먹고, Ubuntu Desktop에 프로그램, 파일 등이 설치됨에 따라 그만큼 늘어나는 용량을 가변적으로 커버해서 맥시멈 100GB까지 늘린다는 뜻이다. '고정 크기'는 말 그대로 시작부터 100GB를 할당해 주어서 용량이 많이 차기 전까지는 단편화(용량 낭비)가 많이 생긴다고 볼 수 있겠다.
가상 하드 디스크의 용량은 최대 100GB, 동적 할당으로 설정해 주었다.
성공적으로 사양 설정을 완료했다. 툴바에서 주황색 '설정' 버튼을 눌러 추가 설정을 하도록 하자.