TFTP 환경구축 1. TFTP 환경구축 1.1. TFTP 구축필요성 타겟보드에리눅스를다운로드하는방식에는시리얼을이용하는방식과랜을이용하는방식이있다. 다운받아야할내용이매우큰램디스크이미지를시리얼로다운받게되면개발속도가현저히떨어진다. 시리얼은전송속도가매우늦기때문이다. 랜을이용하여파일을타겟보드에다운로드하는방법으로이지부트는 TFTP를이용하도록하고있다. TFTP를사용하면매우빠른속도로다운받기때문에개발속도가향상될수있다. 1.2. TFTP 란 TFTP(Trivial File Transfer Protocol) 란이더넷을이용하여파일을다운받는프로토콜로직이다. UDP 방식을사용한다. TFTP은 ftp와같은파일전송프로토콜이지만, 매우간단한프로토콜로구성되므로부트로더와같은작은크기의프로그램에서수행할수가있다. 보통 BOOTP와연동하여네트워크부트를할때사용하게된다. TFTP는다음의두가지방법에의해사용될수있다. 일반 ftp프로토콜은 tcp프로토콜 (3웨이핸드쉐이킹방식, 자세한사항은네트웍관련서적을참고하기바람.) 을사용하지만, tftp는 udp프로토콜 ( 단방향핸드쉐이킹방식, 자세한사항은네트웍관련서적을참고하기바람.) 을사용하여전송한다. 동작되는방식은클라이언트가서버에접속하여파일을요청하면해당파일을서버는전송하고이를클라이언트는응답하는방식을취한다. 매번파일의블록을전송시블록의길이를전송하는데이블록의크기는고정되어있어이크기보다작은블록이오면이를마지막블록으로인식한다. 단점은하나의블록전송이라도실패하면전송을중지하므로패켓손실이많은환경에서는사용이곤란하다. 거의모든유닉스의구현에있어서 tftp 서버를포함하고, 아마스스로설치할일은거의없을것이다.
TFTP 환경구축 1.3. 호스트 TFTP 환경설정 환경파일편집 HOST에서 tftp 설정하기 /etc/xinetd.d/tftp 파일을열어서수정한다. [ 수정전 ] [ 수정후 ] 위와같이 disable = no 로설정을해주면 tftp가구동이된다. disable이구동하지않겠다는뜻이므로이것이 yes이면 tftp가구동되지않는다. 따라서반대의의미인 no로바꾸어주면된다. 다른것은손댈필요가없을것이다. 7장호스트네트워크환경설정
TFTP 환경구축 xinet 데몬재시동하기. 설정작업이끝났으면 xinet 데몬을재가동해주어야원하는서비스를시작할수있다. 서비스는 bootp 에서 xinetd를이용하는방법을사용하였다면 tftp 와함께동작할것이다. xinetd 데몬을재구동한다. #./xinetd stop #./xinetd start 데몬이정확히구동되고있는지확인 bootp 에서 xinetd를이용하는방법을사용하였다면 bootpd 데몬이구동된것을볼수있을것이다. 또한 tftpd 데몬이구동된것을다음명령으로확인할수있다. [ 참고 ] 예전의래드햇이나데비안의경우는 inetd를사용한다. (inetd에관한설명은 kldp나기타리눅스웹사이트를참고하기바란다.) 7장호스트네트워크환경설정
TFTP 환경구축 tftp 테스트하기 호스트에 tftpboot 디렉토리를만든다. # make /tftpboot 만든 tftpboot 디렉토리에이지부트, 커널이미지, 램디스크이미지를제공한 CD에서복사한다. # cp a /mnt/cdrom/sw/image/ezboot /tftpboot/ # cp a /mnt/cdrom/sw/image/ramdisk.gz /tftpboot/ # cp a /mnt/cdrom/sw/image/zimage /tftpboot/ 이후작업은 [14장 ezboot 매뉴얼 ] 을참고하여이지부트, 커널이미지, 램디스크이미지를 tftp 를이용하여다운로드하면된다. tftp standalone 으로설정하기 위와같이 tftp 서버구축을실패하였을경우다음의방법을권장한다. /etc/xinetd.d/tftp 파일을열어서수정에서 disable = yes 로설정을하여 tftp를구동하지않게한다. xinetd 데몬을재구동한다. #./xinetd stop #./xinetd start 다음명령을수행하여 tftp standalone 으로설정한다. # in.tftpd -l -s /tftpboot
NFS 환경설정및시험 2. NFS 파일시스템환경구축및시험 2.1. NFS 구축필요성 타겟보드에서리눅스어플리케이션이나리눅스디바이스드라이버를개발할때부트로더만을이용한다면개발이매우힘들어진다. 어플리케이션을개발할때는개발호스트에서크로스컴파일환경을구축하고, 컴파일된실행파일을매번램디스크이미지를만들어부트로더로다운로드하여야하기때문이다. 이런작업을효과적으로수행하기위해서는개발호스트에서작업한것을 NFS 시스템을이용하여타겟보드의리눅스상에서마운트시켜사용하면된다. NFS 파일시스템을사용한다면개발호스트상의파일이타겟보드의리눅스파일시스템위에서접근이가능하고실행이가능하다, 또한램디스크상에서올리기에너무큰파일도 NFS 상에서는호스트의기억용량에의존하기때문에쉽게처리할수있다. 2.2. NFS 란 NFS, 즉 Network File System은 RPC를이용하여리모트호스트상의파일을유저가마치로컬파일에엑세스하듯이엑세스할수있게한다. 이는리모트호스트파일시스템을사용하는클라이언트측의커널기능과서버측 ( 데이터를제공하는 ) 의 NFS 서버의혼합으로가능한것이다. NFS의파일엑세스는다양한서버와호스트아키텍쳐에서동작한다. NFS 는다음과같은이점을제공한다. 개발호스트에서개발된내용을타겟보드에서바로사용이가능하다. 여러개발자가하나의 PC에개발된내용을동시에공유가가능하다. 개발된어플리케이션의크기에관계없이수행이가능하다. NFS 사용시주의점 특수파일은 NFS에연결된디렉토리에만들수없다. ( 예 : 장치파일 ) 읽고쓰는속도가빠른파일로는사용이곤란하다. ( 멀티미디어파일 )
NFS 환경설정및시험 리눅스 NFS는많은면에서 Rick Sladkey가노력한결과라할수있다. 그는 NFS 커널소스와 NFS 서버의많은부분을썼는데, 후자는원래 Mark Shand가쓴 unfsd user-space NFS 서버와 Donald Becker가쓴 hnfs Harris NFS서버에서유래한것이다. 좀더자세한 NFS 에대하여알고싶다면다음홈페이지를방문하기바란다. http://kldp.org/translations/html/nag/11.html
NFS 환경설정및시험 2.3. 호스트 NFS 환경설정 환경파일편집 NFS로공유할디렉토리명을 /nfs라고한다면디렉토리를만든다. # mkdir nfs # chmod 777 nfs # chmod nobody nfs # chgrp nobody nfs NFS 환경파일을수정하여야한다. 파일명은 /etc/exports 이다. # vi /etc/exports 를수행하여다음과같이설정한다. /nfs localhost(rw,insecure) /nfs 192.168.10.0/24(rw,insecure) 위내용의의미는다음과같다. /nfs는 NFS로공유할디렉토리이며, 이 /nfs 디렉토리는 192.168.10.0/24 라는호스트가암호인증없이읽고쓸수있다. [ 192.168.10 대역대는모두허용함 ] 옵션에서 (rw,insecure) 의의미는파일의읽기쓰기에대한것으로 rw : r 은읽기를허용, w 는쓰기를허용을의미. insecure : 암호인증을하지않겠다는의미.
NFS 환경설정및시험 [ 참고 ] /nfs 192.168.10.0/24(rw,insecure) 이면 192.168.10 대역대는모두공유하게된다. 만약자신의시스템의정보가다른사람에게노출시키지않도록하거나, 특정호스트에게제한을두고자한다면다음과같이하면된다. /nfs /nfs /nfs 192.168.10.200(rw,insecure) 192.168.10.155(rw,insecure) 192.168.10.125(rw,insecure) 위와같이사용하게되면공개대상호스트는 192.168.10.200, 192.168.10.155, 192.168.10.125 에대해서만암호인증없이읽기쓰기를허용하게된다. exports 옵션 옵 션 설 명 ro 읽기만가능하도록마운트 rw 읽고쓰기가가능하도록마운트 no_root_squash 루트의자격으로파일시스템에접근할수있도록마운트 root_squash 루트의자격으로파일시스템에접근하면 anonymous uid/gid로바꾸어서허가 디렉토리를접근하지못하게한다. noaccess 공유된디렉토리의특정하위디렉토리만을접근하지못하도록 제한하고싶을때유용하다. insecure 암호인증을하지않겠다. DNS에서사용하고자하는 IP 주소를등록하지않았다면 NFS 서버나 RPC portmapper로부터찾을수없다는메시지를얻게된다. 이런경우에도위와같이하면해결할수있을것이다.
NFS 환경설정및시험 NFS 데몬수행 환경설정이끝났다면다음명령을수행하여 NFS 데몬환경을적용시켜야한다. # /etc/rc.d/init.d/nfs start 이미 NFS 데몬을수행중이었다면다음과같이한다. # /etc/rc.d/init.d/nfs stop # /etc/rc.d/init.d/nfs start nfs 동작시험 정상적으로호스트에 nfs가동작하는가를확인하는방법은호스트상에서직접마운트시험을하는방법이다. 먼저 /tmp/nfs란디렉토리를만든후 # mkdir /tmp/nfs # mount -n localhost:/nfs /tmp/nfs 를수행한다. 수행시아무런메시지가나오지않는것이정상이지만간혹다음과같은메시지를표출한다. nfs warning: mount version older than kernel 이것은에러가아니다. 마운트된디렉토리에임의의파일을쓴후 /nfs에같은파일이있으면정상이다. 7장호스트네트워크환경설정
NFS 환경설정및시험 2.4. NFS 문제시점검사항 NFS 를시험할때문제가발생하면다음내용을점검해야한다. 커널지원옵션 NFS는커널에포함되어야하는데 NFS 지원이커널에포함되어있는지를확인하기위해서는 /proc/filesystems에 nfs 항목이있는가를확인하여야한다. 만약포함되어있지않다면커널옵션의 NFS 지원을활성화시킨후재컴파일하여설치하여야한다. NFS 서버데몬확인 NFS 서비스를정상적으로수해하기위한스크립트는 /etc/rc.d/init.d/nfs 이다 portmap 이서비스는 RPC 서비스를 TCP/UDP 포트에연결하는역할을한다. RPC를이용한프로그램이시작되면그프로그램은자신이제공하는서비스와자신이사용하는포트를 portmap 에등록하게된다. 그리고, 클라이언트는 portmap에문의해원하는서버에접근할수있는방법을알아내게된다. 리눅스에서돌아가고있는 portmapper를확인하려면다음과같이하면된다.
NFS 환경설정및시험 rpc.mountd 외부에서마운트요청이오면응답해주는역할을한다. NFS 클라이언트가서버의파일시스템을이용하기위해서는먼저서버가자신의파일시스템을 NFS를이용해다른호스트가공유할수있도록설정해주기위해서리눅스에서는 /etc/exports 라는파일을이용한다. NFS 클라이언트가공유된 NFS 서버의파일시스템을이용하기위해서는반드시서버의파일시스템을마운트해야한다. NFS 클라이언트가마운트를요청해오면, rpc.mountd (mountd) 데몬이 /etc/exports 파일의설정에따라마운트요청을처리한다. rpc.nfsd 서버파일을클라이언트에제공하는역할을한다. NFS 클라이언트마운트요청시 rpc.mountd가클라이언트의마운트요청을받아들이면, NFS 클라이언트는마운트된파일시스템에대해다양한작업을할수있다. rpc.nfsd 데몬은클라이언트가작업을수행하면서서버쪽파일시스템에무언가를요구하게되면이를맡아서처리하게된다. 리눅스에서돌아가고있는 rpc 데몬들을확인하려면다음과같이하면된다. rpc.nfsd의적절한설정수는 NFS의성능에영향을받게된다. 이론적으로수천개의 rpc.nfsd 를실행하는것이가능하지만임베디드의시스템및성능을고려하여일반적으로 4개미만의 rpc.nfsd를실행시키는것이적절하다. rpc.lockd 파일잠금을통해여러명이동시에한파일을수정하는것을막을때사용하지만리눅스에서는실행되지않는다. 하지만 ntsysv 명령으로이데몬을수행하게하기바란다. 데몬실행확인위의데몬들이제대로실행되었는지를확인하기위해서는 rpcinfo p 명령을통해서 rpc.mountd와 rcp.nfsd가 portmap에제대로등록되었는지를확인해보면된다. 등록된이름은실제데몬이름과약간다를수있다. rpc.mountd 가 mountd로 rpc.nfsd가 nfsd로등록될수도있다. 7장호스트네트워크환경설정
NFS 환경설정및시험 그외 그외적인요인으로방화벽문제나네트웍문제일수있으나이문서에는이에대한내용을적지않겠다. 만약, 방화벽을완전히제거하기를원한다면다음명령을사용하면된다. # /sbin/ipchains -F
NFS 환경설정및시험 2.5. 타겟보드에서 NFS 서버접속 타겟보드부팅후정상적인로그인절차를수행한후에 nfs 를사용하려면 nfs 에연결될마운트디렉토리를만들어야한다. $ mkdir /mnt/nfs 다음은 NFS 서버와연결하는데 NFS 서버 IP가 192.168.10.1 이라면 $ mount -t nfs o nolock 192.168.10.1:/nfs /mnt/nfs 해주면된다. 이후호스트서버의 /nfs 내용이타겟보드의 /mnt/nfs의디렉토리에연동되어보일것이다. [ 참고 ] bootp, tftp, nfs 에이상이있을시관련 RPM을받아다시설치하기바란다. 관련 RPM은다음에서받을수있다. http://www.falinux.com 사이트, http://www.rpmfind.net 사이트또는제공한 CD의 /util/ 해당 RPM 디렉토리를참조하기바란다.
삼바구축 3. 삼바구축하기 3.1. 서버설치 설치베포판 Fedora Core 2 또는 Fedora Core 3 설치시설치유형에서사용자설정시스템 (custom ) 을선택하고, 패키지그룹선택에서맨마지막으로가면모두설치가있다. 이를선택하여모두설치를한다. 파티션설정스왑파티션을램용량의 2~3배정도로잡고, 나머지공간을모두 / 에할당한다. IP 설정네트웍설정에서 DHCP 기능을이용하지않으므로 " DHCP 사용환경으로설정 " 부분을해제하고직접각항목을적절히넣는다. Falinux에서설정한 IP 설정은다음과같다. DHCP 사용환경으로설정 부분을해제하고, 부팅시활성화 를활성화시키고, 해당 IP를적는다. IP 주소 : 192.168.10.20 넷마스크 : 255.255.255.0 네트웍 : 브로드캐스트 : 호스트명 : jdt 게이트웨이 : 192.168.10.1 1차-DNS: 210.xxx.xxx.xxx 위의설정은여러분의시스템에맞게설정하면된다. 여기서호스트명은자신 의컴퓨터이름이된다. 이설정은모든설치가끝나고리눅스부팅후다시설정할수있다. 방화벽설정방화벽을사용하지않음을선택한다. 이것은 NFS도관련이있다. 따라서반드시방화벽을사용하지않음을선택하기바란다. 7장호스트네트워크환경설정
삼바구축 3.2. 삼바설정 삼바란원격자원을액세스하는데필요한 Windows 클라이언트의네이티브지원을사용하여비 Windows 서버에있는파일과프린터를액세스할수있도록한프로그램이다. SWAT 설정 SWAT(Samba Web Administration Tool) 은삼바를쉽게설정하기위한툴이다. SWAT 는작은웹서버이고, SWAT 가실행되는시스템에있는 smb.conf 파일에액세스를제공하는 inetd에서실행되도록디자인된 CGI 스크립팅어플리케이션이다. 콘솔에서 root 권한으로 setup 프로그램을실행하여시스템서비스에들어가일부선택되지않은서비스를선택하여구동한다. 다음의서비스가선택되었는지를확인하고, 선택되지않았으면반드시선택을하여야한다. nfs, nfslock, smb, swat, telnet, tftp # ntsysv
삼바구축 서비스를모두선택하였다면 ok 를선택하고빠져나온다. /etc/xinetd.d/swat 파일을아래와같이바꾼다. # vi /etc/xinetd.d/swat [ 수정전 ] [ 수정후 ] 위와같이수정하였다면 xinet 데몬을재실행을한다.
삼바구축 3.3. 윈도우에서설정 리눅스서버에 SWAT 를띄우기위한환경설정을모두마쳤다면원래의목적인윈도즈에서인터넷익스플로어를이용하여 SWAT 를실행시킨다. 인터넷익스플로어를실행시키고주소창에다음을입력한다. http:// [ 해당IP]:901 예 ) http://192.168.10.20:901 여기서사용하는모든예제는위의 IP 설정을바탕으로설명하겠다. 각자의환경에맞게수정하여사용하면된다. [ SWAT 이 901 포트를이용하여통신한다. ] 네트워크암호입력이라는창이뜨면사용자이름과암호를입력한다. 사용자이름 (U): 암호 (P): root root 암호를입력
삼바구축 정상적으로로그인이되면다음과같은 SWAT 화면이뜬다.
삼바구축 GLOBALS 설정하기 위의버튼을클릭하여화면이나타나면다음의그림과같이설정한다. workgroup에윈도즈네트웍에서사용할작업그룹이름을입력한다. Server string에입력하는내용은네트웍환경에서설명필드에나타난다.
삼바구축 모든설정을하였으면상단의 [Commit Changes] 버튼을눌러저장하야야한다. SHARES 설정하기 위의버튼을클릭하여화면이나타나면다음의그림과같이설정한다. 위의화면에서 [Create Share] 에 root 라고입력하고, 버튼을클릭하면아래와같은화면이다시나타난다. 아래의화면에서 Advanced View 버튼을클릭하면새로운화면이나타난다. Advanced View 버튼을클릭하여나타난화면에서다음의그림에나타난부분과같이수정을한다. 수정을모두하였다면상단의 Commit Changes를클릭하여수정된내용이저장되도록한다. 7장호스트네트워크환경설정
삼바구축 Basic View 를누르면다음과같은화면이다시나타난다.
삼바구축 STATUS 위의버튼을클릭하여화면이나타나면다음의그림과같이설정한다. 모든설정을하였다면삼바관련데몬을재실행시켜야한다. 위의화면에서 Restart smbd, Restart nmbd 버튼을차례로클릭하여데몬을재실행시킨다. 여기서데몬을재실행시켰을때다음과같이나타나지않으면데몬이제대로실행되지않은것이다. smbd: running nmbd: running 윈도즈에서삼바연결을위한레지스트를등록해야한다. http://www.postech.ac.kr/hemos/service/samba/ 사이트나제공한 CD( util/samba_reg/ 디렉토리 ) 에서복사하여실행시키면자동으로레지스트에등록이된다. 7장호스트네트워크환경설정
삼바구축 삼바가정상적으로실행되고윈도즈에삼바연결을위한레지스트등록을하였다면윈도우시스템을재부팅한후윈도우의탐색기에서해당서버를컴퓨터찾기를통해찾아본다. 찾을컴퓨터이름은 jdt 이다. [ 서버의호스트이름 ] 3.4. 문제해결 이문서에서는레드헷리눅스 7.1에대한삼바설정이다. 따라서다른배포판에대해서는아무런도움을줄수가없다. 또한레드헷리눅스 7.1의배포판을사용하였더라도위와같이설정을하였는데도문제가발생한다면달리도움을줄방법이없다. 여러분자신이관련서적이나인터넷을뒤져서해결하는방법뿐이다. 단, 지금적고있는내용은 falinux에서삼바를설치하면서발생한문제를해결한방법만을소개하겠다. 윈도즈에서 PING 테스트를한다. 삼바데몬이정상적으로수행하는지를검사한다.
삼바구축 smbd 데몬을검사한다. Smbclient 툴을사용하여검사한다. Smbd 데몬이실행되고있지않거나몇가지이유로 TCP 포트 139로바인딩할수없는경우에다음과같은메시지가나타난다. # smbclient L 192.168.10.20 N added interface ip=192.168.10.20 bcast=192.168.10.255 nmask=255.255.255.0 error connecting to 192.168.10.20:139 (Connection refused) Connection to 192.168.10.20 failed Falinux에서발생한문제는 /etc/hosts 에호스트명이제대로설정이되어있지않았다. 인터넷호스트이름을 IP 주소로풀이할때일반적으로 /etc/hosts 파일을사용하거나도메인이름서버를쿼리한다. 따라서 /etc/hosts 의내용에서버와관련한호스트명을가지고있는지를검사한다. # cd /etc/ # vi h# vi hosts 120.0.0.1 jdt localhost 또는 # vi hosts 192.168.10.20 jdt 위와같은호스트명이없다면만들어주어야한다.