2011년 9월 19일 월요일

openssl 인증서 발급

oepnssl 인증서 발급 방법




./openssl genrsa -des3 -out ca.key 4096
./openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
./openssl genrsa -des3 -out server.key 4096
./openssl req -new -key server.key -out server.csr
./openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt

2011년 9월 18일 일요일

OVIF 지원

http://blog.naver.com/ryswin?Redirect=Log&logNo=140117190707


(주)아이디폰 (www.idfone.co.kr) 의 KAISHOT (IDF-PVR 시리즈)는 PSIA 및 ONVIF 를 지원한다.

그리고, Darwin Streaming Server 와 연동 되고 (Client/Server mode 모두 지원),

송/수신 모드를 지원하며,

네트웍(FOMA, HSDPA, HSUPA, EVDO, Wibro egg, 802.11 a/b/g/n, 802.3) 상황에 따라

가변 bitrate 및 전송 중 저장을 지원한다.

아래는 ONVIF 설치 과정.

1. lighttpd 설치

1.1 pcre (Perl Compatible Regular Expressions) 설치

1.2 zlib 설치

1.3 bzip2 설치

1.4 lighttpd 설치

1.5 libiconv 설치

1.6 libxml2 설치

1.7 php 설치

2. fastcgi , ONVIF

2.1 openssl 설치

2.2 libfcgi 설치

2.3 gsoap 설치

2.4 onvif wsdl download and 설치

임베디드리눅스 빌드방법- openssl, libxml2 등..

2011/06/01 13:10 linux/embedded

시스템 개요

Host

CPU : x86

O/S : Fedora 7

Target

CPU : A&W6410(S3C6410)

O/S : Linux 2.6.21.5

Kernel Image, Filesystem Image : http://juncon.tistory.com/39

사용된 패키지/라이브러리

DirectFB-1.2.8

DirectFB-example-1.2.0

Gtk+-2.12.11

glib-2.16.5

atk-1.23.5

libjpeg-6b

libpng 1.2.31

freetype-2.3.7

expat-2.0.1

fontconfig-2.6.0

tiff-3.8.2

pkg-config 0.20

pixman-0.10.0

cairo-1.6.4

pango-1.20.5

libxml2-2.6.30

curl-7.18.2

icu4c-3.8.1

sqlite-3.6.2

openssl-0.9.8h

libgpg-error-1.6

libgcrypt-1.4.2

libxslt-1.1.24

tiff-3.8.2

WebKit-r36309

빌드를 위한 시스템 구축

Host

빌드는 Fedora 7, Fedora 10 전체설치 버전에서 테스트 하였다. 다른 시스템에서도 빌드가 가능하지만, Fedora 7을 권장한다. (Redhat 9부터 Fedora 4~Fedora 10까지 해보았지만 Fedora 7이 가장 안정적으로 크로스컴파일이 되었다.)

gpref 설치

빌드시에 gperf패키지가 필요하다. 간단히 yum을 이용하여 설치한다.

# yum –y install gperf

관련 파일 준비

빌드를 위하여 툴체인, WebKit소스, 패치등을 다운받는다. (파일이 필요하신 분은 댓글 남겨주세요~)

1. WebKit_toolchains_20090506_anw6410.tar.gz à 툴체인

2. WebKit-r36309_20090506_anw6410.tar.gz à WebKit 소스

3. cairo-1.6.4-patch.tar.gz à cairo-1.6.4 Patch

경로 설정

본 문서에서는 아래의 경로에서 작업한다.

기본 디렉토리 : /home/juncon/webkit

WebKit 소스 : /home/juncon/webkit/WebKit-r36309

라이브러리 : /home/juncon/webkit/libs

툴체인 : /opt/crosstool

빌드 prefix : /usr/local/webkit

소스 준비

# cd ~juncon

# mkdir webkit

# tar zxvf WebKit-r36309_20090506_anw6410.tar.gz –C /home/juncon/webkit

# tar zxvf WebKit_toolchains_20090506_anw6410.tar.gz –C /opt

라이브러리 빌드

