흐흐.. 여전히 야근하고 바로 외근갔다가 또 집에서 잠자고 출근해서 야근하고 또 외근가는 루프를 돌고 있는 중이라 블로그를 계속 쓸 여유가 잘 안 나네요;; 흐흐
바이오에 프비를~
오늘은 이번에 산 랩탑에다가 윈도우쪽 세팅은 완료하고, 프비를 인스톨했습니다~ 그런데, 갖고 있는 프비 씨디가 4.0 4.1 4.8 4.9 5.1 뭐 이런 상황이라;; 어쩔 수 없이 5.1을 깔았습니다. -o- 일단 설치는 깔끔하게 잘 되고 속도도 빨랐습니다~ (역시 바이오! … ;;) 다 깔고 나서, 5-STABLE로 올리려고 빌드를 해 놓고 놀러 나갔다 그냥 퇴근 해서는.. 이제 집에서 월드와 커널을 인스톨하고 그놈 빌드하려고 들어가서.. 무심코make installkernel installworld… 하고서는 TV에서 하는 이종격투기를 보고 있었는데, 흘끗 터미날을 봤더니으아아앗!!!Bus error.. 헉. 5.1과 5.3은 바이너리 호환성이 없다는 것을 깜빡하고 그냥 설치를 해 버렸군요. 우어.
=.= 바이너리 비호환의 위력
덕분에, 덮여 씌워진 libc, libutil등 기본 라이브러리와 /bin /sbin등으로 인해 ls, sh, cat, ftp, fetch 를 비롯해 거의 대부분의 바이너리가 안 되는 상황..;; ls도 안 되는 상황이라echo /usr/bin/*해서, 할 수 있는 일이 뭔지 대충 실행을 해 보니.. 되는 것이라고는 gzip, cc, gunzip, tar 정도 밖에.. uudecode나 cat도 없었기에 다른데서 바이너리를 터미널에 붙여넣기 해서 써 넣을 수도 없는 노릇이고.. 혹시나 해서 sysinstall에서 바이너리 재인스톨을 해 보았지만, 1메가를 읽은 뒤에 write error가.. =.=;;
그래 복구엔 고양이!
-
그래서, 일단 네트워크 접근이 가능한 가장 작은 프로그램 중의 하나인 netcat을 돌릴 방법을 곰곰히 생각해 보니.. 소스를 붙여넣어서 cc로 컴파일을 하면 될 것 같았습니다.
-
그런데! netcat조차도 소스가 2000라인이 넘기 때문에 echo”소스”> netcat.c 해서 붙여넣기엔 제법 압박이..; 그래서 우선 cat를 복구하기로 했는데, cat도 소스가 한 300라인 되는데”랑’가 있어서 여러모로 echo로 붙여넣기엔 불편했;;
-
결국은 우선은 4줄 정도로 20000바이트를 stdin에서 읽어서 stdout으로 뿌리는 프로그램을 만들어서 echo로 붙여 넣은 다음에 (나름대로 minicat;;) cat을 컴파일해 넣었습니다.
-
우선 cat을 복구했으니 그 다음엔 netcat을 붙여넣기 해서 netcat을 빌드했습니다.net/netcat에 있는 소스를 make patch한 다음에 netcat.c와 generic.h를 붙여넣어서.. 흐흐;
-
그 다음에는 5.1-RELEASE의 바이너리를 풀어서 전송을 하려고 했는데, 이리저리 찾아보니 ftp.tw.freebsd.org 가 거의 유일한 5.1이 살아있는 미러군용.
-
그래서 우선 복구할 바이오에서는nc -l -p 8888 | tar -C / -xzvf -하고, 보내는 호스트에서cat base.[ab]* | nc 호스트명 8888해서 /bin /sbin /usr/lib/ /usr/bin /usr/sbin을 복구했습니다.
-
이제 정상으로 ㅠ.ㅠ
므흐흐. 5.3-RELEASE!
그래서 이제 복구된 곳에서 tar로 한꺼번에 복사하기 수법으로 installworld를 해서 이제 5.3-RELEASE가 됐습니다~ 흐흐흐 +_+
1 2 |
sumomo(perky):~% uname -a FreeBSD sumomo.openlook.org 5.3-RELEASE FreeBSD 5.3-RELEASE #0: Fri Nov 5 20:26:08 KST 2004 root@sumomo.openlook.org:/usr/obj/usr/src/sys/GENERIC i386 |