서버 깨먹다.

from My Life/한 일 2007. 2. 26. 00:53


사용자 삽입 이미지


모든 삽질은 여기서 시작되었따!! ㅠ_ㅠ




정확하게 말하면 서버를 깨먹었다기 보다도, 하드웨어 이주에 실패했다는 표현이 더 정확하겠다.

내가 패키지 설치에 실패했거나, 설정 오류나 명령어 실패로 OS 를 날린건 아니니까..
(한편으로는 그렇기도 하다 ;ㅅ; )


원래 내 개인 서버는 Pentium 3 Coopermine 에서 돌던 녀석이다 보드는 i815 고 부두 그래픽 카드에 Realtek NIC가 탑재된 녀석.

그런데 문제는 보드의 USB가 인식되지 않아 프린터 설치가 불가능했다.

/dev/lp0 로 (일반 패러렐) 어떻게든 해 보려고 했지만 USB 인터페이스가 아니면 드라이버는 소용이 없을 것이란 구글 형님의 훈수가 결국 Duron 850 으로의 이주를 결정하게 했다.

문제는 여기서 발생했다.

/etc/make.conf 에서 CFLAGS 를 march=pentium3 로 -fomit-frame-pointer 루프 어레이인가를 4까지 최적화 하고 -O3 로 설정했었다.

설마 했는데 CPU가 Duron (AMD)로 바뀌었다고 부팅이 안되는 것이다.

결국 커널 중 2.6.18 대를 버리고 2.6.14 로 부팅하니 어떻게든 부팅은 되었다.

문제는 ntop 이나 gcc, python 이 동작하질 않았고 당연하게도 portage 마저 동작하지 않았다.

(illegal instuction 에러를 냄)

소프트웨어를 하드웨어에 꼭 맞게 최적화 하는것이 양날의 검이라는 사실을 이때서야 깨달았다.
나중에 하드웨어를 새로 구성할 것을 고려하지 않았고 좋지 않은 사양이기에 최적화를 위해 한 일이 이렇게 발목을 잡을줄은 생각하지 못했다.


결국 Gentoo LiveCD 로 부팅해서 system 패키지와 glibc 를 재 컴파일/설치 하기로 방향을 잡았다.

그.러.나





chroot로 진입한 환경에서 아까 동작하지도 않던 gcc 가 동작할 리 없지 않은가.. [털썩]


이럴때는  gcc만 새로 설치해서 작업하면 좋은데,  얽히고 섥힌 라이브러리의 의존성과 해당 파일의 목록을 외워둔 것도 아니고.


프로그램 목록(파일목록) 은 그렇다 치더라도, 그것을 배치해야 할 디렉토리 위치조차 모른다는게 결정적이다.

젠투 리눅스 개발자들과 LFS로 수많은 삽질에 삽질을 거듭하시는 분들은 잘 아시겠지만.


결국 gcc를 사용하기 위해 stage1 타르볼을 덮어 써 보았다.
무슨일이 일어날지 궁금하기도 했고, 어차피 시스템 전체 백업은 되어 있으니 망가뜨리면서 공부해 보는것도 나쁜일은 아니라고 생각했다.


그 결과, 당연하게도 gcc 기동은 성공. 하지만 하나라도 emerge 시도를 하면  glibc 와 호환이 안되는 건지 /lib 디렉토리의 pthread 동적 라이브러리에서 에러를 뿜어냈다.

그 이후에는 어떤 프로그램을 실행해도, 심지어 ls 따위를 실행해도 동일한 반응.

하는 수 없이 타르볼을 다시 덮어쓰고 glibc 를 재 컴파일 했다.

이후 bootstrap 시 perl 모듈 중  (dev-perl/Locale-gettext-1.05)

* Using ExtUtils::MakeMaker
Can't locate ExtUtils/MakeMaker/Config.pm in @INC (@INC contains: /etc/perl /usr/lib/perl5/vendor_perl/5.8.8/i686-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl /usr/lib/perl5/site_perl/5.8.8/i686-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib/perl5/5.8.8/i686-linux-thread-multi /usr/lib/perl5/5.8.8 /usr/local/lib/site_perl .) at /usr/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm line 7.
BEGIN failed--compilation aborted at /usr/lib/perl5/5.8.8/ExtUtils/MakeMaker.pm line 7.
Compilation failed in require at Makefile.PL line 2.
BEGIN failed--compilation aborted at Makefile.PL line 2.

!!! ERROR: dev-perl/extutils-pkgconfig-1.07 failed.
Call stack:
ebuild.sh, line 1568: Called dyn_compile
ebuild.sh, line 937: Called src_compile
ebuild.sh, line 1261: Called perl-module_src_compile
perl-module.eclass, line 136: Called perl-module_src_prep
perl-module.eclass, line 125: Called die

!!! Unable to build! (are you using USE="build"?)
!!! If you need support, post the topmost build error, and the call stack if relevan

이런 오류가 나는데 일단 관련 링크 첨부

http://www.gentoo.ro/forum_viewtopic.php?19.8292


하아.. 루마니아 어다.. ㅠ ㅠ

이후 하드디스크를 초기화 하고 재 셋팅에 들어갔지만, 역시 bootstrap 시 오류 발생..

대체 뭐란 말인가..

일단 오늘의 삽질 일기는 여기까지..

나머지는 내일 불타오르도록 하자!!


,