Notice
Recent Posts
Recent Comments
Today
Total
04-30 00:02
Archives
관리 메뉴

Jeongchul Kim

임베디드 리눅스 개발 환경 구축 실습: 타겟 보드 구동 본문

Embedded Linux

임베디드 리눅스 개발 환경 구축 실습: 타겟 보드 구동

김 정출 2015. 12. 21. 19:12

9.1 타겟 보드 접속 환경 설정

타겟 보드의 ✶ J12(Debug Port)

PC의 시리얼 포트(COM1, COM2)나 USB-to-Serial 변환 케이블을 사용하여 타겟 보드의 J12(Debug Port)

커넥터에 연결하는 시리얼 케이블은 Windows 에서의 하이퍼터미널과 Linux에서의 minicom과 같은 가상 시리얼 에뮬레이터를 통해 타겟 보드에 접속하여 명령어를 입력하거나 타겟 보드의 현재 상태를 확인하는 용도 즉, Monitoring 용도로 사용하게 된다.


케이블 종료

타겟 보드 커넥터

케이블 용도

Serial

J12: Debug Port

Monitoring

Ethernet

J18: WAN Port

Downloading, Monitoring, Setting

USB

J19: USB Device

BSP Image Programming

<표> 연결해야 할 케이블의 종류


시스템베이스 사의 ARM9 타겟 보드인 Eddy DK에 시리얼 케이블을 연결할 때

반드시 시스템베이스 사에서 제공한 시리얼 연장 케이블과 연장 케이블의 숫놈(Male)을 암놈(Female) 으로

바꿔줄 미니 젠더(gender) 소켓을 연결해야만 한다. 그렇지 않을 시 통신이 되지 않는다.


<그림> 타겟 보드(Eddy DK)의 커넥터 배치 화면


J18(WAN Port) 커넥터에 연결하는 이더넷 케이블은 일반적으로 인터넷 접속에 사용하는 케이블로,

타겟 보드와 PC 간 인터넷 접속(Telnet, FTP, TFTP, Web 등)을 하기 위해 필요한 케이블로 BSP 이미지

파일을 다운로드(Downloading)하거나, 인터넷 기반으로 현재 상태를 점검하거나(Monitoring), 혹은

타겟 보드의 환경 설정 값들을 바꾸거나(Setting) 할 때 사용된다.


J19(USB Device) 커넥터에 연결하는 USB 케이블은 사용자의 부주의로 DataFlash 내에

저장되어 있는 BSP 이미지 내용이 잘못되었을 경우 원래의 BSP 이미지 내용으로 복구할 때 사용되는

케이블이다. 즉, Eddy-CPU 모듈 내 장착된 DataFlash에 Embedded Linux BSP 이미지 파일들

(Boot Loader, Kernel, File System 이미지 파일)을 탑재하기 위해 (Programming) 필요한 케이블로

실제로는 거의 사용하는 일이 없을 것이다.












9.1.1 Serial 접속 환경 설정

타겟 보드에 시리얼(Serial)로 접속하는 방법에는 Windows에서 하이퍼터미널로 접속하는 방법과

Linux에서 minicom이란 프로그램으로 접속하는 방법이 있다.


1. Windows에서 하이퍼터미널로 접속하는 방법

(1) 케이블 연결 확인: [PC, COM1 포트] <-> [타겟보드, J12 커넥터]

PC와 타겟 보드 간 시리얼 접속을 위해 PC에 나와 있는 COM1 (혹 COM2 포트)와 타겟 보드의 디버그 포트인

J12 커넥터를 연결한다.


노트북을 사용할 경우에는 COM1 같은 시리얼 커넥터가 없는 경우가 많으므로, 이럴 경우 USB-to-Serial

변환 케이블을 사용하면 된다.


단, USB-to-Serial 변환 케이블을 사용할 경우에는 Windows에서 자동으로 가상 시리얼 포트 값을 할당 받게

