Unix

우분투에서 CentOS5 chroot 환경 잡기

알 수 없는 사용자 2013. 7. 30. 14:42

리눅스용으로 나오는 상용툴들은 매우 환경이... 참...

구체적으로, Synopsys, Cadence 사에서나오는 tool들이 리눅스용으로 있기는 하고, 이제는 솔라리스나 윈도우용보다는 리눅스용이 주류기는 한데, 리눅스 중에서도 CentOS5와 같이 매우 조선시대적 리눅스를 상정하고 개발된 녀석들이라 짜증나는 부분이 있다. 그래서 주 운영체제는 Debian 7으로  둔채...

가상컴퓨터를 잡아야 하나?

라고 생각했다가, chroot환경안에다 해보기로 결정했다!

http://www.lucas-nussbaum.net/blog/?p=385

덤프:

centos.pdf


이 글대로 gogo.

중간에, centos-release 이런 패키지를 요구하는데 쉽게 구할 수 있다 (http://mirror.centos.org/centos/5/os/x86_64/CentOS/).


필자는 /centos5에다가 한다 뿐이지 차이는 없다. 글 대로 하다가...

$ sudo yum --installroot /centos5/ install yum

GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5


이런 에러가 나왔다. 링크한 블로그 글에도 있지만...

# ln -s /centos5/etc/pki /etc/pki

한 뒤 재시도하라.

그리고 rpm --initdb라고 chroot한 이후에 하는 부분이 있는데 여기서도 /dev/urandom 이 없다고 할 수 도 있다. chroot 밖에서,

bash-3.2# yum install yum
Traceback (most recent call last):
  File "/usr/bin/yum", line 4, in ?
    import yum
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 44, in ?
    import rpmsack
  File "/usr/lib/python2.4/site-packages/yum/rpmsack.py", line 22, in ?
    import misc
  File "/usr/lib/python2.4/site-packages/yum/misc.py", line 14, in ?
    import tempfile
  File "/usr/lib64/python2.4/tempfile.py", line 33, in ?
    from random import Random as _Random
  File "/usr/lib64/python2.4/random.py", line 828, in ?
    _inst = Random()
  File "/usr/lib64/python2.4/random.py", line 95, in __init__
    self.seed(x)
  File "/usr/lib64/python2.4/random.py", line 109, in seed
    a = long(_hexlify(_urandom(16)), 16)
OSError: [Errno 2] No such file or directory: '/dev/urandom'


...chroot 밖에서...

# mount -o bind /dev /centos5/dev

로 해결

이렇게 바인딩 해주면 불평없이 잘 될 것이다.

또 URL 못 찾을때가 있다..

Total size: 80 M
Total download size: 61 k
Is this ok [y/N]: y
Downloading Packages:
http://centos.mirror.cdnetworks.com/5.9/os/x86_64/CentOS/centos-release-5-9.el5.centos.1.x86_64.rpm: [Errno 4] IOError: <urlopen error (-3, 'Temporary failure in name resolution')>
Trying other mirror.


chroot 밖에서,

# cp /etc/resolv.conf /centos5/etc

이렇게 resolv.conf를 복사해서 해결한다.

chroot과 yum이 되니 이제 별로 무서울 것이 없다!

schroot 를 설치하고 설정해서 이용하면 일반유저도 스스로 chroot해서 해당 환경 안으로 들어갈 수 있다. schroot패키지를 설치한 뒤 /etc/schroot/schroot.conf 파일을 열어보면, 설정하는 예제가 코멘트로 설명되어 있을 것이다. 참고해서 적절히 편집하면 쉽게 된다.

필자의 경우는 /home과 /centos5/home 을 bind로 묶어두었는데, schroot 전이나 매우 헷갈리는 노릇이다.

Debian계열이라서 /etc/debian_chroot 파일이 있나 없나 로그인시 체크해서 프롬프트를 바꿔주는 내용이 .bashrc에 들어있어서, /centos/etc/debian_chroot에다 CENTOS5 라고 내용을 적어두었다.