linux설치: VMware 가상 머신 기반 ubuntu 18.04 설치
가상 머신(virtual machine)
현재 사용되는 OS위에 다른 OS를 애플리케이션처럼 운용
- 현재 운영체제: 호스트 운영체제(Host OS)
- 가상 운영체제: 게스트 운영체제(Guest OS)
가상머신의 장점
- 간편한 설치 및 구성, 백업
가상머신의 단점
- 가상화로 인한 느린 속도
- 일부 호스트 OS의 하드웨어 장치(GPU)를 사용할 수 없다.
가상 머신의 한계 및 주의
가상 머신 사용 시 성능 및 하드웨어 제한이 존재한다.
- 일정 레벨 이상의 학습을 위해서 리얼 머신에 리눅스를 설치하는 것을 추천한다. 리얼 머신에서 리눅스를 직접 사용해야만 빠르게 학습 효과를 볼 수 있기 때문이다.
가상 머신 설치 시 주의
- 리얼 머신에 설치하는 경우, 실수로 인해 기존 하드 디스크 내용이 날아갈 수 있다.
- 그래서 익숙하지 않은 경우 기존 디스크는 꼭 분리하고, 리눅스는 물리적으로 다른 디스크에 설치하고 부팅시 BIOS 메뉴로 선택하도록 하자.
가상 머신의 종류
- full virtualization(전가상화)
- 낮은 성능의 단점 / 높은 독립성
- 호스트 os위에서 하나의 애플리케이션으로 인식
- 해당 애플리케이션을 hypervisor이라 지칭 - CPU나 플랫폼에서 가상화를 돕는 가속화 기능 필요 (optional)
- intel VT-x, VT-d, AMD-V
- 종류
- windows
- VMware, Virtualbox(vbox), WSL(ms에서 배포한 linux)
- OSX
- VMware, Virtualbox(vbox), parallels
- Linux
- VMware, Virtualbox(vbox)
- windows
- 라이선스
- virtualbox는 opensource, 그 외는 상업적 소프트웨어
- para virtualiation(반가상화)
다운로드
- VMware workstation player
- ubuntu 18.04.5.iso
open-vm-tools
open-vm-tools란 VMware의 vm-tools의 패키지 버전
- 기능
- 화면 조절: 화면 크기의 조절이 가능, 그래픽 가속
- 클립 보드: 윈도에서 복사한 텍스트를 리눅스에 shift-insert로 붙이기 가능, 반대로 리눅스에서 복사한 것을 윈도우에 ctrl-v로 붙여넣기 가능
- 파일 복사: 윈도 탐색기에서 파일을 끌어서 가져오기 가능(단, 드래그한 뒤 바로 놓지 말고 잠깐 기다렸다가 +기호가 보일 때 놓아야 함)
설치
터미널을 켜서(ctrl+alt+t)
1
2
3
4
$ sudo apt install open-vm-tools{,-desktop}
재부팅
$ sudo reboot
데일리 서비스 비활성화
그 다음 데일리 서비스를 비활성화해줘야 한다.
1
2
sudo systemctl disable --now apt-daily.timer
sudo systemctl disable --now apt-daily-upgrade.timer
암호 설정
새 unix 암호를 입력해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
$ sudo passwd
암호 입력
재입력
root 계정 사용
$ su -
암호 입력
확인을 위해
# id
나가기 위해서는
# exit 또는 ctrl+D
가상 머신 종료할 때는 절전이 아닌
- terminal에서 poweroff
- x window 우측 상단 톱니바퀴에 컴퓨터 끄기
VT(Virtualization Technology) 활성화, VMware: preferences
VMware setting
좀 더 편리하게 사용하기 위한 설정
- virtual machine setting
- processors: virtualization engine(==virtualization technology)
- preferences 설정
VT 설정은 필수, 3번째꺼는 있으면 키면 된다. |
ubuntu GUI
설정
- 터미널 실행 → Ctrl+alt+t이지만,
설정 → 접근성 → 키보드
에 가면 편한 단축키로 바꿀 수 있다. - 글꼴 변경
- 기본 설정 → 사용자 지정 글꼴
- 단축키
- 터미널 이동 → super(window키) + 마우스 좌클릭
- 터미널 크기 조정 → super + 마우스 휠 드래그
- 터미널 새 페이지 → ctrl + shift + t
- 터미널 다른 페이지 이동 → ctrl + 숫자 키
- 한영 전환 → shift + space
- 화면 잠금 설정
- 개인 정보 → 화면 잠금 해제
- 전원 → 절전 빈화면 안함
- 나눔 폰트 설치
1
$ sudo apt -y install fonts-nanum* fonts-naver*
login shell and environment
운영체제(OS)란?
- Modern operating system의 구성
- kernel: 하드웨어를 제어하는 핵심 코드
- application
- shell : 다른 application을 구동시킴
- web browser, music player …
- 실행 영역에 따른 구분
- system(kernel)
- user (kernel의 도움이 필요 없는 영역)
- 모든 프로세스는 user + system으로 작동된다.
UI(User interface)
- 시스템의 조작 및 통신을 위해 외부의 접속을 받아들이는 부분 ⇒ CLI/CUI, TUI, GUI
- Shell은 기본적으로 CLI/CUI 방식 사용
- CLI(command line interface) / CUI(character user interface) ⇒ 반대되는 개념은 GUI(graphic user interface)
- 윈도우의 cmd도 CUI방식의 일종의 shell
Command line interface
- prompt에서 명령행 타이핑을 통해 실행
- 텍스트 베이스 방식
- 장점: 오버헤드가 적다(서버에서는 매우 중요) ⇒ 입출력 결과를 파일로 지정 가능 (stdio)
- 단점: 사용자 친화적이지 않다.
TUI(Text-base user interface)
- 텍스트를 이용해서 구현하는 그래픽을 사용하는 UI
- 장점: 오버헤드 적음
- 단점: 화면 크기, 글꼴에 따라 화면이 깨짐
- 주로 ncurses, newt 라이브러리로 구현된다.
GUI(graphical user interface)
- VGA 그래픽 방식 사용하는 UI
- 위젯 표현을 변경
- 장점: 섬세한 그래픽과 색상
- 단점: 높은 통신 대역폭, 메모리가 필요하므로 높은 하드웨어 성능이 필요
UNIX/Linux는 CLI/CUI 방식을 선호한다.
- 왜냐하면 수행 능력이 좋기 때문이다. → 낮은 대역폭에서도 잘 작동 / 저전력
console/terminal
console: 사전적 의미: 건반과 패달을 가진 연주대 → 컴퓨터에 물리적으로 직접 연결된 제어용 송수신 장치를 의미 terminal: 사전적 의미: 종단, 끝 → 데이터를 송수신하는 목적지나 출발점이 되는 장치
따라서 콘솔은 장치의 형태, 터미널은 장치의 위치에 따른 논리적 분류 용어이다. 즉 둘은 비교 가능한 성질이 아니다. e.g. console terminal / remote terminal
물리적 위치에 따라 다음과 같이 2가지로 분류한다.
- console terminal
- 시스템에 물리적으로 부착되어 있는 콘솔에서 액세스한 터미널
- terminal 부분을 생략하고 그냥 console이라 불린다.
- remote terminal
- 원격에서 액세스한 터미널: ssh, web shell ,x terminal 등등으로 접속
- 보통 remote를 생략하고, terminal로 부르는 경우가 많음
- 학술적으로 보면 웹 브라우저도 terminal software에 속함
대부분의 UNIX, Linux 서버는 text console을 사용하기도 한다.
text console 바꾸는 방법
- 일반적으로 ALT + F1 ~ ALT + F6 에 맵핑되어 있고, tty라고 부른다. F2~F7인 경우도 있다.
- 그래픽 콘솔에서 텍스트 콘솔로 이동하는 경우에는 ctrl을 조합
- 그래서 ctrl + alt + f1 ~ 으로 이동
그래픽 콘솔(gui 사용)을 x window를 사용하는 콘솔이라 하여 x console이라고도 부른다. x window를 원격에서 접속하면 x (remote) terminal이라 한다. 그래픽 콘솔은 F1 or F7에 맵핑된다. F1에 그래픽 콘솔을 맵핑하면 tty는 F2~F7, F7에 그래픽 콘솔이면, F1~F6이 tty이 된다.
login의 의미
- 접속을 요청하여 알맞은 인증과정을 거쳐 시스템 내부와 통신 가능한 상태가 되면 시스템에 명령을 내릴 수 있는 인터페이스가 실행된다.
그래픽 콘솔은 DE(desktop environment)에 따라 다르다.
- ubuntu: GNOME
- Debian, RH계열: GNOME, KDE, Xfce
텍스트 콘솔에서 로그인
- 시스템에서 ctrl + alt + F3 을 누른다.
- login 한다. jaehoyoon
- passwd - qwer1234
- 로그인 하고 난 후 prompt에 $ 는 일반, #는 root 유저를 의미
- 다시 그래픽 콘솔로 가고 싶은 경우 alt+f1 or alt+f7
로그인하면 session이 만들어지는데 이를 해제하는 것을 로그아웃이라 한다. 세션은 서버 측에 존재하는 출근부와 같은 것이다. 로그아웃할 때는 exit, logout 을 타이핑하거나 <Ctrl+D>누른다.
종료
- 소프트웨어적인 종료는 shutdown -h, sudo halt
- 하드웨어 전원을 끄는 경우 sudo poweroff
unix 계정
계정 종류
- system account
- root 및 system service 전용 계정
- 로그인 불가 계정도 많다.
- normal account
- 나중에 추가하는 로그인이 가능한 일반 유저
이 둘을 구분짓는 이유는 계정의 권한을 분리하고, 접근할 수 있는 디렉토리와 파일, 프로세스를 구분하기 위함이다.
user, group 관리 명령어
- user:
- useradd(추가), usermod(수정),userdel(삭제)
- id, whoami
- group
- groupadd,groupmod, groupdel
user 교체, 권한 명령어
- user
- su ( substitute user )
- passwd
- group
- newgrp ( log in to a new group )
- gpasswd
man page
man page: 특정 아이템이 대해 설명해주는 페이지
unix 계열은 CLI로 작동하는 online manual이 있다.
- 이를 man page라 한다.
- 표준 unix 명령어는 xpg로부터 유래
man [option] <item>
1
man ueradd, man -f printf
문법 표기
- 무괄호, <> : 필수 항목
- []: 선택가능한 항목
문법 표기 예제
- shutdown [-rhc]
- -rhc와 message는 생략 가능
- time은 생략 불가능
언어 설정에 따라 다른 언어로 출력할 수 있다. 한국어 설정 상태에서 man페이지를 보면 한국어 메뉴얼이 존재하면 한국어, 한국어 매뉴얼이 존재하지 않으면 영어로 보인다.
1
$ man su
text console은 한글을 표시할 수 없기 때문에 영어로 나오고 한글은 이상하게 출력될 것이다.
LANG 환경 변수
LANG : locale + character set
- locale: 사용자의 언어 및 지역 정보
- language: ISO 639-1
- contry: ISO 3166-1
- character set: 입출력 문자표
LANGUAGE를 사용하는 경우 그냥 비워두는 것이 좋다.
1
~$ export LANGUAGE=
export LANG = C
라고 하면 영문으로 출력하는 것이다. man su에서 한글이 깨지게 나오면 영문 모드(export LANG=en_US.UTF-8)로 바꾸면 된다.
로케일 생성 명령어
1
$ locale-gen ja_JP.utf8
system의 locale을 확인 및 설정
1
$ localectl set-locale LANG=en_US.utf8
로케일을 변경 후 재로그인하면 된다.
추가) putty / mobaxterm 외부에서 터미널을 통해 윈도우즈에 접속하는 경우 putty/mobaxterm 을 사용하는데, 여기서 창 → 변환 → 수신한 데이터
를 UTF-8로 변경해야 함
✨LANG에서 가장 중요한 부분
1
$ export LANG=en_US.utf8; export LANGUAGE=
이를 설정해놓는 것이 좋다. en_US는 영어, ko_KR.utf8은 한글이다.