되는데, 어떤 포트 값을 할당 받았는지 확인하려면 다음 그림처럼 [장치관리자]의 포트 부분을 확인한다.

참고로 가상 시리얼 포트 값은 “3번” 이후부터 할당 받으니 COM3으로 시작할 것이다.


(2) 하이퍼터미널 실행

시작-> 보조 프로그램 -> 통신 -> 하이퍼터미널 실행


(3) 하이퍼터미널 설정(첫 하이퍼터미널 실행 시)

하이퍼터미널로 타겟 보드에 접속하려면 타겟 보드에 이미 설정된 값대로 하이퍼터미널 값들을

설정해주어야 한다.

- 이름 입력

- 지역 번호 02, 시리얼 포트 값 입력


(4) 포트 속성 설정: 115200, 8-N-1

Eddy DK 보드는 115200bps 시리얼 통신 속도로, 8비트 사이즈의 데이터를 패리티(Parity)확인 없이

1비트의 정지(Stop) 비트를 가지고 통신을 하며, 하드웨어 흐름 제어(Flow Control) 등은 하지 않도록

이미 설정되어 있다.


(5) 접속 화면 확인

모든 설정이 끝나면 로그인 화면이 나오는데 아이디(ID)는 “eddy” 암호(password)는 “99999999”를

입력하면 로그인이 되어 명령어를 입력할 수 있는 프롬프트 상태가 된다.


2. Linux에서 minicom으로 접속하는 방법

(1) 케이블 연결 확인: [PC, COM1 포트] <-> [타겟 보드, J12 커넥터]
Windows와 동일


(2) minicom 실행

Linux에서 minicom을 실행

처음 실행하는 거라면, 시리얼 접속 환경 설정을 하지 않았으므로, minicom -s를 실행하여

시리얼 접속 환경을 설정해줘야 한다.


시리얼 디바이스 설정하려면 [configuration] 박스에서 “Serial port setup” 메뉴를 선택한다.


(3) minicom 설정 : /dev/ttyS0, 115200, 8-N-1

가장 먼저 설정해야 할 부분은 타겟 보드가 PC와 어떤 시리얼 포트로 연결되었는가 하는 점이다.

Linux에서는 모든 디바이스들을 파일로 제어하게 되며, 0부터 번호가 매겨지게 된다.

따라서 COM1 포트 시리얼 디바이스를 Linux에서는 /dev/ttyS0 로 표기해야 한다.


두 번째 설정 부분은 시리얼 접속의 연결 속성이다.

시리얼 포트 디바이스가 어느 정도의 속도(Baud Rate)로 연결될 것인지, 연결된 후 어느 정도의 데이터 사이즈를 송수신할 것인지, 데이터 송수신에 대한 오류 체크는 할 것인지 등에 관한 속성 설정.

“E-Bps/Par/Bits” 메뉴를 선택하여 115200, 8-N-1 설정


마지막으로 하드웨어 흐름 제어는 없음(no)로 설정해줘야 한다. “F-Hardware Flow Control” 에서 No 설정


(4) 디폴트 default 설정으로 저장하기

minicom 설정 메뉴 중 “Save setup as dfl” 메뉴를 선택한다.


(5) 접속 화면 확인 - 로그인 과정


Eddy login: eddy

Password: 99999999

login[~~~]: root login on ‘ttyS0’

[EDDY]#

[EDDY]#



9.1.2 Ethernet 접속 환경 설정

PC에서 작업한 타겟 보드용 BSP 이미지 파일들을 타겟 보드로 업로드하는 방법은 웹(Web)을 이용하거나

타겟 보드의 부트 로더에서 Linux의 TFTP 명령어를 사용하는 방법이 있는데,

이 경우 모두 PC와 타겟 보드 간의 이더넷(Ethernet) 접속을 통해 실행되는 방법


1. Boot Loader에서 Ethernet 설정하기

