원격 업그레이드 하다가 뻑난 시스템 복구하기

흐흐.. 여전히 야근하고 바로 외근갔다가 또 집에서 잠자고 출근해서 야근하고 또 외근가는 루프를 돌고 있는 중이라 블로그를 계속 쓸 여유가 잘 안 나네요;; 흐흐

바이오에 프비를~

오늘은 이번에 산 랩탑에다가 윈도우쪽 세팅은 완료하고, 프비를 인스톨했습니다~ 그런데, 갖고 있는 프비 씨디가 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을 빌드했습니다.[FreshPorts]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가 됐습니다~ 흐흐흐 +_+

archivers/unalz 포트 추가

웹 디자이너들은 꼭 파일을 달라면 alz로 묶어서 줍니다. 이건 대체 풀 방법도 마땅찮고 윈도우에서도 XP에 내장된 셸 압축 프로그램으로도 안 되고 해서 참 짜증나기가 이루 말할 데가 없는데.. 흐흐 그래서 [FreshPorts]archivers/alz2zip 을 전에 한번 그냥 장난으로 만들었다가.. 오히려 그런 제대로 돌아가지도 않는 스크립트를 왜 포트에 넣었냐는 핀잔이나 ;; -ㅇ-

하여간 [WWW]unalz라는 유틸리티가 포터블하도록 POSIX에서도 컴파일 가능하게 포팅되었다고 하기에, (게다가 BSD라이센스로) 밤샘 도중에 잠시 짬을 내서 포트로 만들어서 넣었습니다. [FreshPorts]archivers/unalz 흐흐 별로 복잡한 alz는 안 해봤지만 전에 디자이너한테 받은 alz는 잘 풀리는군요; -O-

그리고 이제 별로 alz2zip은 쓸모가 없어져서 지웠습니당~

오늘 FreeBSD 5.3 브랜칭

오늘 드디어 [WWW]FreeBSD 5.3의 릴리스 브랜치가 찍힙니다. 이름은 RELENG_5_3인데, 그동안 몇가지 지연되고 있던 MFC들이 완료되어서 오늘 10월 16일 오후 6시 (한국시간)에 약 1시간 정도 브랜칭 작업을 할 듯 합니다. 아직도 5.3 릴리스를 위한 이슈가 몇가지 있는데, [FreeBSDMan]accept 의 레이스 컨티션 문제, [FreeBSDMan]if_de 의 너무 느린 속도, proc0의 스왑이 너무 느린 문제 같은 것들이 릴리스 전에 해결되어야 한다고 합니다. 공식적인 스케줄로는 RELENG_5_3 브랜칭이 10월 7일이었는데 오늘 약 9일정도 지연되었으니 아무래도 최종 릴리스도 그정도 밀린 10월 말쯤에 FreeBSD 5 최초의 안정판 릴리스인 5.3이 최종 릴리스가 될 것 같군요.. :)

FreeBSD 포트 프리즈 풀림

원래 1주일 예정이었지만, 실제로는 엄청나게 길어졌던 5.3 릴리스를 위한 포트 프리즈가 반쯤 풀렸습니다. 이번 5.3 릴리스 엔지니어링 과정은 정말로 별의 별 문제가 다 발생해서 계속 지연되고 있는데, 포트에서도 막판 soversion 범프, bind9 업데이트 등등이 있었고, 소스쪽에서는 이상한 곳에서 쓰레드가 행 돼 버리는 문제라던지, gdb 문제라던지 뭐 이것저것 늘 봐왔던 꼭 essay topic generator같은 류의 생성기로도 만들 수 있을 것 같은 문제들이 골고루 나왔습니다.;;

5.3 스테이블 태그는 몇가지 MFC로 인해서 약간 지연되고 있고 늦어도 11월 중에는 나올 것 같군요. 그동안 바쁘기도 하고 approval받기도 귀찮고 해서 쌓아뒀던 패치들을 넣어야 겠네요; 파이썬도 서지원님께서 2.4b1 릴리스를 막고 있던 치명적인 문제를 수정하시는 덕분에 곧 릴리스가 될 듯 합니다. :)

《The Design and Implementation of FreeBSD Operating System》 도착!

0408-dnifreebsd.jpg

드디어 고대하던 그 책 D&I of FreeBSD가 도착했습니다! 미리 아마존에 예약을 했는데도 꽤 늦게 도착을 했네요.. 영업일 3~5일이라더니 실제로는 8일째에 도착을.. ㅠ.ㅠ

아아 처음 딱 받은 소감은?

오우. 뭔가 패키징이 감동입니다. 역시 국내 배송과 해외 배송은 좀 다른 걸까요.. 비닐 공기 팩으로 꽉 채우고 책 자체도 안 움직이게 골판지를 대서 비닐에 싸놨군요. 전에 아마존 재팬에서 DVD 살 적에는 제법 허술하게 와서 실망 했었는데.. 흐흐. 역시 책이라 그런지 10만원 이하라 그런지 관세는 따로 없군요. 표지가 검은색에 오렌지라 4.4BSD 책 보다 뭔가 뽀대가 납니다. -O-

