이번 시간에는 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 전송 테스트

리눅스 호스트에 있는 파일을 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 모드에서 커널이나 램디스크 이미지를 전송 받는데 사용됩니다.