라이브러리 빌드는 /home/juncon/webkit/libs에서 작업한다.

# mkdir /home/juncon/webkit/libs

# cd /home/juncon/webkit/libs

pkg-config 0.20.0 (for x86)

# wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.20.tar.gz

# tar zxvf pkg-config-0.20.tar.gz

# cd pkg-config-0.20

# ./configure --prefix=/usr/local/webkit

# make

# make install

# cd ..

환경변수 설정

이제 툴체인과 pkg-config를 사용하기 위하여 환경변수를 설정한다.

# export PATH=/usr/local/webkit/bin: /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/bin:$PATH

# export PKG_CONFIG_PATH=/usr/local/webkit/lib/pkgconfig

which 명령어를 이용하여 PATH가 정상적으로 잡혔는지 확인한다.

# which pkg-config

/usr/local/webkit/bin/pkg-config

# which arm-linux-gcc

/opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/bin/arm-linux-gcc

zlib 1.2.3

# wget http://www.zlib.net/zlib-1.2.3.tar.gz

# tar zxvf zlib-1.2.3.tar.gz

# cd zlib-1.2.3

# CC=arm-linux-gcc RANLIB=arm-linux-ranlib AR=arm-linux-ar ./configure --prefix=/usr/local/webkit --shared

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

Libpng 1.2.31

# wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.31.tar.gz

# tar zxvf libpng-1.2.31.tar.gz

# cd libpng-1.2.31

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

jpeg-6b

# wget http://freeware.sgi.com/source/libjpeg/libjpeg-6b.tar.gz

# tar zxvf /libjpeg-6b.tar.gz

# cd libjpeg-6b

# ./configure --prefix=/usr/local/webkit --enable-shared --enable-static --host=arm-linux

# vi Makefile

23번 라인 : CC = arm-linux-gcc

63번 라인 : AR= arm-linux-ar rc

65번 라인 : AR2= arm-linux-ranlib

# make

# make install

# cd ..

FreeType 2.3.7

# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.7.tar.gz

# tar zxvf freetype-2.3.7.tar.gz

# cd freetype-2.3.7

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

libxml 2.6.32

# wget ftp://xmlsoft.org/libxml2/libxml2-2.6.30.tar.gz

# tar zxvf libxml2-2.6.30.tar.gz

# cd libxml2-2.6.30

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

libgpg-error-1.6

# wget ftp://ftp.ring.gr.jp/pub/net/gnupg/libgpg-error/libgpg-error-1.6.tar.bz2

# tar jxvf libgpg-error-1.6.tar.bz2

# cd libgpg-error-1.6

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

libgcrypt-1.4.1

# wget ftp://ftp.ring.gr.jp/pub/net/gnupg/libgcrypt/libgcrypt-1.4.2.tar.gz

# tar zxvf libgcrypt-1.4.2.tar.gz

# cd libgcrypt-1.4.2

# vi Makefile.in

240: tests 삭제

241: tests 삭제

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

libxslt-1.1.24

# wget ftp://xmlsoft.org/libxslt/libxslt-1.1.24.tar.gz

# tar zxvf libxslt-1.1.24.tar.gz

# cd libxslt-1.1.24

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

openssl-0.9.8h

# wget http://www.openssl.org/source/openssl-0.9.8h.tar.gz

# tar zxvf openssl-0.9.8h.tar.gz

# cd openssl-0.9.8h

Configure 파일의 325번 라인에 있는linux-elf 라인전체를 복사해 아래 굵게 표시한 부분을 수정한다.

"linux-arm", "arm-linux-gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",

# ./Configure linux-arm --prefix=/usr/local/webkit --openssldir=/usr/local/webkit no-threads no-zlib no-asm shared

Makefile을 수정한다

AR = arm-linux-ar rc

RANLIB = arm-linux-ranlib

# make

# make install

expat 2.0.1

# wget http://nchc.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz

# tar zxvf expat-2.0.1.tar.gz

# cd expat-2.0.1

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

fontconfig 2.6.0

