이 튜토리얼은 솔라리스 OS 상에서 자바 ME 어플리케이션을 개발하기 위한 환경을 BrandZ (Branded Zone), J2ME Wireless Toolkit 2.2 그리고 Netbeans Mobility Pack 5.5 를 이용해 구성해 봅니다. Branded 존은 리눅스 어플리케이션이 솔라리스에서 아무런 수정도 없이 실행하는 것을 가능하도록 합니다.
이 문서는 솔라리스 OS 상에서 NetBeans Mobility Pack 을 사용하는 방법을 보여 드립니다. 현재 Mobility Pack 의 솔라리스 네이티브 버전은 존재하지 않습니다.
![]() |
이 글에서 사용된 기술들에 대한 좀 더 자세한 정보는 다음의 페이지들에서 확인하실 수 있습니다:
- 솔라리스 익스프레스 개발자 에디션 - http://www.sun.com/software/solaris/solaris-express/
- 솔라리스 BrandZ - http://www.opensolaris.org/os/community/brandz/
- 자바 ME - http://java.sun.com/javame/
- Wireless Toolkit - http://java.sun.com/products/sjwtoolkit/
- Netbeans Mobility - http://www.netbeans.org/products/mobility/
- 리눅스용 Netbeans 5.5, JDK6
- 리눅스용 Wireless Toolkit 2.2
- 리눅스용 Netbeans Mobility 5.5
- CentOS tarball- http://www.opensolaris.org/os/community/brandz/downloads/
또한 여러분의 솔라리스 버전이 BrandZ 를 지원하는지도 확인하시기 바랍니다. 만약 솔라리스 익스프레스 개발자 에디션을 사용하고 있다면 BrandZ 는 기본적으로 설치 됩니다. 기타 다른 버전의 솔라리스에서는 BrandZ 를 설치하기 위한 추가 작업이 필요할 것입니다.
Branded 존을 설정하는 단계별 가이드 입니다. 기본적인 과정은 다음과 같습니다:
- 사설(private) 네트워크 설정.
- lx branded 존 설정.
- 사설 네트워크 상의 네트워크 주소 지정
- 사용자의 홈 디렉토리를 루프백 마운트 하는 파일 시스템 추가
- lx 존 설치
- lx branded 존 설정
- 네트워크 설정
- 여러분의 유저와 동일한 uid 를 가지는 유저 생성
- ssh 키를 설정하여 lx branded 존을 패스워드 입력 없이 로그인 할 수 있도록 함
- 글로벌 존에서 리눅스 어플리케이션을 실행하도록 하는 작은 스크립트 생성
존 설치 치전에 설정할 사항
글로벌 존에서 네트워크를 설정 합니다
이 작업은 여러분이 생성한 branded 존과 글로벌존을 서로 연결 할때 사용되는 사설 네트워크를 설정 합니다. 리눅스 branded 존은 어떠한 외부 네트워크 접근도 가능하지 않을 것입니다. 만약 리눅스 존이 외부 네트워크에 접근해야 한다면 branded 존에 유효한 IP 주소를 지정할 필요가 있습니다. 그러나 만약 네트워크가 다운된다면 ssh 를 이용한 branded 존에 접근도 이루어 질 수 없을 것입니다. 이러한 문제를 회피할 수 있는 방법도 있지만 아주 복잡합니다.(이후의 추가 정보를 살펴 보시기 바랍니다) 만약 실제 IP 주소를 branded 존에 할당한다면 이 섹션은 그냥 넘어가시면 됩니다 (또한 이 다음 섹션에 의 주소 10.10.10.3 을 실제 주소로 변경하시기 바랍니다).
유저이름은 현존하는 유저중에서 여러분이 좋아 하는 것으로 변경이 가능합니다.
필자는 인텔 이더넷 카드를 가지고 있고 네트워크 디바이스는 iprb0 입니다. 여러분이 사용하고 있는 네트워크 디바이스를 알아 보려면 다음의 명령을 이용합니다:
[root@global_zone /]# /sbin/dladm show-link
위의 명령으로 얻어진 이름을 이 다음 섹션에서 iprb0 대신 사용하시기 바랍니다.
[root@global_zone /]# echo "addif 10.10.10.2 up" >> /etc/hostname.iprb0 [root@global_zone /]# echo "10.10.10.2 lhost" >> /etc/hosts [root@global_zone /]# echo "10.10.10.3 centos" >> /etc/hosts [root@global_zone /]# svcadm restart milestone/network
Branded 존 설치
존을 설치하기에 충분한 디스크 공간이 있는지 먼저 확인하시기 바랍니다. 약 1.5GB 정도의 공간이 필요할 것입니다. 예제에서 필자는 ZFS 파일 시스템에 있는 /data/brands/centos 디렉토리에 설치하였습니다. 여러분은 여러분이 원하는 어떤 존에도 설치할 수 있습니다. 만약 ZFS 를 사용하고 있다면 파일 시스템은 자동으로 생성되어 있습니다. 그렇지 않다면 존을 생성하기 전에 디렉토리를 생성해야 합니다.
존 설정시에 파일 시스템이 branded 존에 추가 됩니다. 이 파일 시스템은 존에 루프백 마운트 된 사용자의 홈디렉토리 입니다. 여러분은 반드시 /export/home/username 디렉토리가 글로벌 존에 마운트 된 파일 시스템에 존재 하는지 확인해야 합니다. 이제 존을 생성합니다
[root@global_zone /]# zonecfg -z centos centos: No such zone configured Use 'create' to begin configuring a new zone. zonecfg:centos> create -t SUNWlx zonecfg:centos> set zonepath=/data/brands/centos zonecfg:centos> set autoboot=true zonecfg:centos> add net zonecfg:centos:net> set address=10.10.10.3/29 zonecfg:centos:net> set physical=iprb0 zonecfg:centos:net> end zonecfg:centos> add attr zonecfg:centos:attr> set name="audio" zonecfg:centos:attr> set type=boolean zonecfg:centos:attr> set value=true zonecfg:centos:attr> end zonecfg:centos> add fs zonecfg:centos:fs> set dir=/home/username zonecfg:centos:fs> set special=/export/home/username zonecfg:centos:fs> set type=lofs zonecfg:centos:fs> end zonecfg:centos> commit zonecfg:centos> exit [root@global_zone /]#
존 설치하기
centos_fs_image.tar.bz2 파일을 brandz 웹페이지에서 다운 로드 합니다. 필자는 ~/Desktop/ 에 다운로드 받았습니다.
[root@global_zone /]# zoneadm -z centos install -d /home/username/Desktop/centos_fs_image.tar.bz2
A ZFS file system has been created for this zone.
Installing zone 'centos' at root directory '/data/brands/centos'
from archive '/home/username/Desktop/centos_fs_image.tar.bz2'
This process may take several minutes.
Setting up the initial lx brand environment.
System configuration modifications complete.
Setting up the initial lx brand environment.
System configuration modifications complete.
Installation of zone 'centos' completed successfully.
Details saved to log file:
"/data/brands/centos/root/var/log/centos.install.861.log"
[root@global_zone /]#
리눅스 존의 루트 프롬프트 설정하기
이 단계는 사실 불필요합니다. 그러나 이 다음 섹션에서 어떠한 명령이 어디서 그리고 누구에 의해 수행되었는지 명확하게 하기 위해 이 작업을 추가 했습니다.
[root@global_zone /]# cat > /data/brands/centos/root/root/.bash_profile <<EOF > export PS1="[\u@\h \w]# " > EOF [root@global_zone /]#
존 부트 하기
[root@global_zone /]# zoneadm -z centos boot
로그인 과 설정
이 섹션에서는 글로벌 존의 유저와 동일한 uid 를 가진 새 유저를 생성합니다. 로컬 유저의 uid 를 알아내기 위해 아래의 커맨드를 이용 합니다:
[username@global_zone ~]$ id
4. Update opensolaris webpage. [done]
[root@global_zone /]# zlogin centos
[Connected to zone 'centos' pts/6]
Welcome to your shiny new Linux zone.
- The root password is 'root'. Please change it immediately.
- To enable networking goodness, see /etc/sysconfig/network.example.
- This message is in /etc/motd. Feel free to change it.
For anything more complicated, see:
http://opensolaris.org/os/community/brandz/
You have mail.
[root@centos ~]# useradd -u uid -M -d /home/username username
[root@centos ~]# passwd username
Changing password for user username.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@centos ~]# printf '10.10.10.3 centos\n' >> /etc/hosts
[root@centos ~]# printf 'NETWORKING="yes"\n' > /etc/sysconfig/network
[root@centos ~]# printf 'HOSTNAME=centos\n' >> /etc/sysconfig/network
[root@centos ~]# cat /etc/hosts
[root@centos ~]# init 6
[root@centos ~]#
ssh 키 설정하기
ssh 는 안전하게 존에 접근할 수 있는 방법을 제공하는데에 사용됩니다. 또한 X 어플리케이션이 쉽게 실행 될 수 있도록 하는 X forwarding 을 제공 합니다. 키를 사용함으로써 존에 접근할때에 패스워드를 입력하지 않아도 됩니다. 아래의 예제에서 암호는 빈칸으로 남겨놓았습니다. (암호를 지정할 수도 있지만 이후 과정이 약간 더 복잡합니다 - ssh-agent(1) 를 참고하시기 바랍니다).
[username@global_zone ~]$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub. The key fingerprint is: 32:f8:1c:e6:c1:ab:90:11:21:55:88:9d:94:d7:e6:c2 username@global_zone [username@global_zone ~]$ cp .ssh/id_rsa.pub .ssh/authorized_keys [username@global_zone ~]$
lrun 스크립트 설정하기
[username@global_zone ~]$ cat > lrun > #!/bin/ksh > exec ssh -X centos "$@" > EOF [username@global_zone ~]$ chmod +x lrun [username@global_zone ~]$ mkdir ~/bin [username@global_zone ~]$ mv lrun ~/bin [username@global_zone ~]$ export PATH=$PATH:/home/username/bin
여러분의 쉘 rc 파일에 "PATH=$PATH:/home/username/bin" 를 추가하시기 바랍니다. 이제 Netbeans 를 branded 존에 설치 합니다
[username@global_zone ~]$ chmod +x ~/Desktop/jdk-6-nb-5_5-linux.bin [username@global_zone ~]$ lrun ~/Desktop/jdk-1_5_0_10-nb-5_5-linux.bin The authenticity of host 'centos (10.10.10.2)' can't be established. RSA key fingerprint is be:49:a8:09:8c:19:18:cc:f2:1c:e3:84:c7:76:d7:5d. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'centos,10.10.10.2' (RSA) to the list of known hosts.
Netbeans Mobility Pack 과 Wirless Toolkit 설치하기
NetBeans Mobility Pack 5.5 를 설치하기 위해 아래의 명령을 입력합니다:
[username@global_zone ~]$ lrun JAVA_HOME=~/jdk1.6.0 ~/Desktop/netbeans-mobility-5_5-linux.bin ...
질문 사항들을 대답한 다음에 설치를 기본 장소로 선택합니다.
(추가적으로 Mobility Pack 의 몇몇 버전은 Wireless Toolkit 과 같이 제공되기도 합니다) Wireless Toolkit 을 설치 하는 것은 두가지 방법이 존재 합니다:
1) 커맨드라인 사용하기
[username@global_zone ~]$ lrun JAVA_HOME=~/jdk1.6.0 ~/j2me_wireless_toolkit-2_2-linux-i386.bin ...
2) Netbeans Update Center 를 실행해서 모든 필요한 질문들에 답변하고 설치를 기본장소로 지정합니다. 만약 branded 존이 인터넷에 접근이 가능하다면 Netbeans Update Center 를 사용해서 IDE 에서 곧바로 WTK 의 설치가 가능할 것입니다.
![]() |
Entry/Inline 속성 에디터
설치 후에는 새로운 자바 플랫폼 매니저(menu: Tools>Java Platform Manager) 를 통해 자바 ME 플랫폼 에뮬레이터를 추가해 주시기 바랍니다.
Mobility Pack 과 새로운 자바 ME 플랫폼 에뮬레이터에 대한 정보는 다음 튜토리얼에서 확인하시기 바랍니다: http://www.netbeans.org/kb/55/quickstart-mobility.html
NetBeans 실행하기
[username@global_zone ~]$ sed -e 's#Exec=.*#Exec=lrun ~/netbeans-5.5/bin/netbeans#' ~/Desktop/netbeans5.5.desktop > /tmp/netbeans5.5.desktop [username@global_zone ~]$ mv /tmp/netbeans5.5.desktop ~/Desktop/netbeans5.5.desktop
데스크탑에 Netbeans 아이콘을 더블 클릭하여 실행해 보시기 바랍니다! 홈디렉토리에 어떠한 리눅스 프로그램도 다음과 같은 방법으로 실행 하실 수 있습니다:
[username@global_zone ~]$ lrun <linux_program>
저자의 정보:
Mark Phalan: mark.phalan@sun.com (솔라리스 조직)
Karol Harezlak: karol.harezlak@sun.com (NetBeans 조직)
이 글의 영문 원본은
http://wiki.netbeans.org/wiki
에서 보실 수 있습니다.
"개발자코너" 카테고리의 다른 글
- 솔라리스상에서 PHP 를 이용한 웹 어플리케이션 작성 (댓글 0개 / 트랙백 0개) 2008/07/17
- 솔라리스 SPARC 플랫폼, x86 플랫폼 간의 컴파일러 차이점 (댓글 28개 / 트랙백 3개) 2007/09/17
- 쉘 프로그래밍 기법 (댓글 1개 / 트랙백 0개) 2005/09/23
- Solaris OS, SPARC Platform Edition에서 x86 Platfo... (댓글 1개 / 트랙백 0개) 2005/10/23
- libumem 라이브러리를 이용하여 어플리케이션 내의 메모리 관리 버그를 잡아 내는 방법 (댓글 1개 / 트랙백 1개) 2006/03/23
- 스토리지 유틸리티 실습: ZFS 스냅샷과 Amazon S3 연동 (댓글 0개 / 트랙백 1개) 2008/04/17
- 썬 스튜디오: VIS 명령을 사용하여 중요한 루틴의 속도를 향상시키기 (댓글 1개 / 트랙백 0개) 2006/02/23
- 병렬 프로그래밍 단어 총정리 (댓글 22개 / 트랙백 3개) 2007/09/17
- 병렬 컴퓨팅을 위한 어플리케이션 개발 (댓글 0개 / 트랙백 2개) 2007/12/14
- DTrace를 사용하여 유저가 조정하는 애플리케이션 크래쉬 데이타 정보 모으기 (댓글 1개 / 트랙백 0개) 2006/08/23


댓글을 달아 주세요