먼저 필요한 파일들을 구한다.
tzdata : 시간대 설정 정보파일
tzcode : 시간대 정보를 컴파일하기 위한 소스
zic    : 시간대 정보를 컴파일할 파일(/usr/arm-linux/sbin/zic 에 있다)
tzdata : ftp://elsie.nci.nih.gov/pub/tzdata*.tar.gz

참조 http://www-ftp.lip6.fr/pub/OpenBSD/src/lib/libc/time/tz-link.htm

zic : ftp://elsie.nci.nih.gov/pub/tzcode*.tar.gz
      
      를 다운받아 컴파일하던지 아니면 glibc 를 크로스 컴파일하면 /prefix/sbin/zic 에 생성된다.

참조 링크

설치법
1. zic 를 타겟 보드의 적당한 디렉토리에 설치한다(/bin/ /sbin/)

2. 적당한 디렉토리에 tzdata*.tar.gz 의 압축을 푼다. (tzdata 라는 디렉토리를 만들어 그곳에 푼다.)
   디렉토리는 아래와 같이 나온다.

root@boggle70-desktop:timezone# ls -l
합계 1648
-r--r--r-- 1 8800 root  15334 2010-10-13 01:36 Makefile
-r--r--r-- 1 8800 root   3826 2010-10-13 01:36 README
-r--r--r-- 1 8800 root  24073 2010-10-13 01:36 Theory
-r--r--r-- 1 8800 root  39947 2010-11-01 22:18 africa
-r--r--r-- 1 8800 root  15694 2010-11-01 22:18 antarctica
-r--r--r-- 1 8800 root   4479 2010-10-13 01:36 asctime.c
-r--r--r-- 1 8800 root 107888 2010-11-01 22:18 asia
-r--r--r-- 1 8800 root  62521 2010-11-01 22:18 australasia
-r--r--r-- 1 8800 root   4102 2010-11-01 22:18 backward
-r--r--r-- 1 8800 root   3417 2010-10-13 01:36 checktab.awk
-r--r--r-- 1 8800 root   5161 2010-10-13 01:36 date.1
-rw-r--r-- 1 8800 root   6151 2010-10-25 21:19 date.1.txt
-r--r--r-- 1 8800 root  22848 2010-10-13 01:36 date.c
-r--r--r-- 1 8800 root   1707 2010-10-13 01:36 difftime.c
-r--r--r-- 1 8800 root   3020 2010-11-01 22:18 etcetera
-r--r--r-- 1 8800 root 116278 2010-11-01 22:18 europe
-r--r--r-- 1 8800 root    411 2010-11-01 22:18 factory
-r--r--r-- 1 8800 root   1374 2010-10-13 01:36 ialloc.c
-r--r--r-- 1 8800 root   4180 2010-11-01 22:18 iso3166.tab
-r--r--r-- 1 8800 root  55948 2010-10-13 01:36 itca.jpg
-r--r--r-- 1 8800 root   2857 2010-11-01 22:18 leapseconds
-r--r--r-- 1 8800 root  49985 2010-10-13 01:36 localtime.c
-r--r--r-- 1 8800 root   5985 2010-10-13 01:36 newctime.3
-rw-r--r-- 1 8800 root   6075 2010-10-25 21:19 newctime.3.txt
-r--r--r-- 1 8800 root   6827 2010-10-13 01:36 newstrftime.3
-rw-r--r-- 1 8800 root   4992 2010-10-25 21:19 newstrftime.3.txt
-r--r--r-- 1 8800 root   5434 2010-10-13 01:36 newtzset.3
-rw-r--r-- 1 8800 root   6898 2010-10-25 21:19 newtzset.3.txt
-r--r--r-- 1 8800 root 119672 2010-11-01 22:18 northamerica
-r--r--r-- 1 8800 root   1211 2010-11-01 22:18 pacificnew
-r--r--r-- 1 8800 root   7223 2010-10-13 01:36 private.h
-r--r--r-- 1 8800 root   1206 2010-10-13 01:36 scheck.c
-r--r--r-- 1 8800 root  19324 2010-11-01 22:18 solar87
-r--r--r-- 1 8800 root  19342 2010-11-01 22:18 solar88
-r--r--r-- 1 8800 root  19618 2010-11-01 22:18 solar89
-r--r--r-- 1 8800 root  67509 2010-11-01 22:18 southamerica
-r--r--r-- 1 8800 root  18657 2010-10-13 01:36 strftime.c
-r--r--r-- 1 8800 root   1564 2010-11-01 22:18 systemv
-r--r--r-- 1 8800 root   3290 2010-10-13 01:36 time2posix.3
-rw-r--r-- 1 8800 root   3402 2010-10-25 21:19 time2posix.3.txt
-r--r--r-- 1 8800 root  20585 2010-10-13 01:36 tz-art.htm
-r--r--r-- 1 8800 root  32595 2010-10-13 01:36 tz-link.htm
-rw-r--r-- 1 root root 192605 2011-01-09 19:52 tzcode2010n.tar.gz
-rw-r--r-- 1 root root 191722 2011-01-09 19:52 tzdata2010o.tar.gz
-r--r--r-- 1 8800 root   4308 2010-10-13 01:36 tzfile.5
-rw-r--r-- 1 8800 root   4486 2010-10-25 21:19 tzfile.5.txt
-r--r--r-- 1 8800 root   5008 2010-10-13 01:36 tzfile.h
-r--r--r-- 1 8800 root   1196 2010-10-13 01:36 tzselect.8
-rw-r--r-- 1 8800 root   1087 2010-10-25 21:19 tzselect.8.txt
-r--r--r-- 1 8800 root   7117 2010-10-13 01:36 tzselect.ksh
-r--r--r-- 1 8800 root   5839 2010-10-13 01:36 usno1988
-r--r--r-- 1 8800 root  21156 2010-10-13 01:36 usno1989
-r--r--r-- 1 8800 root  21154 2010-10-13 01:36 usno1989a
-r--r--r-- 1 8800 root  10354 2010-10-13 01:36 usno1995
-r--r--r-- 1 8800 root  10405 2010-10-13 01:36 usno1997
-r--r--r-- 1 8800 root  10405 2010-10-13 01:36 usno1998
-r--r--r-- 1 8800 root    504 2010-10-13 01:36 workman.sh
-r--r--r-- 1 8800 root    707 2010-11-01 22:18 yearistype.sh
-r--r--r-- 1 8800 root   1461 2010-10-13 01:36 zdump.8
-rw-r--r-- 1 8800 root   1449 2010-10-25 21:19 zdump.8.txt
-r--r--r-- 1 8800 root  15926 2010-10-13 01:36 zdump.c
-r--r--r-- 1 8800 root  12755 2010-10-13 01:36 zic.8
-rw-r--r-- 1 8800 root  13242 2010-10-25 21:19 zic.8.txt
-r--r--r-- 1 8800 root  64893 2010-10-13 02:37 zic.c
-r--r--r-- 1 8800 root  19419 2010-11-01 22:18 zone.tab
-r-xr-xr-x 1 8800 root   1438 2010-10-13 01:36 zoneinfo2tdf.pl

