강좌 & 팁
이번 시간에는 coLinux에 tftp 서버를 설치해 보겠습니다. Fedora 리눅스를 설치했기 때문에 yum을 이용하면 쉽게 설치할 수 있습니다. tftp에 대해 궁금하시면 "EZ-보드 통합 메뉴얼::TFTP 환경구측" 글을 참고하세요.
tftp 설치 및 환경 설정
yum을 이용하여 설치하겠습니다. 우선 root 계정으로 로그인합니다. 인터넷과 연결되니까 이렇게 좋네요. yum이나 wget을 사용할 수 있기 때문이죠. ^^
]# yum install tftp Loaded plugins: refresh-packagekit updates-newkey | 2.3 kB 00:00 updates-newkey/primary_db | 3.6 MB 00:05 updates | 2.6 kB 00:00 fedora | 2.4 kB 00:00 Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running transaction check ---> Package tftp.i386 0:0.48-6.fc9 set to be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: tftp i386 0.48-6.fc9 updates-newkey 29 k Transaction Summary ============================================================================================= Install 1 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 29 k Is this ok [y/N]: y Downloading Packages: tftp-0.48-6.fc9.i386.rpm | 29 kB 00:00 ===================================== Entering rpm code ===================================== Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : tftp 1/1 ===================================== Leaving rpm code ====================================== Installed: tftp.i386 0:0.48-6.fc9 Complete! ]# yum install tftp-server Loaded plugins: refresh-packagekit Setting up Install Process Parsing package install arguments Resolving Dependencies --> Running transaction check ---> Package tftp-server.i386 0:0.48-6.fc9 set to be updated --> Processing Dependency: xinetd for package: tftp-server --> Running transaction check ---> Package xinetd.i386 2:2.3.14-20.fc9 set to be updated --> Finished Dependency Resolution Dependencies Resolved ============================================================================================= Package Arch Version Repository Size ============================================================================================= Installing: tftp-server i386 0.48-6.fc9 updates-newkey 35 k Installing for dependencies: xinetd i386 2:2.3.14-20.fc9 updates-newkey 125 k Transaction Summary ============================================================================================= Install 2 Package(s) Update 0 Package(s) Remove 0 Package(s) Total download size: 160 k Is this ok [y/N]: y Downloading Packages: (1/2): tftp-server-0.48-6.fc9.i386.rpm | 35 kB 00:00 (2/2): xinetd-2.3.14-20.fc9.i386.rpm | 125 kB 00:01 --------------------------------------------------------------------------------------------- Total 44 kB/s | 160 kB 00:03 ===================================== Entering rpm code ===================================== Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : xinetd 1/2 Installing : tftp-server 2/2 Unable to send message to PackageKit ===================================== Leaving rpm code ====================================== Installed: tftp-server.i386 0:0.48-6.fc9 Dependency Installed: xinetd.i386 2:2.3.14-20.fc9 Complete! ]#
죽입니다. ^^ yum install을 사용하지 못했다면 파일을 따로 받아 관련 파일까지 찾아 다니며 설치해야 하는데, 이렇게 간단하게 처리되네요.
이제 /etc/xinetd.d/tftp 파일을 수정하여 환경을 설정합니다.
]# vi /etc/xinetd.d/tftp
[ 수정 전 ]
# default: off # description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot // 이 위치 보다는 /tftpboot가 편합니다. disable = yes // no 로 변경합니다. per_source = 11 cps = 100 2 flags = IPv4 }
[ 수정 후 ]
# default: off # description: The tftp server serves files using the trivial file transfer # protocol. The tftp protocol is often used to boot diskless # workstations, download configuration files to network-aware printers, # and to start the installation process for some operating systems. service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 }
tftp에서 파일을 제공하는 디렉토리를 /tftpboot로 지정했기 때문에 이 디렉토리를 만들어 주셔야 합니다.
]# mkdir /tftpboot
tftp 서버 실행
tftp 서버를 실행해 보겠습니다.
]# /etc/init.d/xinetd restart xinetd 를 정지 중: [실패] xinetd (을)를 시작 중: [ OK ] ]# 데몬이 정확히 구동 되고 있는지 확인하려면 netstat를 실행한 결과값으로 알 수 있습니다. netstat를 그냥 실행하면 많은 양의 결과 값이 출력되므로 grep로 tftp 정보만 출력합니다. ]# netstat -al | grep tftp udp 0 0 *:tftp *:* ]#
부팅되면 자동으로 실행하도록 설정
사용자를 등록하고 암호까지 지정합니다.
]# ntsysv
화면이 아래와 같이 바뀔 것입니다. tftp에 체크가 없다면 제크하시고 확인해 주십시오.
리눅스 호스트에 있는 파일을 tftp를 이용하여 타겟 보드로 전송해 보겠습니다. tftpboot 디렉토리에 임시 파일을 복사해 놓고 EZ-보드로 복사해 보겠습니다.
]# cd /tftpboot ]# vi test.c 임시로 test.c 파일을 작성합니다. 여기서부터는 EZ-보드에서 작업하는 것입니다. 이제 타겟보드에서 tftp를 이용하여 파일을 전송 받으면 됩니다. ]$ tftp 192.168.10.51 -r test.c -g ]$ ls -al drwxr-xr-x 2 1007 1001 1024 Jan 1 00:03 . drwxr-xr-x 18 root root 1024 May 15 2008 .. -rwxr-xr-x 1 1007 1001 938 Oct 19 2007 mkflashroot -rwxr-xr-x 1 1007 1001 446 Apr 14 2008 nfsmnt -rw-r--r-- 1 root root 21 Jan 1 00:03 test.c ]$ cat test.c #include<-- 임시로 이것만 입력했었습니다. ^^ ]$
혹시 tftp에 -r -g 옵션을 이용했는데, 전송이 안 된다면 -c 옵션을 사용해 보세요. 이렇게 말이죠.
]$ tftp 192.168.10.51 -c test.c
tftp는 이렇게 호스트에서 타겟보드로 파일을 전송하는데 매우 유용하게 사용됩니다. 그러나 보통은 nfs를 이용하는 것이 더 편리하기 때문에 대부분의 작업은 호스트의 nfs 서버를 사용하게됩니다. 대신에 tftp는 앞서 말씀드린대로 크기가 작기 때문에 BOOTP에 설치할 수 있어서 타겟보드. 즉, EZ보드의 EZBOOT 모드에서 커널이나 램디스크 이미지를 전송 받는데 사용됩니다.