Home [데브코스] 2주차 - linux 기초(VMware 설치, 자주 쓰이는 명령어)
Post
Cancel

[데브코스] 2주차 - linux 기초(VMware 설치, 자주 쓰이는 명령어)


linux설치: VMware 가상 머신 기반 ubuntu 18.04 설치

가상 머신(virtual machine)

현재 사용되는 OS위에 다른 OS를 애플리케이션처럼 운용

  • 현재 운영체제: 호스트 운영체제(Host OS)
  • 가상 운영체제: 게스트 운영체제(Guest OS)

가상머신의 장점

  • 간편한 설치 및 구성, 백업

가상머신의 단점

  • 가상화로 인한 느린 속도
  • 일부 호스트 OS의 하드웨어 장치(GPU)를 사용할 수 없다.


가상 머신의 한계 및 주의

가상 머신 사용 시 성능 및 하드웨어 제한이 존재한다.

  • 일정 레벨 이상의 학습을 위해서 리얼 머신에 리눅스를 설치하는 것을 추천한다. 리얼 머신에서 리눅스를 직접 사용해야만 빠르게 학습 효과를 볼 수 있기 때문이다.

가상 머신 설치 시 주의

  • 리얼 머신에 설치하는 경우, 실수로 인해 기존 하드 디스크 내용이 날아갈 수 있다.
  • 그래서 익숙하지 않은 경우 기존 디스크는 꼭 분리하고, 리눅스는 물리적으로 다른 디스크에 설치하고 부팅시 BIOS 메뉴로 선택하도록 하자.


가상 머신의 종류

  1. 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)
  • 라이선스
    • virtualbox는 opensource, 그 외는 상업적 소프트웨어
  1. para virtualiation(반가상화)


다운로드

  1. VMware workstation player
  1. 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

가상 머신 종료할 때는 절전이 아닌

  1. terminal에서 poweroff
  2. x window 우측 상단 톱니바퀴에 컴퓨터 끄기



VT(Virtualization Technology) 활성화, VMware: preferences

VMware setting

좀 더 편리하게 사용하기 위한 설정

  1. virtual machine setting
    • processors: virtualization engine(==virtualization technology)
    • preferences 설정
VT 설정은 필수, 3번째꺼는 있으면 키면 된다.




ubuntu GUI

설정

  1. 터미널 실행 → Ctrl+alt+t이지만, 설정 → 접근성 → 키보드에 가면 편한 단축키로 바꿀 수 있다.
  2. 글꼴 변경
    • 기본 설정 → 사용자 지정 글꼴
  3. 단축키
    • 터미널 이동 → super(window키) + 마우스 좌클릭
    • 터미널 크기 조정 → super + 마우스 휠 드래그
    • 터미널 새 페이지 → ctrl + shift + t
    • 터미널 다른 페이지 이동 → ctrl + 숫자 키
    • 한영 전환 → shift + space
  4. 화면 잠금 설정
    • 개인 정보 → 화면 잠금 해제
    • 전원 → 절전 빈화면 안함
  5. 나눔 폰트 설치
    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

텍스트 콘솔에서 로그인

  1. 시스템에서 ctrl + alt + F3 을 누른다.
  2. login 한다. jaehoyoon
  3. passwd - qwer1234
  4. 로그인 하고 난 후 prompt에 $ 는 일반, #는 root 유저를 의미
  5. 다시 그래픽 콘솔로 가고 싶은 경우 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은 한글이다.

This post is licensed under CC BY 4.0 by the author.