우분투 64bit 환경에서 cubrid 를 설치하는 것이 쉽지 않았다.(지난글 :
http://blog.1day1.org/311 )
다음은 64bit 환경에서 chroot 를 이용해서 32bit 어플을 실행하는 방법을 설명한다.
이 방법은 다른 어플에 활용해도 된다.
예전에 firefox 32bit flashplayer 문제가 많았을때 사용되던 방법이다.
1. chroot 및 debootstrap 패키지 설치 # apt-get install schroot dchroot debootstrap
schroot , dschroot 둘중에 하나만 선택해도 된다.
기본 위치를 /var/chroot32/hardy 로 잡았다.(자신이 원하는 위치로 바꿔도 된다)
hardy 64bit 환경에서 chroot hardy 32bit 환경을 설정하려한다.
설치하고 schroot 설정 ( /etc/schroot/schroot.conf - 이미 있음. 추가)
[hardy]
description=Ubuntu hardy
priority=3
location=/var/chroot32/hardy
users={Userid}
groups={Userid},root
root-groups=root,{Userid}
personality=linux32
aliases=cubrid,default
{Userid} 는 본인 계정을 적으면 된다.
chroot 전환방법은
# schroot -c hardy 또는 schroot -c cubrid 또는 schroot -c default
또는 그냥 schroot 를 실행하면 default 가 실행된다.
이게 좀 복잡해 보이면, dchroot 를 사용한다.
/etc/dchroot.conf 를 만들고, 다음 한줄을 넣는다.
hardy /var/chroot32/hardy
나중에 32bit 어플설정시 schroot 는 좀 이상 동작을 해서 dchroot 가 더 나은 듯 하다.
chroot 전환방법은 schroot 와 비슷
# dchroot -c hardy 또는 그냥 dchroot
여기까지 기본 설정은 완료 실제적인 chroot 32bit 환경을 구축한다.
2. chroot 기본환경 구축, 설정# debootstrap —variant=buildd —arch i386 hardy /var/chroot32/hardy http://ftp.daum.net/ubuntu
젠투 사용자는 익숙할 것이다.(chroot 도) 설치시 필요하니... ^^
명령에서 엿볼 수 있듯이 i386 아키텍쳐(?) 를 구축하기 위한 기본 시스템을 만든다.
/var/chroot32/hardy 에 시스템 기본 파일이 만들어진것을 볼 수 있다.
현 시스템(64bit)에서 필요한 파일들을 복사한다.
# cp /etc/resolv.conf /var/chroot32/hardy/etc/
# cp /etc/apt/sources.list /var/chroot32/hardy/etc/apt/
# cp /etc/passwd /var/chroot32/hardy/etc/
# cp /etc/shadow /var/chroot32/hardy/etc/
# cp /etc/group /var/chroot32/hardy/etc/
# cp /etc/sudoers /var/chroot32/hardy/etc/
# cp /etc/hosts /var/chroot32/hardy/etc/
/etc/fstab 에 chroot 에 필요한 설정을 추가한다.
/proc /var/chroot32/hardy/proc none rbind 0 0
/dev /var/chroot32/hardy/dev none rbind 0 0
/sys /var/chroot32/hardy/sys none rbind 0 0
/tmp /var/chroot32/hardy/tmp none rbind 0 0
필요하면 다음 항목도 추가한다.
/home /var/chroot32/hardy/home none rbind 0 0
/var/run/dbus /var/chroot32/hardy/var/run/dbus none rbind 0 0
추가한 후에 마운트 한다.
# mount -a
이제는 chroot 상태로 넘어가서 추가적인 패키지들을 설치한다.
# schroot ( 또는 dchroot )
chroot 된 상태가 된다.( $ 로 표시하겠다) 그 다음에 패키지를 설치한다.
$ apt-get install wget debconf devscripts gnupg nano
$ apt-get update ; apt-get upgrade
필요하면 추가 설치
$ apt-get install vim aptitude
chroot 에서 빠져 나오려면, exit 를 입력한다.
3. 32bit 어플 실행환경 설정/usr/local/bin/do_dchroot 파일 생성 후, chmod 755 로 실행권한을 준다.(chroot 빠져나온상태)
#!/bin/sh
for arg; do
arg=`echo $arg | sed -e 's/ /\\\ /g'`
args=`echo $args $arg`
done
xhost +
/usr/bin/dchroot -d "`echo $0 | sed 's|^.*/||'` $args"
32bit 어플실행환경 파일이다. 이 파일을 이용해서 32bit 어플을 실행시킬 것이다.
gedit 으로 테스트를 해본다. (chroot 상태에서 , schroot 나 dchroot 로 )
$ apt-get install gedit
$ cd /usr/bin ; ln -s gedit gedit32
$ exit
chroot 를 빠져나와서
# cd /usr/local/bin ; ln -s do_dchroot gedit32
# gedit32
처럼 링크를 걸고 , 실행시키면 chroot 상태로 바뀌면서 gedit32 가 실행된다.
이런식으로 cubrid 도 실행할 것이다.
4. cubrid 어플 설치,실행. chroot 상태에서 cubrid 를 설치, 실행한다. (자세한 방법은 생략한다.)
$ sh CUBRID-8.1.4.1032-linux.sh (설치)
$ . /root/.cubrid.sh
$ cubrid service start
다음 매니저를 실행해본다.
$ cubridmanager
를 실행하면 몇가지 에러가 발생한다.
위에서 한 방식으로 do_dchroot 로 32bit 어플실행 설정을 한다.
/usr/bin/cubridman_start 를 만들었다. (chroot 상태)
#!/bin/sh
. /root/.cubrid.sh
cubridmanager
실행스크립트를 만들고, chroot 를 벗어나서 다음처럼 링크시킨다.
# cd /usr/local/bin ; ln -s do_dchroot cubridman_start
# cubridman_start
로 실행시킨다.
java , swt 관련 에러가 보이면, 다음 패키지를 설치한다.
$ apt-get install lilbswt3.2-gtk-java sun-java6-jdk ( 또는 sun-java6-jre )
한글이 깨진다면.
$ apt-get install language-support-ko language-pack-ko language-pack-gnome-ko
$ locale-gen ko_KR.UTF-8
schroot 로 실행환경 설정schroot 도 dchroot 와 동일한 형태의 스크립트는 안되지만, 비슷하게 처리할 수 있다.
# schroot -c hardy -p cubrid_start
# schroot -c hardy -p cubridman_start
위와 같은 방식으로 실행하면 된다.