iso3166.tab : ISO 3166-글자체의 국가코드와 국가명 표
zone.tab : 국가명, 위도, 경도, TZ값, 그리고 기술적인 명령 표.

3. 컴파일을 한다.
root@boggle70-desktop:timezone# make
sed \
-e 's|AWK=[^}]*|AWK=nawk|g' \
-e 's|TZDIR=[^}]*|TZDIR=/usr/local/etc/zoneinfo|' \
<tzselect.ksh >tzselect
chmod +x tzselect
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"    -c -o zic.o zic.c
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"    -c -o localtime.o localtime.c
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"    -c -o asctime.o asctime.c
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"    -c -o scheck.o scheck.c
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"    -c -o ialloc.o ialloc.c
cp yearistype.sh yearistype
chmod +x yearistype
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"   zic.o localtime.o asctime.o scheck.o ialloc.o  -o zic
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"    -c -o zdump.o zdump.c
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"   zdump.o localtime.o ialloc.o  -o zdump
cc -DTZDIR=\"/usr/local/etc/zoneinfo\"    -c -o difftime.o difftime.c


Makefile 에서 TOPDIR 의 경로를 적당히 바꾼다.

root@boggle70-desktop:timezone# make install 하면 쭉 만들어진다.

  
 
4. 만들어진 파일일을 하나 살펴보자
   root@boggle70-desktop:timezone# file install/etc/zoneinfo/Asia/Seoul 
   install/etc/zoneinfo/Asia/Seoul: timezone data, version 2, 6 gmt time flags, 6 std time flags, no leap seconds, 
                                              12 transition times, 6 abbreviation chars
   타겟보드에서 zic 를 사용하고자 한다면 모르지만 zic 를 굳이 타겟에서 하지 않아도 생성된 데이타는 
   아키텍쳐에 관계없이 사용할수 있는 시간대의 정보 파일이다.
   양을 줄이기 위해서 필요없는 국가들은 알아서 삭제하라.

   반드시 필요한 파일은 zoneinfo 디렉토리의 파일들이다.
   
5. 마지막으로 NTP 와 시스템 전체에 이 설정을 적용하기 위한 방법이다.

GNU C Library 에서 로컬타임을 적용하기 위한 방법중에 한가지를 소개한다.
문서는 http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html 를 참조한다.


환경변수에 TZ 변수를 적용하는 방법이다.
/etc/profile 에 아래를 추가한다.
export TZ=":/etc/localtime"
이제 부팅시에 TZ 환경변수는 GMT + xxx 와 같은 스트링을 사용하지 않고
/etc/localtime 에 컴파일된 파일을 읽어 시간설정을 하게 된다.
export 의 내용은 아래와 같이 보인다.
declare -x TZ=":/etc/localtime"
적용할 시간대에 /etc/localtime 의 심볼링크를 만들면 시간 적용이 된다.
ln -sf /usr/local/etc/zoneinfo/Asia/Seoull /etc/localtime 

        root:/etc# ls -la localtime 
        lrwxrwxrwx 1 root root 34 Jan 1 1970 localtime -> /usr/local/etc/zoneinfo/Asia/Seoul

과 같이 하면 시간적용이 된다.
이제 rdate -s time.bora.net 을 해서 ntp 와 시간을 동기시키면 모든 적용이 끝난다.
확인해보면 
        root:/etc# date
        Sun Jan 9 20:48:10 KST 2011
와 같이 시간이 표시되고 ftp 나 파일 생성시 모두 이시간이 적용된다.


주의 사항
   이렇게 열심히 Timezone 을 맞추어도 커널에서 gettimeofdate 를 통해 얻어 오는 것은 GMT 기준시간이다.