U-Boot에서는 타겟 보드의 IP 주소 값을 “ipaddr”이라는 환경 변수에 TFTP 서버에 해당되는 PC의 IP 주소값을

“serverip”라는 환경 변수에 각각 저장하고 있다. 각 환경 변수에 저장된 값을 확인할 때는 “printenv” 명령어

값을 수정할 때는 “setenv” 명령어, 값을 수정한 후 저장할 때는 “saveenv” 명령어


U-Boot(Boot Loader)에 접속하려면, 하이퍼터미널(Linux에서는 minicom)을 실행시키고

보드의 전원을 켠 후에 곧바로(3초 이내) 아무 키든 입력을 해주어야 한다. 아무 키나 입력을 하지 않을 시

디폴트로 설정된 자동 부팅(Autoboot) 모드가 실행되어 곧바로 리눅스 커널의 압축이 풀리며,

리눅스 커널이 실행되기 때문이다.


Hit any key to stop autoboot : 0

U-Boot>


U-Boot> printenv ➠ IP 주소 설정 내용 확인

U-Boot> setenv ipaddr [타겟 보드 IP 주소] ➠ 타겟 보드의 IP 주소 설정

U-Boot> setenv serverip [PC 서버 IP 주소] ➠ PC 서버의 IP 주소 설정


U-Boot> printenv

....

ipaddr=192.168.10.XXX

serverip=192.168.10.XXX

....

명령어 실행 시 타겟 보드의 IP 주소와 TFTP 서버, 즉 PC의 IP 주소는 각각 “ipaddr” “serverip” 환경 변수에 저장되어 있으며, 확인 가능하다.

타겟 보드의 U-Boot에 접속할 때 마다 IP 주소 설정 값을 매번 바꿔주는 것은 상당히 번거로우므로,

setenv 명령어로 IP 주소 설정을 변경한 후에 가급적으로 “saveenv” 명령어를 실행시켜 변경한 값을

플래시 메모리 내에 저장되어 있는 환경 변수 값에 저장하는 것이 좋다.


U-Boot> setenv ipaddr 192.168.XXX.XXX

U-Boot> setenv serverip 192.168.XXX.XXX

U-Boot> saveenv

Saving Environment to dataflash ...

U-Boot> printenv

U-Boot> 0


2. 타겟 보드에 로그인 후 Ethernet 설정하기

타겟 보드에 맞도록(크로스) 컴파일 된 User Application의 실행 파일이나 디바이스 드라이버의 모듈 파일

(*.ko)을 타겟 보드에 손쉽게 탑재하여 테스트하기 위해서는 FTP 혹은 NFS(Network File System)로 연결해야

하는데, 그러기 위해서는 타겟 보드가 리눅스 커널 부팅이 완료된 후 U-Boot 에서 와 마찬가지로 접속할 PC와

IP 주소 네트워크 대역이 서로 같도록 설정해주어야 한다.

리눅스 상에서 IP 주소를 확인하거나 설정할 때 사용하는 ifconfig 명령어 사용


[EDDY]# ifconfig ➠ IP 주소 설정 내용 확인

[EDDY]# ifconfig eth0 [타겟 보드 IP 주소] net mask 255.255.255.0

➠ 타겟 보드의 IP 주소 설정


[EDDY]# ifconfig

eth0 Link encap:Ethernet Hwaddr 00:XX:XX:XX:XX:8B

inet addr:192.168.XXX.XXX ...

....

lo Link Encap:Local Loopback

inet addr:127.0.0.1 ...

...


우리가 설정할 실제 Ethernet 디바이스는 “eth0”이다.

“lo”는 Loopback 디바이스로 실제 “eth0” 처럼 디바이스가 있는 게 아니라 테스트 목적을 위해

호스트 자신의 IP 주소를 나타내기 위한 가상 디바이스로 127.0.0.1 주소를 할당 받는 것이 일반적이다.



9.2 파일 시스템 이미지 파일 업데이트

