맛있는 핫도그 ㅋ

'Mobile ' 카테고리의 다른 글

[여행-신도림] 디큐브시티 뽀로로 파크 방문기  (1) 2013.10.23
자연 캠핑장 - 과천  (1) 2013.10.08
서울 대공원 - 동물원  (0) 2013.10.05
1. Process Management : Namespace 내용
   Namespace의 기본 개념을 번역함. 
   Namespace concept (Professional Linux kernel architecture)

2. namespace 실습
  // 검색을 해봤는데, 와닿을 만한 예제를 찾지 못했다. 검색어를 잘못 선정했나.. 
 // unshare() 함수 사용의 예제 임.

 Reference site : http://glandium.org/blog/?p=217

                        http://www.debian-administration.org/articles/628
 

unshare() system call로 새로운 namespace를 만들고 확인해보는 실습이다. 


위의 소스를 살짝 설명을 하자면, 
일단 unshare system call은 root permission이 없으면 수행을 하지 못한다.  현재 실행하고 있는 UID의 값이  root(UID == 0)가 아니면 실행을 중단한다. 
shell 에서 (geteuid 는 effective uid 값을 가져오는 함수임)
$ man 2 geteuid
하면 자세한 정보가 나온다. 

일단 root permission으로 실행되었다면, unshare system call에 CLONE_NEWNS flag와 함께 호출한다. 새로운 namespace를 생성하는 과정임(현재 process에서 fork 하여 생성된 child process인 경우에만 아래의 코드를 실행한다.)
 
코드를 구현하고,
$ gcc -o newns newns.c (위의 소스 파일 이름이 newns.c 이다)

 
위의 terminal의 명령 순서를 설명하면,
나의 경우에 ~/work/namespace/ 하위에 first와 second file을 만들고 각각 first 에는 "FIRST" 문자열을 second 에는 "SECOND" 문자열을 기록 해두었다.

$ sudo ./newns 를 통해 새로운 namespace를 만들고
$ mount -n --bind second first

(참고로, mount 의 --bind 옵션은 심볼릭 링크 파일을 파일로 인식하는 FTP 에서 링크 대신 마운트를 시킴으로써 링크와 비슷한 역할을 할 수 있도록 하는 것이다.)

$ cat first

first 파일의 내용을 보면 "SECOND"라고 나온다. 하지만 또 다른 터미널을 하나 더 연 다음에,
같은 디렉토리로 이동 후 같은 파일의 내용을 보면,

<another terminal>
$ cat first
FIRST
라고 나온다.

Namespace의 간단한 예제 이며, 조금 더 참고하거나 해볼 만한 예제가 있다면 올리도록 할 것이다.  

VMware Server version을 깔고 screen size 조정 및 vmware와 host 간에 copy & paste(사실 이게 가장 불편하다.) 같은 것들이 되려면, vmware-tools를 설치해야 한다. 
OS 는 ubuntu 10.10 이다.

그럴려고 install vmware tools 를 클릭해서 CD가 mount되면 VMware...tar.gz 를 복사하고 압축불면, 인스톨 script를 실행한다. 물론, 

 
https://help.ubuntu.com/community/VMware/Server 이 사이트를 참조해서 kernel header 설치를 해주었다. 
 $ sudo apt-get install build-essential linux-headers-`uname -r`
하지만,
The directory of kernel headers (version @@VMWARE@@ UTS_RELEASE) does not match
your running kernel (version 2.6.35-22-generic). Even if the module were to
compile successfully, it would not load into the running kernel.
 
에러가 뜨길래, /usr/src/ 디렉토리를 보니, linux-headers-2.6.35.22 와
linux-headers-2.6.35.22-generic 만 있었다. 그래서 install tool이 요구하는데로 /usr/src/linux/include 를 맞춰주기 위해 위의 디렉토리를 linux로 링크 해줬다. 물론 /usr/src/ 하위에 디렉토리는 결국 같은 거니깐,
$ cd /usr/src $ sudo ln -s /usr/src/
headers-2.6.35.22-generic linux
를 해줬음에도 불구하고 또!!! error가 나는 것이다. 검색을 하다보니, VMware workstation 7.1.3 버전 부터는 알아서 해준다는 말이 있긴한데 더 검색을 해보았다.
다른 해결책이 있었다. ubuntu 10.10 을 설치했다면, apt-get 으로 vmware tools를 설치 할 수 있는 것이다. ㅋ
명령어는,  $ sudo apt-get install --no-install-recommends open-vm-dkms $ sudo apt-get install open-vm-tools $ sudo reboot
요렇게 해주면, vmware에서 내가 가장 원하던 copy & paste 가 잘된다!  

'Development Tip' 카테고리의 다른 글

Android git mirror site  (0) 2011.09.30
Per-process Namespace  (0) 2011.03.16
Kernel source 보는 방법(site 및 tool)  (0) 2011.02.24
Eclipse Git Repository Plugin (Egit)  (0) 2010.12.31
Free Repository 제공 사이트 소개(SVN, Git)  (0) 2010.12.30

+ Recent posts