전체적인 구성은?

책 안의 디자인은 4.4BSD 책과 거의 똑같습니다. groff류의 툴들을 쓴 게 그대로 그냥 개정된 것이라 그런지.. 여전히 글자는 좀 지나치게 빡빡한 면이 있고 한데.. 뭐 빡빡한 대신 내용에 비해 얇아져서 그런대로 들고 다니면서 보기도 좋은 것 같은 것으로 위안을.. 흐흐; 역시 4.4BSD 책의 후속편 답게, 많은 부분에서 4.4BSD책을 기반으로 쓴 흔적이 남아 있습니다. 그렇지만 아무래도 세월이 많이 지나고 내부 구조가 바뀌다보니 뒷부분으로 갈 수록 새로 쓴 부분이 많아져서, 전체적으로 보면 FreeBSD 5.2 커널의 반 정도는 커버하고 있다고 볼 수 있겠네요. 이번에 실질적으로 내용을 쓴 Neville-Neil씨가 원래 글을 잘 쓰는지, 딱딱하고 지루하기 짝이 없는 4.4BSD 책의 문체에서 많이 벗어나서 쉽고 눈에 잘 들어오는 문체로 대폭 개선된 듯 해서 아주 읽기가 편합니다.

FreeBSD 고유의 업데이트들은 잘 반영이 되었는가?

우선, 최근에 등장한 FreeBSD 고유의 디자인들인 CAM, GEOM, ULE scheduler에 대해서는 어느정도 잘 다루고 있고 특히 softupdate와 UFS2에 대한 내용은 최근 업데이트까지 모두 아주 자세히 설명하고 있습니다. 그런데, KSE, netgraph, kld, 802.11, ipfw, acpi 같은 부분은 제법 관심이 있을 만한 주제인데도 빠져 있어서 조금 아쉽군요.

책의 난이도 및 구성의 품질은?

책의 난이도는 4.4BSD 책보다는 설명이 쉽게 되어 있어서 이제 어느정도 학부 교재로도 쓸 만큼 되었습니다. (앞쪽 책 소개란에 학부 교재로 쓰면 어떤 숙제가 좋은 가 얘기도..;;) 그런데 아무래도 OS의 기초부터 뭔가 다루는 책은 아니니까.. 그냥 부교재 정도로.. -o-; 비슷한 소재의 책 중에서 단연 최고의 인기인 《Solaris Internals》에 비해서는 FreeBSD 고유의 독창적인 디자인들과 FreeBSD를 소재로 쓰여져 있다는 장점은 있지만, 여전히 Solaris Internals가 그림이 훨씬 알기 쉽게 그려져 있고 설명이 친절해서, FreeBSD에 애착이 있는 독자가 아니라면 그냥 《Solaris Internals》가 읽기 좋을 것 같다는 생각이 듭니다. 책 중 8페이지가 연속으로 그림, 소스, 표 전혀 없이 본문만 연속될 때는 마치 오픈룩 블로그처럼 삭막하다는 압박감이 느껴지는군요. -O-

예~ 전체적으로 지난 버전에 비해 개선되고 재미있어졌지만 약간 아쉬운 점도 있습니다. 그래도 BSD 사용자라면 꼭 한 권쯤은 사 둬야 할 책인 듯 하네요. 버스에서 슬쩍슬쩍 읽어보는데도, 참 “아 내가 이렇게 생긴 OS를 쓰고 있었군~!”하는 느낌이 새록새록.. (4.4BSD는 좀 읽다가 포기 –;;)

FreeBSD 5.3 Beta1 릴리스

FreeBSD 5의 첫번째 안정버전 릴리스인 [WWW]5.3의 Beta1이 나왔습니다. 아직 5.3에서도 완전하지 않은 기능들이 많이 있지만, 그래도 계속 CURRENT로 남겨둬 봐야 계속 불안정한 것들이 들어올 것이니 언젠가는 적당히 STABLE로.. 흐흐.. 아직 SMP지원에 문제가 있기 때문에 SMP 사용자는 BETA2까지 기다리 라는군요.

이제 openlook도 5.3-BETA1로 올려야겠군요~ :) 참, 그리고 Python 2.4a2는 9월 2일에 나올 예정입니다.

The D&I of FreeBSD 드디어 출고!

어제 갑자기 이상한 해외 결제 하나가 핸드폰 신용카드 결제 알림 SMS로 왔는데~ 뭔가 가격이 꽤 쎄길래 궁금했었는데. 드디어, 몇달 전에 예약한 D&I of FreeBSD [ISBN-0201702452]가 출고되면서 결제된 것이군요! 이히이히. 일단 기본적인 배송 방법은 뭔가 기다리기가 지루할 것 같아서, 중간 속도의 배송 방법으로 했는데, 8월 9일~8월 13일 도착 예정 이라는군요. 아이 설레서 잠을 못 자겠넹. 크크; :)

gcc 3.4 임포트로 인한 포트 뷁

