Computer Core Practice1: Operation System Week2. Ubuntu...

18
18 1 Embedded Software Lab. 진주영, 황인중 Embedded Software Lab. Computer Core Practice1: Operation System Week2. Ubuntu Setup

Transcript of Computer Core Practice1: Operation System Week2. Ubuntu...

Page 1: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

1

Embedded Software Lab.

진주영, 황인중

Embedded Software Lab.

Computer Core Practice1: Operation SystemWeek2. Ubuntu Setup

Page 2: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

2

Embedded Software Lab.

• 모든 컴퓨터 시스템에 있는 기본적인 프로그램 집합– 이 중, 가장 중요한 프로그램을 커널(Kernel)이라고 함

ex) 안드로이드

기본 어플리케이션, 플랫폼 (프레임워크 및 GUI 제공), 리눅스 커널

운영체제 (Operating System)

Page 3: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

3

Embedded Software Lab.

• 커널 (Kernel)

– 하드웨어를 직접 제어하는 운영체제의 한 레이어

• 하드웨어 구성 요소와의 상호 작용

• 운영체제를 종종 ‘커널’과 동의어로 사용하기도 함

– 사용자 어플리케이션을 위한 실행 환경 제공

– User와 Hardware Resource 사이의 Interface: 프로그램이 하드웨어 자원(Storage, CPU, Memory, …)을이용하기 위해서는 커널에 요청을 보내야 한다.

• 커널에서 관리함으로써 안정성 있는 컴퓨터 시스템을 구축

Kernel

Page 4: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

4

Embedded Software Lab.

진주영, 황인중

Embedded Software Lab.

Ubuntu Porting & Kernel Compile

Page 5: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

5

Embedded Software Lab.

• VMware 는 운영체제 위에 다른 운영체제를 돌리기 위한 가상머신

• VMware 설치– https://www.vmware.com/kr.html 가서 Workstation Player 설치

VMware 설치

Page 6: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

6

Embedded Software Lab.

• Ubuntu Image 다운로드– https://www.ubuntu.com/download 에서 우분투 이미지 다운

– Ubuntu 16.04.3 LTS 다운

• Kernel 다운로드– https://www.kernel.org/ 에서 커널 다운

– 이 수업에서는 4.9.45 (longterm) 커널 사용 예정

Ubuntu 이미지 다운 및 커널 다운

Page 7: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

7

Embedded Software Lab.

VMware에 우분투 설치

우분투 이미지 선택

File->New Virtual Machine..

용량은 넉넉히 30GB이상, 40GB정도 잡기(20GB는 커널 컴파일 시에 용량부족!!)

Page 8: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

8

Embedded Software Lab.

• 커널 컴파일 후에 커널 올리는데 필요한 메모리 때문에, 메모리가 넉넉히 필요 (기본 1GB 주어져 있음)– 4GB 할당으로 변경 (가능하면 CPU도 코어 여러 개 할당)

– 우분투를 끈 상태에서 진행

VMware 자원 할당

오른쪽 마우스 클릭 -> Settings..

4GB할당

4코어 할당

Page 9: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

9

Embedded Software Lab.

• 우분투에서 먼저 커널 소스를 받는다 (4.9.45)– $ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.9.45.tar.xz

• 커널 소스 압축해제– $ tar xvf linux-4.9.45.tar.xz

• 커널 컴파일에 앞서 필수 패키지를 설치해야 함

– $ sudo apt-get install ncurses-dev libssl-dev

• 커널 소스 디렉토리에서 진행– $ make menuconfig -> save

– ESC 키 두번

– $ make -j8 (시간 오래걸림)

– $ make modules

– $ sudo make modules_install

– $ sudo make install

커널 소스 받기 및 컴파일

한번 빌드 후에는 delta만 build 진행하므로 시간이 오래 걸리지 않음

Page 10: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

10

Embedded Software Lab.

• Grub 업데이트 및 환경설정– $ sudo update-grub

– $ vim /etc/default/grub

• /etc/default/grub에서 파일 수정– “GRUB_HIDDEN_TIMEOUT=0” 부분을 주석처리

– #을 붙이면 주석처리 됨

– 수정된 파일 저장 (vim 명령입력 “:wq”)

Grub 설정

Page 11: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

11

Embedded Software Lab.

• 재부팅– $ sudo reboot

설치된 다른 커널로 부팅

Advanced option으로 들어감부팅할 커널 선택(방금 4.9.45 빌드했으므로 4.9.45로 부팅)

커널 변경확인

Page 12: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

12

Embedded Software Lab.

진주영, 황인중

Embedded Software Lab.

Ctags & Cscope 사용법

Page 13: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

13

Embedded Software Lab.

• Linux에서 cli로 파일을 수정하기 위해 에디터 사용– Vim, emac 등을 사용하지만, 본 수업에서는 vim plugin 설명

– Ctags, cscope는 vim의 플러그인으로서 소스코드를 볼 때 유용

• Ctags– Vim의 한 플러그인으로서, 소스 코드의 심볼들을 인식해 파일끼

리 연결해주는 역할을 함

• Cscope– 특정 디렉토리 내에서 검색기능을 제공함

• Configuration 설정– ${HOME_DIR}/.vimrc 에 vim 추가 기능 설정가능

– Vim 에디터 안에 줄번호 표시, 띄어쓰기, 소스코드 색으로 구분등…

– 다양한 plugin 설정 가능

Vim Editor Plugins

Page 14: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

14

Embedded Software Lab.

Vim 단축키 모음

Page 15: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

15

Embedded Software Lab.

• $ sudo apt-get install curl exuberant-ctags cscope

• $ mkdir –p ~/.vim ~/.vim/autoload ~/.vim/bundle

• $ curl –Lsso ~/.vim/autoload/pathogen.vimhttps://tpo.pe/pathogen.vim

• $ cd ~/.vim/bundle

• $ git clone https://github.com/majutsushi/tagbar

유용한 tagbar 플러그인 설치

$ ~/.vimrc 에 내용추가 Vim 사용시 명령창에 :Tagbar 입력

화면 우측에 소스코드에 대한 심볼들 표시

“Ctrl+w” x2 으로 입력커서 이동

Page 16: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

16

Embedded Software Lab.

Ctags 예제

Ctrl+] 를 통해 심볼 정의를 찾아갈 수 있음

찾아갈 심볼 선택

소스코드 디렉토리에서 다음 명령 실행(심볼에 대한 태그 생성): $ ctags -R

Page 17: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

17

Embedded Software Lab.

• $ cscope -R

Cscope 예제

Symbol로 검색: GPIO_RPI

Page 18: Computer Core Practice1: Operation System Week2. Ubuntu Setupnyx.skku.ac.kr/wp-content/uploads/2017/09/2... · 2017-09-04 · 18 1 Embedded Software Lab. 진주영, 황인중 Embedded

18

18

Embedded Software Lab.

• $ vim ~/.vimrc

Vimrc configuration