기존의 리눅스 기반의 개발환경을 윈도우기반의 개발환경으로 바꾸기위한 여러가지 시도에 대해서 설명하고 있다.
이런 시도를 하는 이유는 리눅스에 대해 잘 모르는 개발자들을 위한 일종의 배려(?)라고 생각한다.
개발 PC 에서 제공되어야할 서비스는 NFS, BOOTP, DHCP, TFTP 이다.
여기서는 Windows 2000 Server 를 기준으로 설명할 것이다.
NFS 서비스
구글링 검색결과, MS 에서 UNIX 에서 제공되고 있는 서비스들(NFS, TELNET)을 윈도에서도 서비스할 수 있도록 만든 패키지 프로그램을 찾을 수 있었다. 파일 이름은 'SFU35SEL_EN.exe' 이다. 압축을 푼 뒤에 SfuSetup.msi 을 실행시킨다. 설치 도중에 인증방식에 대해서 묻는 데, 여기서는 로컬 영역에 저장된 패스워드, group 파일을 이용하여 인증하는 두번째 방법을 선택한다. 이 때, 중요한 것은 접속하려고 하는 리눅스 시스템의 /etc/패스워드 와 /etc/group 파일이 필요하다는 것이다. 이 파일들을 적당한 위치에 복사하고, 위치를 지정한다. 그리고 설치를 마무리 한다.
이 후 설정에 대한 자세한 내용은 pds/SFU_for_eslim.pdf 파일을 참조하기 바란다.
앞에서 /etc/패스워드 과 etc/group 은 리눅스 시스템과 윈도우 시스템의 계정을 일치시키기 위함이었다. 실제로 설정을 해보면 알겠지만, root 와 administrator 계정을 맞추기 위함이다. 앞에서 언급한 pdf 파일에서 자세히 설명되어 있으므로 여기서 자세히 언급하지 않는 것에 대해 이해해주기 바란다.
BOOTP 와 DHCP 서비스
Window 2000 Server 의 경우, DHCP 서버 프로그램이 제공되고 있지만, 우리가 원하는 기능이 빠져있었다.(BOOTP)
역시 구글링을 통해 어렵사리 찾을 수 있었다. 파일이름은 bootp_desktop_free.exe 이다. 이 프로그램의 경우는 여러가지 옵션을 줄 수 있기 때문에 유용하다. 하지만 너무 많은 옵션을 주게 되면, 오버플로우가 나서 제대로 동작을 안할 수가 있다. 먼저 내가 추가한 옵션을 보면 다음과 같다.
Hardware Address | 00-02-14-00-10-B0 | |
Template | no template | |
DHCP Address Lease Time | Infinite | |
Domain Name servers | 211.111.136.2 | |
Gateways | 10.0.2.1 | |
Home directory | c:\tar_td9000 | |
IP address | 10.0.2.152 | |
Root path | target_td9000 | |
Subnet mask | 255.255.255.0 |
위에서 가장 중요한 옵션은 'Root path' 이다. 현재 STB 에서 마운트 할 디렉토리는 윈도우에서 c:\target_td9000 에 있다. 이 파일들은 리눅스에서 복사해온 것들이다. 이제 개발 PC 와 STB 을 크로스 케이블로 연결하고, nfs boot 에서 제대로 IP 를 받아오는지 확인한다.
TFTP 서비스
이것 역시 검색한 결과, 여러가지 프로그램이 있었지만 그중에 http://tftpd32.jounin.net 에서 받은 프로그램이 가장 괜찮았다. 이 프로그램의 경우, DHCP 서비스 기능도 있었지만, 세부 옵션 설정이 불가능한 관계로 사용하지 않았다. 사용방법은 'Currect Directory' 에 공유할 디렉토리를 지정하면 된다.
해결되지 않는 문제점
앞에서 리눅스 시스템으로 부터, 마운트할 / 파티션을 복사하던 도중, 경고가 발생했다. 그것은 바로 /dev/ 파일을 복사하는 것이었다. 윈도우에서는 디바이스 파일형식이라는 것 자체가 존재하지 않기 때문에, 그냥 일반파일로 인식하고 복사되어 버렸다. 또한 심볼릭 링크의 경우, 파일의 크기가 0 K 인 체로 복사되었다.
나중에 nfs boot 시에 / 파티션인 target_td9000 을 마운트 해야 하는 데, 이때 /dev 밑에 디바이스 파일이 없기 때문에 부팅 도중에 패닉이 발생했다. 윈도우 파일시스템자체가 디바이스 파일을 인식하지 못하기 때문에, 발생하는 문제이다.