타겟 보드인 Eddy DK에 탑재된 Lemonix라는 Embedded Linux는 타겟 보드를 제작한 시스템 베이스 사에서

RTOS(Real-Time OS)에 필적하도록 실시간 적인 응답 속도를 상용 Embedded Linux인 몬타비스타

(Montavista) 제품과 비교될 정도로 매우 성능이 뛰어나기 때문에 정책적으로 커널 소스를 배포하지 않고 있다.


따라서 커널과 직접적으로 연관되어 있는 Boot Loader인 U-Boot 소스 역시 배포하고 있지 않기 때문에,

일반 사용자는 User Application과 Device Driver 커널 모듈을 탑재할 파일 시스템 만을 수정할 수가 있다.


디바이스 드라이버는 반드시 커널 모듈 파일(*.ko)의 형태로 개발하여 타겟 보드에 탑재시켜야 한다.






9.2.1 웹 기반의 파일 시스템 이미지 업데이트

네트워크 환경이 192.168.0.X 대역이므로, 타겟 보드의 IP 주소가 192.168.10.111이라고 가정했을 때

웹 브라우저로 타겟 보드(IP 주소 입력)에 접속하면 로그인 화면이 나온다.

ID: eddy / PW: 99999999 로그인 한다.


Eddy DK의 웹에서 지원되는 셋업(Set-up) 메뉴


메뉴

설명

Summary

타겟 보드의 기본적인 정보들을 확인하는 메뉴

Network Settings

Ethernet 연결과 관련된 항목들을 설정

Peripheral Settings

주변 디바이스의 용도(ex: GPIO)를 설정

Serial Settings

각 시리얼 포트 디바이스의 연결 속성을 설정

DIO Settings

타겟 보드의 각 DIO(Digital I/O) 포트 값을 설정

SNMP Settings

SNMP Agent를 설정 - 인터넷으로 연결된 네트워크 장비들의 상태 정보를

모니터링하기 위해 개발된 TCP/IP 응용 프로토콜

Change Password

웹과 텔넷 접속 로그인에 필요한 계정과 암호를 설정하는 메뉴

Update Firmware

파일 시스템 이미지를 타겟 보드에 탑재하기 위한 메뉴

Factory Default

타겟 보드의 설정 정보들을 공장 초기화 상태로 변경

Save & Reboot

설정했던 내용들을 타겟 보드에 저장하고 재부팅 하기 위한 메뉴


시스템 이미지 업데이트를 위해 메뉴 중 [Update Firmware]를 선택하고 업데이트할 파일 시스템 이미지 파일

“eddy-fs-2.1.0.1.bin” 파일을 선택한다. (버전이 다를 수도 있다.) Start Update 버튼을 클릭하면 타겟 보드의

플래시 메모리에 탑재된 후 자동적으로 보드가 재부팅 된다.




9.2.2 FTP 기반의 파일 시스템 이미지 업데이트

1. FTP 명령어로 파일 시스템 이미지 파일을 타겟 보드에 업로드

타겟 보드(Eddy DK)에서 실행되고 있는 FTP 서버로 PC에서 FTP 접속하여 타겟 보드의 “/tmp” 디렉토리에

해당되는 파일 시스템 이미지 파일을 업로드 한다.


GUI FTP 프로그램 설치 후 사용하여도 된다.

FTP 접속 계정과 비밀번호는 웹 접속 계정과 동일하다.

접속이 완료되면 “/tmp” 디렉토리로 이동하여 이미지 파일 선택하여 업로드하면 된다.



2. 텔넷 접속 후 “upgrade” 명령어 실행

타겟 보드에 업로드 한 후 실제 업데이트를 수행해야 한다.

[EDDY]# cd [업로드 디렉토리] ➠ 업로드 디렉토리로 이동

[EDDY]# upgrade [업데이트할 파일 시스템 이미지 파일] ➠ 업데이트 실행



[EDDY]# cd /tmp

[EDDY]# upgrade eddy-fs-2.1.0.1.bin