몇주 전쯤에 커런트에 gcc 3.4가 들어오면서, gcc 마이너 버전이 올라갈 때마다 있는 행사인 포트 대량 깨짐이 일어났습니다. gcc가 점점 더 문법이 빡빡해 지는 것 같군요.. 3.0에서 3.1로 올라갈 때는 정말 엄청났던 기억이 납니다 흐흐; (2.95에서 3.0으로는 빌드 고치는 PR 만 수십개를 올려서 한달만에 포트 커미터가 된 사람이 여럿 나올 정도였긴 하지만;; )

이번에 제 포트 중에서는 [FreshPorts]graphics/py-gdchart[FreshPorts]archivers/py-lzma 가 깨졌다고 kris가 벤또를 통해서 알려왔는데, py-gdchart는 switch문 안에서 default뒤에 스테이트먼트 없이 그냥 끝내는 바람에 에러가 났던 것이고.. (이게 왜 그동안은 컴파일 됐던 것이지 흐흐;;) py-lzma의 경우에는 무지 신기한 에러라서 고치긴 했는데 왜 이렇게 하면 고쳐지는지 이해도 못 하고 있습니다. (사실은 C++을 할 줄 몰라서;;)

그게 어떤거냐면~ 소스가 대충 이렇게 되어있습니다.

정말 이상하게도 *여기1* 부분에서 Probability가 멤버임에도 불구하고 그냥 Probability라고 쓰면 undefined라고 에러가 납니다. 그래서 this->Probability로 고치는 걸로 해결했는데.. –;; 왜 그러면 또 되는지~ 흐흐.. 그리고 *여기2* 부분에서도 UpdateModel이 부모 클래스인 CBitModel의 메쏘드인데도 또 undefined라고 그래서.. 그것도 this->UpdateModel로.. 우엑~ gcc 3.4의 미스터리인지.. 원래 템플릿을 쓰면 그런건지 잘 모르겠네요 *.*

FreeBSD 개발자들의 분포

최근 FreeBSD에 프랑스인 개발자들이 엄청나게 불어나면서, 한 사람 한 사람 들어올 때 마다 다른 프랑스인 개발자들이 세계 정복이 다가오고 있다면서 아주 프랑스어판을 한번씩 만들어 버립니다. 흐흐; 그런데, 프랑스인이 많긴 많은데, 진짜로 많은가 이번엔 Ruslan이 직접 [WWW]calendar.freebsd를 기반으로 통계를 냈군요.. 물론 여기에 등록 안 한 개발자들도 있기 때문에 약간 모자라는 값이긴 하지만.

출생 국가별

미국

55

일본

19

소련(연방국가 전체 합계)

18

독일

17

영국

12

프랑스, 오스트레일리아

7

캐나다

6

중화민국(대만)

5

덴마크

5

아일랜드

4

네덜란드, 남아프리카공화국, 이탈리아, 오스트리아

3

에스파냐, 그리스, 브라질, 벨기에, 대한민국

2

짐바브웨, 스웨덴, 중국, 노르웨이, 핀란드, 동아프리카, 불가리아

1

FreeBSD 개발자가 지금 350명쯤 되니까 대충 1/3정도만 계산된 수치이군요..

Ruslan은 그 외에 출생월, 출생년 별로도 통계를 냈는데 이렇게 나왔습니다.

5월

22

7월

21

3월

21

2월

20

8월

17

1월

16

6월

14

4월

14

9월

12

12월

10

10월

10

11월

9

9,10,11,12월이 다른 달에 비해 현저히 낮게 나온 걸 보면 뭔가 가을~겨울 사이에 태어난 사람들은 FreeBSD 개발자가 되기에 뭔가 어려운 것이 있나봅니다;;

그리고, 생년 별로는

(상위 10년만 뽑은 것)

1976년생

16

1978년생

14

1972년생

14

1974년생

13

1981년생

12

1980년생

12

1977년생

11

1970년생

8

1979년생

7

1983년생

6

평균 연령은 30.65살이고 가장 나이가 많은 사람은 Greg Lehey가 1948년 9월생, 가장 어린 사람은 Hiten M. Pandya가 1986년 9월생입니다. :)

새로운 한국의 FreeBSD 커미터!

오늘 드디어 한국 사람으로는 최초로 소스 커미터로 [WWW]편용현씨(yongari@)가 등록되었습니다. 그동안 pf 포팅을 하시면서 Max Laier를 통해서 소스를 넣고 계셨는데, 이제 쉽게 pf 커밋을 직접 하실 수 있게 되었군요. :)

developers@에 보내신 소개말씀에 따르면 네트워크 스택, 패킷 필터링, 디바이스 드라이버와 sparc64포팅에 주로 관심이 많이 있으시다고 그러시는군요. 멘터는 5.x 릴리스 엔지니어인 Scott Long씨가 맡아 주고, 아마 sparc64부분에서 Jake Burkholder씨가 코-멘터링하는 것 같습니다.

이제 다음엔 도큐먼트 커미터가 나올 차례인가요? :)