# wget http://fontconfig.org/release/fontconfig-2.6.0.tar.gz

# tar zxvf fontconfig-2.6.0.tar.gz

# cd fontconfig-2.6.0

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x --with-arch=arm-unknown-linux-gnu --disable-docs

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

tslib 1.0

# wget http://download.berlios.de/tslib/tslib-1.0.tar.bz2

# tar jxvf tslib-1.0.tar.bz2

# cd tslib-1.0

# ./autogen.sh

# ./configure --prefix=/usr/local/webkit --target=arm-linux --host=arm-linux --enable-shared CC=arm-linux-gcc

# vi config.h

#define malloc rpl_malloc 을 삭제한다.

# make

# make install

# cd ..

DirectFB 1.2.8

# wget http://www.directfb.org/downloads/Core/DirectFB-1.2.8.tar.gz

# tar zxvf DirectFB-1.2.8.tar.gz

# cd DirectFB-1.2.8

# ./configure --prefix=/usr/local/webkit --target=arm-linux --host=arm-linux --without-x --disable-osx --disable-x11 --enable-fbdev --with-gfxdrivers=none --build=i686 --with-inputdrivers=tslib,keyboard --enable-zlib

# make

# make install

# cd ..

DirectFB Examples 1.2.0

# wget http://www.directfb.org/downloads/Extras/DirectFB-examples-1.2.0.tar.gz

# tar zxvf DirectFB-examples-1.2.0.tar.gz

# cd DirectFB-examples-1.2.0

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

이제 DirectFB빌드는 끝났다. 이대로 /usr/local/webkit을 보드에 올려서 DirectFB 예제들을 실행하면 된다.

glib 2.16.5

# wget http://ftp.gnome.org/pub/gnome/sources/glib/2.16/glib-2.16.5.tar.gz

# tar zxvf glib-2.16.5.tar.gz

# cd glib-2.16.5

# vi glib-config.cache

glib_cv_long_long_format=${glib_cv_long_long_format=ll}

glib_cv_stack_grows=${glib_cv_stack_grows=no}

glib_cv_has__inline=${glib_cv_has__inline=yes}

glib_cv_has__inline__=${glib_cv_has__inline__=yes}

glib_cv_uscore=${glib_cv_uscore=no}

ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}

ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}

glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}

# ./configure --prefix=/usr/local/webkit --host=arm-linux --with-threads=posix --cache-file=glib-config.cache

# make

# make install

다음 빌드시 크로스 컴파일한 glib-genmarshal이 선택되지 않도록 한다.

# mv /usr/local/webkit/bin/glib-genmarshal /usr/local/webkit/bin/glib-genmarshal_arm

# cd ..

atk-1.23.5

# wget http://ftp.gnome.org/pub/gnome/sources/atk/1.23/atk-1.23.5.tar.gz

# tar zxvf atk-1.23.5.tar.gz

# cd atk-1.23.5

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

pixman-0.10.0

# wget http://www.cairographics.org/releases/pixman-0.11.10.tar.gz

# tar zxvf pixman-0.11.10.tar.gz

# cd pixman-0.11.10

# vi Makefile.in

201: test삭제

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

cairo-1.6.4

# wget http://www.cairographics.org/releases/cairo-1.6.4.tar.gz

# tar zxvf cairo-1.6.4.tar.gz

# cd cairo-1.6.4

FTP에서 cairo-1.6.4-patch.tar.gz파일을 받는다.

# tar zxvf cairo-1.6.4-patch.tar.gz

# patch -p1 < 001-cairo_dfb-run-clipped-function.patch

# patch -p1 < 002-cairo_dfb-dest-image-clip.patch

# patch -p1 < 003-cairo_dfb-zero-box-clip-fix.patch

# patch -p1 < 004-cairo-blit-optimization.patch

# patch -p1 < 005-cairo-font-crash-fix.patch

# ./configure --prefix=/usr/local/webkit --host=arm-linux --enable-directfb=yes --enable-xlib=no --enable-xlib-xrender=no --enable-xcb=no --without-x --disable-win32