(Flash Write OK)  

(Flash Verify OK)

Update Complete


참고로 플래시 메모리는 Erase(삭제) ➜ Write(기록) ➜ Verify(검증)의 단계를 거친다.



9.3 Embedded Linux BSP 이미지 파일 탑재

Embedded Linux BSP는 Boot Loader, Kernel, File System의 세 가지 이미지 파일로 구성되어 있다.

이러한 각각의 BSP 파일들을 타겟 보드의 플래시 메모리에 탑재하는 방법은 ARM 기반의 프로세서에서

지원하는 일반적인 JTAG을 이용하거나 TFTP 다운로드를 이용하는 방법이다.

여기서는 TFTP와 Eddy DK에 탑재된 ATMEL 사의 AT91SAM9260에서 지원하는 USB 방식의

ISP(In-System Programming : Flash Programming)을 이용하는 방법


9.3.1 TFTP 기반의 BSP 이미지 탑재

새롭게 파일 시스템 이미지 파일을 업데이트할 때에는 타겟 보드 내에 탑재되어 있는 FTP 서버로 접속하여

파일을 업로드하는 방식이었다. 그러나 Boot Loader, Kernel 등은 파일 시스템과 달라서 PC에서 타겟 보드로

접속하는 게 아니라 거꾸로 타겟 보드에서 PC로 접속해야 한다.


따라서 TFTP 기반으로 BSP 이미지 파일들을 타겟 보드에 탑재할 때에는 가장 먼저 서버가 될 PC에

TFTP 서버를 설치 및 설정해야 한다.


1. Windows에서 TFTP 기반으로 BSP 이미지 탑재

(1) TFTP 서버 구축

TFTP 또한 서버와 클라이언트로 동작 되기 때문에, 먼저 서버가 될 PC에 Windows용 TFTP 서버를 설치한다.

TFTPD32(Freeware) 설치 주소 http://tftpd32.jounin.net/tftpd32_download.html


Windows용 TFTP 서버 프로그램 설정


FTP

TFTP

기반 프로토콜

TCP

UDP

계정 로그인 여부

계정과 암호 로그인 필요

로그인 필요 없음

다운로드 파일 경로

다양하게 지정할 수 있으므로,

다운로드 시 대상 파일이 있는 경로로

찾아가야 함

특정 디렉토리 한 군데만 지정할 수

있으므로, 별도로 경로를 찾아가는 일이

없음


FTP는 TCP(Transmission Control Protocol) 기반의 응용 프로토콜 중 하나로 파일을 업로드하거나, 다운로드 할 때 TCP 기반의 재 전송 알고리즘이 적용되는 등 비교적 복잡하게 동작하게 된다.


반면, TFTP는 임베디드 시스템 개발 시에만 주로 사용하는 프로토콜로, PC에 있는 타겟 보드용 이미지 파일들을 별도의 로그인 과정 없이 단순히 다운로드 받고자 파일 이름만 입력하면, 파일이 미리 지정된

어느 특정 디렉토리(TFTP 서버 홈 디렉토리)에 있는지 확인하여, 있다면 다운로드 시켜 주고, 없다면

오류 메세지를 보내는 정말 단순한 프로토콜이다.


따라서 Windows용 TFTP 서버 프로그램인 TFTPD32에서 “설정”할 부분은 특정 디렉토리, 즉 서버 홈 디렉토리

만 지정하면 된다.

프로그램 실행과 동시에 TFTP 서비스가 실행이 되며, PC의 IP 주소 역시 자동적으로 인식하기 때문에 다른

별도의 설정 없이 오직 TFTP 서버 홈 디렉토리만 지정해주면 바로 이용할 수 있다.


먼저 TFTPD32 디렉토리에 타겟 보드용 BSP 이미지 파일들을 저장시킬 폴더를 하나 생성한다.

Browse 버튼을 통해 홈 디렉토리를 설정하면 된다. C:\TFTPD32\EDDY_BSP


