6 Embedded SW Research Department 스크립트 방식 부팅 기법 (3/5)

Download Report

Transcript 6 Embedded SW Research Department 스크립트 방식 부팅 기법 (3/5)

임베디드SW플랫폼의 OS 기술
빠른 부팅 기술
[스크립트 방식 및 Snapshot 방식 기술]
2010.02.25
임베디드SW플랫폼연구부
박호준
Embedded SW Research Department
1
임베디드 리눅스에서의 부팅 (1/2)
 Definition of Booting
 A bootstrapping process that start operating systems when the
user turns on a computer
system(http://en.wikipedia.org/wiki/Booting)
 Bootstrapping : refers to the start up process a computer uses to
load the operating instructions
 Cold Booting
Power On  사용자 기능
시스템 초기화 기능 포함
 Warm Booting
대기 상태  사용자 기능
초기화 기능 제외
Embedded SW Research Department
2
임베디드 리눅스에서의 부팅 (2/2)
 통상적인 임베디드 리눅스의 부팅 절차
 부트로더  커널  초기화 스크립트  응용프로그램
 적용제품에 따라 약간씩 차이
 Run Level은 대부분 생략
Kernel Image Copy
(Flash to RAM)
Hardware Initialization
Decompress Kernel
Image
Boot Loader
Mount
Initial Ramdisk
Kernel
Hardware Initialization
Memory / Scheduler
Initialization
Kernel
Initiate and Run
init process
Run rc.sysinit
to insert necessary modules
Kernel
Remount
Root Filesystem
init script
Launch X-Window
Launch Shell
Application Program
Initiate Run Level Script
init script
Embedded SW Research Department
3
스크립트 방식 부팅 기법 (1/5)
 개요
 UNIX/Linux의 그것을 그대로 가져옴
 SysVInit가 대표적
/etc/rc.d/rc.sysinit
http://freshmeat.net/projects/sysvinit
 busybox로 대체
임베디드 시스템에 탑재하기엔 너무 큰
/etc/rc.d/rc
명령 시스템
불필요한 기능 제거 용이
단일 바이너리로 메모리 사용량 감소
 스크립트 형식의 부팅 메커니즘 활용
/root/.bashrc
File System Mount
(except for /)
Initialization Start
Initialize Shared Libraries
Kernel Module Upload
(if necessary)
Initialize Network Service
Initialize Misc. Services
Global Environment Variables
Setup
Launch X-Window &
Window Manager
User Environment Variables
Setup
Locate User Environments
Embedded SW Research Department
Finish
4
스크립트 방식 부팅 기법 (2/5)
 SysVInit에서 스크립트 형식의 부팅 메커니즘
/etc/rc.d/rc 5
Symbolic Link
/etc/rc.d/rc5.d
/etc/rc.d/init.d
Network Service
Network Service
Samba Service
Schedule Service
Telnet Service
Web Server Service
Samba Service
Mail Service
Directory
:
:
Telnet Service
FTP Service
Example of Scripting Mechanism of SysVInit (Run Level 5)
Embedded SW Research Department
5
스크립트 방식 부팅 기법 (3/5)
 busybox의 문제점
 스크립팅 방식의 문제
매 명령 실행시 마다 파일시스템의 스크립트를 읽어야 함  불필요
한 File I/O 발생
명령 Parsing에 의한 지연 / CPU Utilization Overhead
 여전히 큰 메모리 사용량
busybox 바이너리 : 약 1.5MB ~ 1.7MB
사용하는 명령에 따라 메모리 사용량 폭증
– SMDK6410용 Qplus의 경우 3~5MB 추정
 보안 문제
busybox는 내부에 Shell을 포함
– Shell은 잠재적인 위험성을 내포하고 있음
– busybox에서 Shell 기능을 분리하는 것은 불가능
Embedded SW Research Department
6
스크립트 방식 부팅 기법 (4/5)
 개발 방향
 스크립트를 사용하지 않거나 최소화
불필요한 I/O 방지
명령 Parsing을 하지 않음으로써 CPU Resource 절약
 Shell과 분리된 독립실행형 Boot Mechanism
init[1] process에서 직접 부팅 진행
잠재적 보안 위험인 Shell 분리 용이
Shell은 개발시에만 사용  양산시 제거
 Shell 명령들 중 부팅과 관계된 명령들만 포함
운용 중 Memory Footprint 최소화
Embedded SW Research Department
7
스크립트 방식 부팅 기법 (5/5)
 Our Approach : QBoot Daemon
 SysVInit 대체 (/sbin/init  qboot)
 이진화된 스크립트 체제
 부팅에 필요한 명령들을 자체 내장
File System Mount, Network Configuration, Application Startup
…
 Readahead 방식 응용 프로그램 Startup
 단일 바이너리로 약 16~18Kbytes(4~6pages) (Dynamic Link 사용시)
Process Cleanup
Module
Service Manager
Startup Module
Standalone Style
State Controller
Normal State
Power Off State
Reboot State
Script Interpreter
File System
Initialization
Network
Configuration
Application
Startup
Service/Daemon
Startup
Miscellaneous
Setup
Super Daemon Style
Respawn Style
Embedded SW Research Department
8
Swsusp를 이용한 Snapshot 방식 부팅 기법 (1/5)
 개요
 원칙적으로 Hibernation과 같은 원리
시스템의 상태(특히 메모리)를 저장장치에 기록하여 부팅시 원복
 임베디드 시스템에서는 Snapshot Booting이라는 단어로 통용
 임베디드 리눅스에서 suspend2disk 기능 구현 관점에서 저장하는 메
모리 이미지를 Snapshot이라고 부름
Snapshot : A read-only copy of the data set frozen at a point
in time
swsusp : suspend2ram / suspend2disk을 총칭하는 기능
Embedded SW Research Department
9
Swsusp를 이용한 Snapshot 방식 부팅 기법 (2/5)
 Snapshot 부팅의 특징
 Memory Size 만큼의 저장 장치 필요
 H/W Dependency가 매우 높음
 시스템의 상태를 저장하므로 부팅의 종료가 아닌 응용프로그램의 특정
한 상태까지도 저장 가능
 메모리 사용량이 많을수록 부팅 시간이 오래 걸림
 Snapshot을 만들기 위해 Backup / Restore 과정 필요
이중 Restore과정이 Booting이라고 볼 수 있음
 저장장소로 SWAP 공간을 사용
Embedded SW Research Department
10
Swsusp를 이용한 Snapshot 방식 부팅 기법 (3/5)
 Snapshot Backup / Restore
 Backup
kernel의 swsusp 기능 요청
– 충분한 swap 공간이 있어야 함
– # echo disk > /sys/power/state
All processes sleep
CPU / device 상태 정보를 저장(메모리)
메모리를 SWAP 공간에 저장  Snapshot
 Restore
Power On  부트로더  커널(init())  software_resume()
SWAP으로부터 메모리 복구
복구된 메모리로부터 CPU / device 상태 정보 복구
프로세스 Wake up
Embedded SW Research Department
11
Swsusp를 이용한 Snapshot 방식 부팅 기법 (4/5)
 Why swsusp?
 부트로더로부터의 Snapshot Booting보다는 다소 성능이 떨어짐
최적화된 커널의 경우 커널 단계까지 약 2~3초 정도 소요
 Snapshot을 만들기 위해 JTAG 같은 장비를 이용해야 함
 부트로더로부터의 Snapshot이용은 H/W Dependency가 너무 높음
이식성을 높이기 위해
 대부분의 코드를 재활용 가능
Embedded SW Research Department
12
Swsusp를 이용한 Snapshot 방식 부팅 기법 (5/5)
 개발 방향
 Snapshot 크기 문제
Small Memory Footprint is better
선택적 메모리 저장
Snapshot 압축 저장
Snapshot 자료 구조 개선(Downsizing)
 Snapshot Backup 절차 간소화
기존 절차
– mkswap  swapon  request to kernel
개선
– open /dev/suspend  ioctl(freezing)
– QBoot와 통합
Embedded SW Research Department
13
Hybrid Snapshot 부팅 기법 (1/3)
 개요
 전통적인 스크립트 방식의 부팅 기법과 Snapshot 부팅 기법의 단점을 보
완
스크립트 부팅 방식의 유연성
Snapshot 부팅 방식의 성능
 초기화 스크립트까지는 큰 변화가 없는 것에 착안
 There are 2 approaches
Snapshot 부팅  응용 프로그램은 스크립트 방식
스크립트 방식 부팅  Snapshot 부팅
– 기술적 충돌이 많아 고려 대상에서 제외
Snapshot Booting
부팅 성능 Memory Footprint의 크기
유연성
유연성이 없음
(변경될 경우 Snapshot을 재제작)
Script Booting
부팅 복잡도
세밀한 조정 가능
(FS 별로 On-the-fly로 수정 가능)
Embedded SW Research Department
14
Hybrid Snapshot 부팅 기법 (2/3)
 부팅 방식 비교
Boot Loader
Kernel
/sbin/init &
Initial Script
Application Startup
Service
Execution
Legacy Booting Mechanism
Boot Loader
Kernel
swsusp
Restore Snapshot
Snapshot Booting Mechanism
Boot Loader
Kernel
swsusp
Restore Snapshot
Service
Execution
Hybrid Snapshot Booting Mechanism
Embedded SW Research Department
15
Hybrid Snapshot 부팅 기법 (3/3)
 Hybrid Snapshot 부팅의 특징
 제품에 적용이 상대적으로 유리
제품 카테고리에 따라 부팅이 대체적으로 흡사하나 응용프로그램
은 다를 수 있음
 Snapshot 제작이 어려운 경우 다른 제품의 Snapshot을 응용해 사용
가능
 제품 사용자가 시스템의 상태를 변경할 일이 있을 때 사용 가능
 오류 복구용으로도 사용 가능
응용 프로그램 단독 상태 저장 기능 필요
Embedded SW Research Department
16
감사합니다
Q&A
Embedded SW Research Department
17