# make

# make install

# cd ..

pango-1.20.5

# wget http://ftp.gnome.org/pub/GNOME/sources/pango/1.20/pango-1.20.5.tar.gz

# tar zxvf pango-1.20.5.tar.gz

# cd pango-1.20.5

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x --enable-cairo --disable-xlib --disable-win32

# make

# make install

# cd ..

tiff 3.8.2

# wget ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.8.2.tar.gz

# tar zxvf tiff-3.8.2.tar.gz

# cd tiff-3.8.2

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

gtk+-2.12.11

# wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.12/gtk+-2.12.11.tar.gz

# tar zxvf gtk+-2.12.11.tar.gz

# cd gtk+-2.12.11

# vi gtk+-config.cache

ac_cv_lib_Xinerama_XineramaQueryExtension=${ac_cv_lib_Xinerama_XineramaQueryExtension=no}

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x --with-gdktarget=directfb --cache-file=gtk+-config.cache

# make

# make install

# cd ..

이제 DirectFB기반의 Gtk+-2.0이 빌드되었습니다. 이 상태로 보드에 올려서 gtk-demo를 실행하시면 됩니다.

sqlite 3.6.2

# wget http://www.sqlite.org/sqlite-3.6.2.tar.gz

# tar zxvf sqlite-3.6.2.tar.gz

# cd sqlite-3.6.2

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

curl 7.18.2

# wget http://curl.s-lines.net/download/curl-7.18.2.tar.gz

# tar zxvf curl-7.18.2.tar.gz

# cd curl-7.18.2

# vi configure

28733라인에 { (exit 1); exit 1; }; } à } 만 남기고 지운다.

# ./configure --prefix=/usr/local/webkit --host=arm-linux --with-ca-path=/usr/local/webkit/certs

# make

# make install

# cd ..

icu 3.6 for x86

icu를 컴파일 하다보면 컴파일중 생성한 tool을 이용하여 새로운 소스코드를 생성하는 과정에서 크로스 컴파일된 툴이 실행되지 못하는 오류가 있어 먼저 x86용으로 빌드한다. (디렉토리 : icu_x86)

# wget http://download.icu-project.org/files/icu4c/3.8.1/icu4c-3_8_1-src.tgz

# tar zxvf icu4c-3_8_1-src.tgz

# mv icu icu_x86

# cd icu_x86/source

# ./configure --enable-tests=no --enable-samples=no

# make

# cd ../../

icu 3.6 for arm

# tar zxvf icu4c-3_8_1-src.tgz

# cd icu/source

이전에 x86으로 빌드했던 것을 링크한다.

# ln –s ../../icu_x86/source/bin bin_x86

# vi data/icupkg.inc.in

마지막줄을 아래와 같이 변경

GENCCODE=../bin_x86/genccode

GENCMN=../bin_x86/gencmn

ICUPKG=../bin_x86/icupkg

# vi data/Makefile.in

bin_x86=../bin_x86 ß 8번째 라인에 추가

Makefile내의 BINDIR bin_x86으로 변경한다. (vi 명령 “:%s/BINDIR/bin_x86”)

# vi icudefs.mk.in

229번 라인을 아래와 같이 수정

INVOKE = $(LDLIBRARYPATH_ENVVAR)= /home/juncon/WebKit/libs/icu_x86/source/lib:$(LIBRARY_PATH_PREFIX)$(LIBDIR):$(top_bu ilddir)/stubdata:$(top_builddir)/tools/ctestfw:$$$(LDLIBRARYPATH_ENVVAR) $(LEAK_CHECKER)

# vi extra/uconv/Makefile.in

141번 라인을 아래와 같이 수정

$(INVOKE) $(PKGDATA_INVOKE_OPTS) ../../bin_x86/pkgdata -p $(MSGNAME) $(PKGDATA_OPTS) -m $(PKGMODE) -s $(RESDIR) -d $(RESDIR) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst

164번 라인을 아래와 같이 수정

$(INVOKE) ../../bin_x86/genrb -e UTF-8 -s $(^D) -d $(@D) $(^F)