타겟 보드용 BSP 이미지들을 앞서 홈 디렉토리에 미리 복사해 놓는다.

eddy-bl.bin, eddy-bs.bin, eddy-fs.bin, Eddy-MIB.txt, eddy-os.bin, readme.txt


(2) TFTP 기반으로 BSP 이미지 탑재

TFTP 서버가 PC에서 실행되면, TFTP 클라이언트는 타겟 보드에서 실행.

타겟 보드의 Boot Loader에 TFTP 클라이언트가 포팅되어 있으므로, Boot Loader 상태에서 접속해야 한다.


➤ 타겟 보드의 Boot Loader(U-Boot) 접속

Windows용 하이퍼터미널을 실행시켜 Boot Loader 상태(부팅시킨 후 바로 키 입력)로 접속한다.


➤ IP 주소 설정 확인 및 변경

U-Boot> setenv ipaddr 192.168.0.X[보드 IP]

U-Boot> setenv serverip 192.168.0.Y[컴퓨터 IP]

U-Boot> printenv

U-Boot> saveenv


➤ Kernel BSP 이미지 파일 탑재

U-Boot> tftp [다운 받을 RAM 영역 주소][다운 받을 파일 이름] ➠  BSP 이미지 파일 탑재


일반적인 Embedded Linux 상에서 BSP 이미지 파일을 TFTP 서비스를 이용하여 타겟 보드에 탑재할 때에는,

먼저 TFTP로 해당 파일을 RAM 영역에 다운로드한 다음, 별도의 Flash Programmin 명령어(“nand write”)를

이용하여 타겟 보드의 플래시 메모리에 기록(Write)을 해야 한다.


그러나 시스템 베이스 사의 ARM9 타겟 보드인 Eddy DK에서는 각각 실행시켜야 할 이 두 가지 명령어를

install이라는 하나의 명령어로 통합해 제공


U-Boot>install os [탑재 시킬 Kernel BSP 파일 이름] ➠  BSP OS 탑재




U-Boot>install os eddy-os-2.1.0.1.bin

Using macb0 device

TFTP from server 192.168.0.Y: our IP adrees is 192.168.0.X

Filename ‘eddy-os-2.1.0.1.bin’.

Loading address: 0x20000000

Loading: ###########

done

Copy to DataFlash . . .  done


RAM 영역인  0x20000000 주소로 다운로드 받은 후, 타겟 보드의 DataFlash로 기록(Write)까지 완료되었음.


<그림> AT91SAM9260 프로세서의 Memory Map 일부


각 CPU들은 내부 혹은 외부의 메모리들을 접근하기 위해  Memory Map이라는 일종의 메모리 지도를

가지고 있다. SDRAMC, 즉 RAM 영역이 0x2000 0000 ~ 0x2FFF FFFF까지 이므로 첫 주소 부터 실행


➤ File System BSP 이미지 파일 탑재

U-Boot>install fs [탑재 시킬 File System BSP 파일 이름] ➠  BSP File System 탑재


U-Boot>install fs eddy-fs-2.1.0.1.bin

Using macb0 device

TFTP from server 192.168.0.Y: our IP adrees is 192.168.0.X

Filename ‘eddy-fs-2.1.0.1.bin’.

Loading address: 0x20000000

Loading: ###########

done

Copy to DataFlash . . .  done



2. Linux에서 TFTP 기반으로 BSP 이미지 탑재

(1) TFTP 서버 구축

➤ Linux용 TFTP 서버 데몬 설치


데몬(Demon)이란?

작업 상태

설명

Foreground Job

사용자가 명령어를 입력하면 그 명령어가 끝날 때까지 터미널을 다른 용도로

사용할 수 없고, 현재 실행 중인 명령어 터미널을 통해 사용자에게 정보, 즉

실행시킨 명령어의 결과를 직접적으로 보여준다. ex) 명령어 ls, vi

Background Job

