480 likes | 637 Views
제 5 장 Host 환경 설정. Target System 을 개발하기 위해 Host System 에 환경을 구축하자. 목 차. 5.1 Minicom 설정 5.2 BOOTP 설정 5.3 TFTP 설정 5.4 NFS 설정. 5.1 Minicom 설정. 타겟보드 콘솔을 위한 시리얼 통신을 셋팅한다. 5.1 Minicom 설정. TARGET 은 출력을 위한 별도의 터미널을 가지고 있지 않음 일반적으로 serial port/LAN 을 통한 터미널 emulator 이용
E N D
제5장 Host 환경 설정 Target System을 개발하기 위해 Host System에 환경을 구축하자.
목 차 5.1 Minicom 설정 5.2 BOOTP 설정 5.3 TFTP 설정 5.4 NFS 설정
5.1 Minicom 설정 타겟보드 콘솔을 위한 시리얼 통신을 셋팅한다.
5.1 Minicom 설정 • TARGET은 출력을 위한 별도의 터미널을 가지고 있지 않음 • 일반적으로 serial port/LAN 을 통한 터미널 emulator 이용 • Linux에서는 일반적으로 minicom 이용 • Windows 에서는 Hyper-Terminal 등을 이용 Minicom을 이용하여 serial 통신으로hello라는 파일 전송
5.1 Minicom 설정 • 설치 준비 Host와 Target을 minicom으로 연결하기 위해 아래와 같은 환경 필요 • Serial Cross Cable(9 pins) 1EA • Linux가 설치되어 있는 PC(Host) • XHYPER270-TKU 실습보드(Target) • Cross cable의 한쪽은 Host의 COM1에 연결하고 다른 한쪽은 Target의 COM1에 연결한다.
5.1 Minicom 설정 • Minicom 실행하기 • 만들어진 hello object 파일을 target에 download하기 위해 minicom이라는 emulator(가상터미널)를 이용 • Minicom은 RS232C 통신을 이용 • Minicom을 실행하기 전 통신 포트 설정을 해야 함.
5.1 Minicom 설정 • Minicom 실행하기 • Serial port setup으로 커서를 옮긴 후 enter를 입력
5.1 Minicom 설정 • Minicom 실행하기 • Linux에서는 COM1은 ttyS0, COM2는 ttyS1로 표시함. • A를 눌려서 Serial 케이블이 연결된 포트를 설정. • Host와 Target의 Baud rate는 115200, data bit은 8, stop bit 1, parity bit은 1로 설정 • Hardware Flow Control은 NO로 설정
5.1 Minicom 설정 • Minicom 실행하기 설정을 default로 저장하고 나옴.
5.1 Minicom 설정 • Minicom 실행하기 타겟보드에 전원을 인가하거나 리셋을 시킨다.
5.1 Minicom 설정 • Minicom 실행하기 tool chain 설치에서 만들었던 hello라는 object 파일을 host 에서 Target으로 download하려고 한다. CTRL과 A를 동시에 누른 후 Z키를 입력하면 아래와 같은 화면이 나옴.
5.1 Minicom 설정 • Minicom 실행하기 S를 입력 후 Zmodem을 선택하면 아래와 같은 화면이 나옴.
5.1 Minicom 설정 • Minicom 실행하기 • Tool chain 설치 시에 만들었던 hello 파일을 선택한 뒤에 enter를 치면 파일이 host로부터 target으로 download 수행
5.1 Minicom 설정 • Minicom 실행하기 • 파일 전송이 성공하면 위와 같은 화면 나옴.
5.1 Minicom 설정 • Minicom 실행하기 • ls 명령을 이용하여 hello 파일이 전송되었는지 확인 해보고 실행시켜보자.
5.2 bootp 설정 프로그램 다운로드를 위해 타겟보드에 ip를 할당한다.
5.2 BOOTP 설정 • Bootp는 tcp/ip상에서 자동 부팅을 위한 최초의 표준으로, 디스크 장치가 없는 클라이언트를 구동시키기 위한 프로토콜로 개발되었다. • 하위 프로토콜로 udp와 ip 프로토콜을 사용한다. • 개발보드에서는 tftp와 함께, Bootloader에서 Kernel과 파일시스템 Image를 Host PC에서 Target으로 다운로드하기 위해 사용한다. Bootp는 Target 보드가 tftp를 통한 파일 전송을 위해서 Target 보드의 IP와 Host에 대한 정보를 Host PC에서 가져오기 위해 사용한다. • 타겟보드에 커널이 올라가기 전에는 ip 셋팅이 되어 있지 않다. 이 경우 이더넷을 통한 데이터 전송을 할 수 없기 때문에 사용되는 방법이 부트로더상에서 bootp를 통한 ip 설정과 tftp를 통한 데이터 전송을 할 수 있다.
Bootp • Bootp protocol • Bootp Request : Target board가 host에게 IP를 요구함 • IP요청 packet을 생성하여 호스트에 전송함. • Bootp Reply : Host는 Target 보드의 IP 주소를 전달한다. • IP 요청 packet을 inetd가 수신한다. • inetd는 bootpd에게 IP요청 packet을 넘긴다. • IP 응답 packet을 bootpd는 bootptab을 참조하여 IP응답 packet을 전달한다. Bootp reply Bootp request Host Target
5.2 BOOTP 설정 • 5.2 BOOTP 설정 bootpd 가 설치었는지는 다음의 명령어로 확인할 수 있다.
5.2 BOOTP 설정 • bootp 설치 bootpd 가 설치되어 있지 않다면 bootp rpm설치로 데몬을 설치한다. * CD 안에 rpms 디렉토리 bootp rpm이 존재한다.
5.2 BOOTP 설정 • bootp rpm이 설치가 되면 /usr/sbin/bootpd 파일이 생성된다. • 생성된bootpd파일은 xinetd 프로그램에 의해 실행된다. • xinetd 프로그램에 의해 bootpd가 실행될 수 있도록 /etc/xinetd.d/bootp파일을 만들어야 한다.
5.2 BOOTP 설정 • /etc/xinetd.d/bootp 파일을 아래와 같이만든다.
5.2 BOOTP 설정 • bootptab 파일 설정 타겟보드의 bootp요청이 있을 때 Host PC에 설치 한 bootp서버(bootpd)는 /etc/bootptab에 정의된 client 정보를 기반으로 bootp reply packet을 만들어 응답한다. 그래서 bootp를 사용하기 위해서는 이 /etc/bootptab에 client의 MAC Address와 할당할 IP등의 정보가 입력되어 있어야 한다.
5.2 BOOTP 설정 • bootptab 파일은 bootpd(the Internet Bootstrap Protocol Server)를 위한 환경설정 데이터베이스 파일이다. host의 매개변수로, 대소문자를 구분하는 두 개의 문자로 된 tag symbols를 사용한다. hostname:tg=value:tg=value:tg=value: • hostname에는 bootp client(or a "dummy entry")의 실제 이름이 들어가고, tg는 두 개의 문자로 구성된 tag symbol이다. 각각의 symbol에 해당하는 값은 value에 들어간다. 더 많은 내용은 man bootptab 로 확인할 수 있다.
5.2 BOOTP 설정 • bootptab 생성 • xhyper270tku은 hostname. • ht (Hardware Type)는 10Mb Ethernet을 사용하므로 1 (=ehternet). • ha (Hardware Address)는 Bootp Request를 보낼 Target(Bootp Client)의 Mac Address. • ip는 Target에 할당할 IP Address. • sm (subnet mask)는 Host (Bootp Server)와 동일하게 적어주면 된다.
5.2 BOOTP 설정 • Bootloader에서 bootp 명령 실행하기 • Host 에서 xinetd 를 재시작. (/etc/rc.d/rc.sysinit/xinetd restart) • Target 에서는 bootp 명령 수행.
5.3 TFTP 통신 • TFTP? • TCP 를 사용하여 신뢰성있는 file 전송을 제공하는 ftp와 달리 UDP를 사용하여 file을 전송하는 protocol이다. • Data 의 전송 중에 오류가 날 확률이 극히 적은 근거리에서 빠르게 file을 전송받고자 할 경우에 사용한다. • Embedded system 개발중 개발한 kernel image나 ramdisk를 boot loader를 통해 target board로 전송하기 위해 많이 사용한다. • Linux용 TFTP 프로그램 • www.rpmfind.net 에서 tftp로 검색하면 해당 rpm을 받을 수 있다. • 또는 제공된 하이버스 CD 안에 /rpms에 있는 tftp rom을 설치하면 하면 된다.
5.3 TFTP 통신 • 설치 확인 • TFTP rpm을 설치하기 전에 host에 이미 설치가 되어있나 확인한다. • 설치가 되어 있으면 설치과정 생략. # rpm –qa | grep tftp • 설치 • Host에 설치가 되어있지 않으면 다음과 같이 설치한다. • # cd /PXA270/rpms # rpm –ivh tftp-server-0.17-9.i386.rpm
5.3 TFTP 통신 • TFTP Server 구동 • TFTP Server는 xinetd daemon에서 관리한다. • TFTP Server를 구동시키기 위해 /etc/xinet.d/tftp 파일을 다음과 같이 설정한다. service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot } 전송될 파일이 있는 디렉토리
5.3 TFTP 통신 • TFTP Server 구동 (cont’) • 파일을 전송할 때 사용하는 디렉토리를 /tftpboot 로 만든다. # mkdir /tftpboot • TFTP 설정 파일을 편집한 후에는 xinet daemon에 적용 시키기 위해 xinet daemon을 재시작 해주어야 한다. # /etc/init.d/xinetd restart • TFTP가 현재 제대로 동작하고 있는가 확인한다. # netstat –au | grep tftp • tftp가 포함된 행이 보인다면 제대로 동작하고 있는 것이다.
5.3 TFTP 통신 • TFTP 사용 예 • 전송할 파일을 /tftpboot에 복사한다. # cp /PXA270/images/* /tftpboot/ • Minicom을 실행시킨다. # minicom • Target board에 전원을 인가 한후 다음 메시지가 나오기 전에 임의이 key를 누르면 “hybus>” prompt 가 뜨는 것을 확인할 수 있다.
5.3 TFTP 통신 • TFTP 사용 예 (cont’) • tftp “전송할 파일명”“해당 영역” hybus>tftp zImage kernel hybus>flash kernel hybus>tftp rootfs.img root
/bin /bin /bin /lib /lib /lib /etc /sbin /sbin /root /root … … … /net /mm NFS Client /mm NFS Server /kernel /driver /driver /exam /arch /exam Host File System 5.4 NFS 설정 • NFS 구성하기 Ethernet을 사용한 NFS 통신
5.4 NFS 설정 • NFS 구성하기 192. 168. 1. * Host 192.168.1.100 Target 192.168.1.101
5.4 NFS 설정 • 설치 준비 NFS 설정을 위해 아래와 같은 환경이 필요하다. • Cross Lan Cable(ethenet cable) • Linux가 설치되어 있는 PC(Host) • XHYPER270-TKU 실습 보드(Target) • 중간에 허브를 사용할 경우에는 direct cable을 사용한다.
5.4 NFS 설정 • NFS– nfs용 공유 disk 만들기 • NFS(network file system)란 client가 server상에 있는 file혹은 file system에 대하여 여과 없는 접근 권한을 가지게 됨. • NFS 방식으로 hello_arm 이라는 파일을 host에서 target으로 download 해보자.
5.4 NFS 설정 • NFS– nfs용 공유 disk 만들기 (1) • Host와 target의 통신을 위해서 host의 방화벽 설정을 변경한다. #lokkit --> no firewall로 설정
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(2) • 일반적으로 lan card가 1개이므로 광대역 IP를 같이 쓰면서 target과 사설 ip로 통신하기 위해서 IP aliasing이 필요하다. • IP aliasing 설정 파일을 아래와 같이 copy한다
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(3) • 아래 그림과 같이 copy한 파일을 편집한다.
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(3) • 먼저 Host에서 nfs 마운트를 위한 디렉토리를 만든다.
5.4 NFS 설정 • NFS– nfs용 공유 disk 만들기 (4) • 만들어진 directory를 export시켜야 한다.
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(5) • 만들어진 디렉토리를 export 할 수 있도록 vi를 이용하여 /etc/exports 파일을 다음과 같이 편집한다. Root는 아니지만 root의 권한을 가진다는 의미 Read/ write
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(6) • nfs 데몬을 재 시작한다. • 또는 다음과 같은 명령을 사용해도 된다. % service nfs restart
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(7) • NFS로 mount시킬 target의 디렉토리를 만든다. • 타겟보드에서 호스트 pc의 nfs 서비스를 해주는 디렉토리로 마운트한다. xhyper270]# mkdir /mnt/nfs xhyper270]# mount –t nfs 192.168.100.1:/home/share /mnt/nfs
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(10) • 설치가 끝나면 Host의 /home/share와 Target의 /mnt/nfs는 같은 디렉토리의 의미를 가지게 됨. • Host의 /home/share 에 미리 만들었던 hello_arm을 복사하여 옮겨놓고 Target의 /mnt/nfs 에서 ls 명령어를 사용하면 폴더내에 생성된 것을 확인할 수 있음.
5.4 NFS 설정 • NFS – nfs용 공유 disk 만들기(12) • umount 명령을 이용하여 mount 해제 Xhyper270]#umount 192.168.1.100:/home/share