커널
- 운영체제 핵심 기능
- 파일 시스템 및 입출력장치 지원
-응용 소프트웨어 실행 환경 제공위한 소프트웨어 모듈
하드웨어 자원이 제한적이고/ 응용분야에 특화된 소프트웨어의 경우
- 운영체제 커널 필수 기능/소프트웨어만 남기고 나머지 삭제
-> 하드웨어 자원 활용도 높이고, 시스템 성능 향상
임베디드 시스템에 리눅스 설치
- 사용하는 타겟보드에 맞추어 커널 수정 필요
- 리눅스 소스 수정? -> 커널에 대한 정확한 이해, 안정성 보장 힘듬
=> 커널 코드 수정 대신 구성이나 기능을 선별적으로 선택하여 재구성을 함
- make 유틸리티
- 커널 기능과 sw 모듈들의 선택적 컴파일
=> 커널 실행파일
(1) 커널 재구성 옵션
1) 커널 컴파일 및 재구성
2) 커널 재구성 옵션
1) 커널 컴파일 및 재구성
커널 컴파일 및 재구성
1. 커널 컴파일 : 커널 소스로부터 커널 실행파일 얻는 과정
- generic 커널 소스에 사용하고자하는 하드웨어 플랫폼용 패치 추가
- make 유틸리티로 컴파일
- make 유틸리티로 커널 컴파일 과정 시 다양한 커널 옵션 제공.
사용 목적에 따라 커널 기능 설정하여 크기나 성능 최적화하도록 구성
- 커널 옵션 설정 후 컴파일 하여 커널 이미지를 생성하여 실행
2. 커널 재구성
- 메뉴로 커널 옵션 선택/해제
-> 커널 기능 일부 활성화/비활성화
-> generic 커널이나 기존 커널 변경
- 커널 소스 직접 수정 -> 소스 깊은 이해 필요
- 커널 옵션을 통해 컨러 설정
-> 주요 설정을 옵션 매뉴형태로 제공하여 쉽게 간단히/비활성화
3. 커널옵션 설정
- 텍스트 기반 메뉴를 사용한 설정 : make menuconfig
- X-윈도우 기반 설정 : make xconfig
- 커널 옵션 설정 : /usr/src/linux/.config 파일 설정
- 변경된 커널 실행 : 부트로더에 등록. 시스템 부팅시 변경된 커널이 선택되어 실행되도록 해줌
2) 커널 재구성 옵션
커널 재구성 옵션
- 커널 메인 메뉴에는 설정가능옵션 나열
- 선택시 서브메뉴 표시
- 메인 메뉴 옵션리스트는 시스템에 따라 다름
code maturity level options
- 불완전한 커널코드나 드라이버 사용여부 -> 시스템 안정성확보를 위해 선택안하는게 좋음
Loadable module support
- set version information on all module symbols : 다른 버전 커널에서 생성한 모듈을 사용할 경우
processor type and feature
- math emulation : 수치연산 보조프로세서가없는 경우 에뮬레이션하는 경우 선택
- MTRP(memory type range resister) support : pci나 agp 버스를 사용하는 경우 선택
- 특정 프로세서, 플랫폼에 따른 설정 파라미터들을 정의해 선택적 커널 컴파일
general setup
- networking support : 네트워크 지원 여부 -> 대부분 임베디드시스템에서 쓰므로 선택이 좋음
- pci/eisa/mca support : pci/eisa/mca 버스지원여부 선택
- system v ipc : system v ipc 사용여부 설정
- pcmcia/cardbus support : pcmcia 카드 사용여부
- support hot-pluggable device : hot plug 디바이스 사용 여부
- bsd processing account : 프로세스 종료시 프로세서 관련 정보를 파일로 저장
- sysctl support : 커널 실행 중에 커널 파라미터나 변수값 설정
- kernel core format : 커널 코어 포맷 설정
- kernel support for elf binaries : elf 지원 여부
- power management support : 자원 관리 모드 지원 여부
Memory Technology Device(MTD)
- MTD support : 플래시 메모리 사용여부 - 대부분 임베디드 시스템에서 플래시 메모리 쓰므로 반드시해야함
- Parallel port support : 프린터 및 병렬포트 사용하는 디바이스 지원
Plug and Play configuration
- plug and play support : PnP 기능을 가진 디바이스 지원
Block devices
- Loopback device support : 루프백 디바이스 사용 여부 -> 램디스크 사용하는 경우 루프백 디바이스 기능 사용
- RAM disk supoort : 램디스크
- Default RAM disk size : 기본 램디스크 크기지정
- Initial RAM disk supoort: 초기 램디스크
- Flash memory block support : 플래시 메모리를 램디스크로 쓸건지 설정
Networking options
- 대부분 임베디드 시스템에서 이더넷 지원하므로 네트워크 설정 작업은 매우 중요
- 다양한 옵션들을 시스템 동작환경에 따라 신중하게 설정해야함
- packet socket : 패킷 프로토콜 사용 여부 ->네트워크 디바이스에 직접 접근할경우 설정
- neetwork packing filtering : 네트워크 패킷에 대한 필터링 기능 지원 여부 ->라우터 게이트웨이,방화벽등 사용시 필요
- socket filtering : 소켓에 대한 필터링 여부
- undix domain sokets : 유닉스 도메인 소켓 지원 여부
- TCP/IP networking : TCP/IP 지원 여부
Network device support
- Network device support : 네트워크 카드 사용, SLIP, CSLIP 등 프로토콜 지원
- Ethernet : Ethernet network interface card(NIC) 사용 여부
- 네트워크 인터페이스 카드는 시스템에서 사용하는 네트워크 디바이스에 따라 선택적으로 선택
-> 커널 재구성전 네트워크 인터페이스에 대한 정보 파악
IrDA(infrared) support
- IrDa subsystem supoort : 적외선 통신 지원
Input core support
- input core support : 키보드 마우스 조이스틱 사용여부
character devices
- virtual terminal : 가상 단말 지원 여부
- support for console on virtual terminal : 가상터미널을 콘솔로 사용
- support for console on serial port : 표준 시리얼 포트를 콘솔로 사용
- unix98 pty support : pty 단말기 지원 여부
- watchdog cards : 하드웨어 및 소프트웨어 와치독 지원
USB support
- support for usb : usb 지원
- usb device file system : usb 파일 시스템 지원
console drivers
- vga text console : 일반 vga 표준 모드 콘솔 지원
- video mode selection support : 커널 시작시 비디오 모드 설정
- frame buffer support : 콘솔에서 그래픽 기능 지원하도록 설정
file systems
- quota support : 사용자별로 디스크 사용량 제한
- kernel automounter support : 원격 파일 시스템 자동 마운트
- /proc file system support : 시스템 상태 정보를 제공하는 가상 파일 시스템인 /proc 파일시스템 사용 여부
- /dev/pts file system for unix98 pys : /dev/pts 파일시스템 지원 여부. 텔넷 사용할 경우 선택
- second extended fs support :ex2 파일시스템 지원 여부. 리눅스 기본 파일시스템이므로 반드시 설정
- network file system : nfs 기능 쓰려면 설정
kernel hacking
- verbos kernel error message : 시스템 내부 에러 출력 여부
- verbos user fault message : 사용자 프로그램 에러 메시지 제공여부
(2) 커널 이미지 생성 절차
1) 임베디드 커널 이미지 생성 절차
2) make 유틸리티 작업 흐름
1) 임베디드 커널 이미지 생성 절차
임베디드 커널 이미지 생성 절차
- 임베디드용 커널 이미지 생성 절차는 일반 pc에서 리눅스 커널 컴파일 절차와 크게 다르지 않음
-> 커널 소스에 사용하는 프로세서와 타겟보드에 관련된 소스패치 작업이 필요
-> 재구성 과정에서 타겟보드에 관련된 커널 구성옵션 사용함
-> 생성된 이미지를 타겟 보드에 퓨징해서 사용함
임베디드 커널 이미지 생성 절차
1. 커널 소스를 다운받아 작업 디렉토리 /usr/src/linux에복사
2. 크로스 컴파일러를 포함한 툴체인 설치 확인 /usr/local/arm/bin
3. 타겟보드 환경에 적합하도록 커널 패치
4. 작업 디렉토리에서 이전 커널작업환경 삭제
5. 커널옵션사용한 커널 재구성
6. 커널 재구성과정을 통해 매뉴를 소스에 적용
7. 메이크파일간 상호의존성 검사
8. 불필요한 목적파일 삭제
9. 커널을 컴파일 및 이미지 생성
10. 커널 이미지를 FTP 명령어와 플래시메모리 퓨징명령어로 타겟보드에 퓨징
11. 타겟 보드 리부팅 후 새로운 커널 실행 확인
2) make 유틸리티 작업 흐름
1. check target-board environments
2. make menuconfig
3. make depend
4. make clean
5. make zImage
6. zImage를 타겟 보드에 퓨징 ->ftp zImage kernel, falsh kernel
'컴퓨터과학 > 임베디드' 카테고리의 다른 글
ARM을 활용한 임베디드 시스템 설계 21 - 램디스크 (0) | 2020.05.05 |
---|---|
ARM을 활용한 임베디드 시스템 설계 20 - 리눅스 파일 시스템 (0) | 2020.05.05 |
ARM을 활용한 임베디드 시스템 설계 18 - 리눅스 커널 (0) | 2020.05.04 |
ARM을 활용한 임베디드 시스템 설계 17 - 부트로더 분석 (0) | 2020.05.04 |
ARM을 활용한 임베디드 시스템 설계 16 - 부트로더 구조 (0) | 2020.05.04 |