사용자가 명령어를 입력한 후에 그 명령어의 실행이 끝나기 전에 터미널을 다른

용도로 사용할 수 있다. 실행을 완료하는데 시간이 오래 걸리는 작업이나 시스템이

부팅된 후 종료될 때 까지 계속 실행하고 있어야 할 네트워크 관련 데몬들을

Background Job으로 실행시킨다.

사용자가 해당 명령어를 백그라운드 작업으로 실행하려면 명령어 끝에 “&”를 붙인다

ex) httpd &

Suspend Job

현재 실행 중인 명령어를 잠시 동안 일시 정지 시키려면 “Ctrl+Z”(^Z)를 입력하면

된다. 이를 이용하면 현재 실행 중인 Foreground job을 Background job으로 변경하는 것도 가능하다.

<표> Linux / UNIX 에서의 3가지 작업 상태


일반적으로 Linu에 로그인한 후 입력하는 명령어들은 대개 Foreground Job으로 실행된다. 바로 결과가

눈에 보여지기 때문이다. 그러나 눈에 보이지 않더라도 Linux 시스템이 부팅한 후 종료될 때까지 계속적으로

실행되는 프로그램들이 있는데, 이들은 우리 눈에 보이지는 않지만 Background Job 상태로 실행되고 있으며

이들을 Linux/UNIX에서는 “데몬(Demon)” 이라고 부른다.


Linux 명령어 “ps -ex | more” : 현재 실행(-ex) 중인 모든 프로세스(ps)들을 화면에 한 페이지 단위로 출력(more)하라는 명령어로, 화면에 나오는 프로세스들은 부팅된 이후 부터 종료될 때까지 우리 눈에 바로

보이지는 않지만 실행되고 있는 데몬들이다.


일반적인 데몬들과 달리, TFTP와 같은 TCP/IP 인터넷 서비스 관련 데몬들은 실행되는 방식이 조금 다르다.

1990년대 Linux/UNIX에서는 각 인터넷 서비스 데몬들을 따로 직접 실행시키는 방법이었으나,

시스템 자원의 효율성과 보안성을 높이기 위해 ‘inetd”라는 데몬들의 데몬, 이른바 슈퍼 데몬(Super Demon)이라는 개념이 대두 되었다. 즉, 각 인터넷 서비스 데몬들이 바로 실행되는 게 아니라 일단 “inetd” 슈퍼 데몬에 등록되어 있고, 시스템 상에는 “inetd” 슈퍼 데몬만 실행되고 있다가, 외부에 인터넷 서비스 요청이 들어왔을 때 만약 등록되어 있는 서비스라면 해당 서비스 데몬을 그때서야 실행시키는 방식으로 변경되었다. 이후 “inetd”가 “xinetd”로 좀 더 개선되어 현재는 “xinetd” 기반으로 TFTP 서버 데몬을 실행













Linux 상에서 TFTP 서버 데몬 설치 과정


1. 실제 TFTP 서버 데몬이 설치되어 있는지 확인: RPM 패키지 확인 및 설치

2. /etc/xinetd.d/tftp 파일 수정

3. xinetd 서비스 재 시작






가장 먼저 TFTP 서비스를 제공할 데몬 프로그램이 설치되어 있는지 확인해야 한다.


RPM 패키지 명령어

설명

# rpm -qa | grep [패키지 이름]

[패키지 이름]이 들어가 있는 RPM 패키지가 시스템 내에 설치되어 있는지 확인(Query)

# rpm -ivh [패키지 이름].rpm

패키지 파일(*.rpm)을 시스템 내에 설치(Install)

# rpm -e [패키지 이름]

해당 패키지를 삭제(Erase)

단, 삭제할 때는 반드시 “패키지 이름”만 입력!

<그림> RPM 패키지 관련 명령어 정리


[root@ ~]# rpm -qa | grep tftp

tftp-server-0.42-3.1

[root@ ~]# which in.tftpd

/usr/sbin/in.tftpd ➜ TFTP 서버 데몬이 위치하는 디렉토리