# vi extra/uconv/pkgdata.inc.in

마지막 라인을 아래와 같이 수정

GENCCODE=../../bin_x86/genccode

GENCMN=../../bin_x86/gencmn

ICUPKG=../../bin_x86/icupkg

# ./configure --prefix=/usr/local/webkit --host=arm-linux --enable-tests=no --enable-samples=no

# gmake

# gmake install


WebKit 빌드

FTP에서 다운받은 WebKit의 소스가 있는 디렉토리로 이동한다.

# cd /home/juncon/WebKit/WebKit-r36309

# ./autogen.sh --prefix=/usr/local/webkit --host=arm-linux --enable-debug=no --with-target=directfb

# make

# make install

WebKit의 실행파일인 GtkLauncher는 인스톨되지 않으므로 별도로 복사한다.

# cp ./Programs/.libs/GtkLauncher /usr/local/webkit/bin


한글 지원을 위한 폰트 설정

기본적으로 한글 폰트가 없어 보드에 포팅하고 실행을 하면 한글은 깨진다. 그래서 윈도우에서 사용하고 있는 gulim.ttc파일등을 사용하도록 설정한다.

폰트는 윈도우 PC c:\windows\fonts에 있다.

# mkdir /usr/local/webkit/share/fonts

# cp ARIALUNI.TTF gulim.ttc /usr/local/webkit/share/fonts

fonts.conf 파일을 수정해 준다.

# vi /usr/local/webkit/etc/fonts/fonts.conf

26라인에

/usr/local/webkit/share/fonts
를 추가한다.

USB 만들기

본 문서에는 USB메모리를 ext3로 포멧한 후 사용하였다. 만약 mtdblock에 복사하고자 한다면 USB에 담은 결과물을 그대로 올리면 된다.

먼저 USB메모리를 ext3로 포멧한다.

USB 디바이스: /dev/sdc1

# fdisk /dev/sdc

fdisk 사용법은 man fdisk를 참조한다.

# mkfs.ext3 /dev/sdc1

# mount /dev/sdc1 /mnt/usb

/usr/local/webkit 디렉토리를 USB에 복사한다.

# cp –aR /usr/local/webkit /mnt/usb/

# cd /mnt/usb/webkit

필요없는 파일들을 삭제한다.

# find ./ -name “*.a” | xargs rm -rf

# find ./ -name “*.la” | xargs rm -rf

# find ./ -name “include” | xargs rm -rf

# find ./ -name “man” | xargs rm –rf

# cd ../../

# umount /mnt/usb

A&W6410에서 실행

이제 보드를 부팅하고 WebKit을 실행하기 위한 환경들을 설정한다. 당연히 인터넷에 접속 가능한 상태여야 한다.

ip설정

# ifconfig eth0 192.168.0.45

# route add default gw 192.168.0.1 eth0

DNS 설정

# vi /etc/resolv.conf

nameserver 210.94.0.73

WebKit 실행전 준비

# mount /dev/sda1 /mnt/usb

# cd /usr/local

# ln -s /mnt/usb/webkit

환경변수를 설정한다.

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/webkit/lib

export PATH=/usr/local/webkit/bin:/sbin:/usr/sbin:/bin:/usr/bin

export LD_PRELOAD=/usr/lib/libts.so:/usr/lib/ts/pthres.so

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event1

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

WebKit 실행

# cd /usr/local/webkit/bin

만약 빌드 후 처음 실행이라면 gdk-pixbuf-query-loaders와 pango-querymodules를 실행한다.

# mkdir /usr/local/webkit/etc/pango

# ./pango-querymodules > ../etc/pango/pango.modules

# ./gdk-pixbuf-query-loaders > ../etc/gtk-2.0/gdk-pixbuf.loaders

이제 WebKit을 실행한다.

# ./GtkLauncher http://www.google.co.kr

맨처음 실행하게 되면 font를 캐쉬하는 작업을 하기 때문에 WebKit이 뜨기 까지 시간이 걸린다.

posted by linuxian lilla