[root@ ~]# ls /etc/xinetd.d/ ➜ 관련 설정 파일이 위치하는 디렉토리

... ... .... ... tftp ....


TFTP 설치는 인터넷으로 검색하여 rpm을 다운받아 설치하면 된다.


(2) TFTP 서버 데몬 설정

/etc/xinetd.d/tftp 파일을 수정해야 한다.


[root@ ~]# vi tftp


# default: off

# modified by JungChul

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /user/sbin/in.tftpd

server_args = -s /tftpboot

disable = no ⇦ 수정해야 할 부분

per_source = 11

cps = 100 2

flags = IPv4

}


disable = yes는 TFTP 서비스 데몬이 실행되고 있지 않았었기에 이를 no로 수정하여 이후로는 시스템이 부팅

하면 자동적으로 TFTP 서버 데몬이 실행되도록 수정해주는 것이다.




설정이 끝나면 “xinetd” 데몬에 변경 내용을 적용 시키기 위해 중지 시키고 새로 실행시켜야 한다.



재시작하는 명령어이다.


[root@ ~]# service xinetd restart

xinetd 를 정 지 함 : [   OK   ]

xinetd (을)를 시 작 합 니 다 ! [   OK   ]

[root@ ~]#

[root@ ~]# netstat -a | grep tftp

udp 0 0 *:tftp *:*


실행 결과를 확인하기 위해 “netstat”라는 네트워크 상태를 확인하는 명령어를 통해

TFTP 서비스가 실행 대기 중임을 확인


(3) TFTP 기반 BSP 이미지 탑재

VMware 사용자라면 한 가지 설정이 더 필요

> VMware 내부 네트워크 설정 변경

VMware 같은 가상화 솔루션을 사용하여 Embedded Linux를 개발할 때, 가장 좋은 네트워크 환경은

개발자의 PC에 네트워크 카드가 두 장 꽂혀 있는 것이다. 한 장은 Windows에서 인터넷을 쓸 때 사용하고,

다른 한 장은 VMware에서 타겟 보드와 인터넷 연결을 하기 위해 사용하는 것이다.

왜냐하면 VMware에서는 외부 인터넷 접속을 위해 네트워크 설정을 NAT(Network Address Translation)로

하여 마치 별도의 공유기를 하나 더 설치한 것 같은 네트워크 환경이 된다. 따라서 네트워크 카드가 두 장이면

별도의 번거로운 작업이 필요 없다.


그러나 네트워크 카드가 한 장이라면 내부 설정을 약간 바꿔주어야 한다.


1. 타겟 보드와 PC 간 Cross-LAN 케이블로 직접 연결한다.

2. VMware 네트워크 설정을 “NAT”에서 “Bridged” 방식으로 변경

3. VMware와 타겟 보드의 IP 주소 설정을 서로 맞춰준다.


먼저, 네트워크 카드가 한 장일 경우, 타겟 보드와 인터넷 연결을 하기 위해서 외부 인터넷 접속은 포기해야 한다. 왜냐하면 타겟 보드와 PC 간에 먼저 Cross-LAN 케이블로 직접 연결해야 하기 때문이다.


Menu [VM] ➜ Settings ... ➜ Ethernet ➜ [Bridged] 선택


케이블의 연결과 “Bridged” 방식의 설정까지 모두 마쳤다면, 마지막으로 타겟 보드와 인터넷 연결을 하기 위해 IP 주소를 변경해주어야 한다.


[EDDY]# ifconfig eth0 192.168.0.XXX netmask 255.255.255.0

[EDDY]# ifconfig

[EDDY]# ping 192.168.0.YYY

PING 192.168.0.YYY (192.168.0.YYY) : 56 data bytes

65 bytes from 192.168.0.YYY: seq=0 ttl=64 time 11.0 ms

....



(4) TFTP 기반 BSP 이미지 탑재

Windows와 동일하다.



Comments