FreeBSD 9월 상황 보고(Status Report) (상)

원래 2달에 한 번씩 나오는 상황 보고가 이번에는 좀 오랜만에 나왔네요. 다 읽기 귀찮은 분들을 위해 주요 부분만 간략하게 요약해 봅니다. :) 일단 오늘은 앞쪽 반만~

  • FreeBSD 블루투스 스택

    • Maksim Yevmenkin씨가 정력적으로 추진하고 있는 블루투스 스택 (netgraph 구현)

      은 ng_ubt(4)와 ng_hci(4), ng_l2cap(4) 커널 모듈이 계속 버그가 고쳐지고 있으면서 때때로 -CURRENT에 커밋되고 있습니다. 그리고, 또한 유저랜드 라이브러리인 libsdp(3)과 sdpcontrol(8)나 무선용으로 개조된 ppp데몬인 rfcomm_pppd(8)등 릴리즈 품질으로 계속 다가가고 있는 듯합니다. 그리고, 몇몇 자원자들은 FreeBSD 블루투스 스택을 NetBSD나 OpenBSD에 이식하려는 뜻을 보이기도 했으며, netgraph 의존적인 부분을 제거하는 작업도 스물스물 진행되고 있다고 합니다. (참고로, Maksim씨는 원래 코드를 커밋해 주던 담당 커미터가 이제 블루투스에 관심 없다고 하는 바람에 곧 직접 커미터가 될 예정입니다. :) )

  • ACPI

    • ACPI 새로운 기능이 들어오면서 생긴 버그들을 계속 고치고 있다고 합니다. 그리고, ACPI

      2.0을 지원하고 더욱 안정적 새로운 내장 컨트롤러 드라이버가 7월에 들어왔다고 합니다. 최근에는 devd(8)과의 연동이나 ASUS, 도시바 핫키 드라이버, Cx 프로세서 잠자기 상태 지원같은 것들이 작업 중에 있다고 합니다.

  • AMD64로의 이식

    • 마지막으로 릴리즈를 방해하던 한 버그가 고쳐졌다고 합니다. 그리고 SMP 지원도 거의 완성

      단계에 이르고 있고, 며칠 안에 커밋될 예정이라고 합니다. XFree86은 커밋된 MTRR 패치로 이제 동작할 수 있게 되었고, ezm3는 아직 포팅이 완성되지는 않았지만 cvsup은 잘 된다고 합니다. 아직 gdb 지원이나 DDB지원, amd64 리눅스 에뮬레이션, i386 FreeBSD 에뮬레이션 같은 기능들은 작업을 더 해야한다고 합니다. 몇몇 버그가 보고되기는 했지만, 현재 amd64 플랫폼에서 FreeBSD가 매우 안정적으로 작동하고 있는 편이라고 합니다.

  • ATAPI/CAM

    • ATAng가 들어옴으로 인해 ATAPI/CAM 사용자들은 그동안 몇가지 문제를 겪고 있었는데,

      오랫동안 숨어 있었던 버그 두개를 고치는 것으로 이제 보다 안정적으로 동작할 수 있게 되었고, DMA를 안전하게 켜서 성능을 향상할 수 있다고 합니다.

  • 바이너리 업데이트에 의한 보안 패치

    • 예전에 있었던 binup 프로젝트의 부활인 “FreeBSD Update”는 cvsup보다 적은 대역폭으로

      더 빠르고 안전하게 바이너리를 업데이트할 수 있도록 할 계획이라고 합니다. 이 프로젝트에 대한 내용은 논문을 읽어보고 곧 더 자세히 쓰도록 하겠습니다. :)

  • bsd.java.mk 2.0

    • Java 포트들 간의 조화된 환경을 위한 bsd.java.mk는 자동화된 JDK/JRE 빌드와

      실행 의존성 체크을 목적으로 2.0을 새로 개발하려고 하고 있으며, 여기서는 더 많은 JDK/JRE 들을 서로 조화롭게 사용할 수 있도록 개선할 것이라고 합니다.

  • 인텔 C 컴파일러로 FreeBSD 컴파일하기

    • NFS가 정상 작동하지 않고 IP가 불안한 것을 제외하고는 대체로 제대로 되는 편이라고 합니다.

      FreeBSD Project는 Intel로 부터 icc를 설치해서 사용하고, 빌드된 바이너리를 배포할 수 있는 정식 라이센스를 받았기 때문에 앞으로 FreeBSD 클러스터에 깔아서 더 많은 시도를 해 볼 것이라고 합니다. 또한, icc는 펜티엄4 최적화가 gcc에 비해서 아주 좋다는군요 :)

  • 암호화 지원

    • SafeNet 1141과 Hifn 7955, 7956 크립토 카드 지원이 추가되었습니다.

      Sam Leffler의 크립토 서브시스템에 대한 논문이 BSDCon 2003에서 최우수 논문상을 받았다는군요

  • 디스크 입출력

    • scsi-cd, atapi-cd, fd가 GEOM 드라이버에 편입되고 있는 중이라고 합니다. 그리고,

      소프트업데이트, 스냅샷 지원이 SPECFS에서 UFS/FFS쪽 코드로 옮겨지고 있습니다.

  • 동적 링크 루트 지원

    • WITH_DYNAMICROOT 플래그가 켜지면 다이내믹 루트가 설치가 되게 되었습니다. 좀 더 많은

      테스트를 거친 뒤에 5.2에서 디폴트로 갈 지 결정될 것이라고 합니다.

  • FreeBSD-Java

    • Sun으로 부터 인증된 정식 네이티브 환경인 Diablo JDK/JRE가 릴리즈되었습니다.

      머지 않아 JDK 1.4 지원이 가능해질 것이라고 합니다.

  • 포트(ports) 모니터링 시스템

    • 각 포트에 관련된 PR과 벤또 클러스터의 빌드 에러 보고, 빌 페너씨의 distfiles 조사같은

      것들을 한데 묶어 포트를 한꺼번에 모아서 볼 수 있도록 하는 작업이 진행 중이라고 합니다.

FreeBSD에서 iPod for Mac 사용하기

캬캬캬~ (환희에 넘쳐서;)

그동안 느리디 느린 iBook 500에서 싱크하느라 정말 고생했는데, 이제 드디어 해방입니다 만세 -ㅁ-; 지난 주에 1394카드를 사서 오늘 이제 서울로 돌아와서 시도를 해 봤는데. 잘 되는군요. ^_^*

제가 갖고 있는 iPod 2세대(터치 휠)는 맥용으로는 HFS+로 포맷되어있는 파이어 와이어 외장 하드디스크로 인식이 되는데, 다행히도 FreeBSD에서 iPod쓰려는 삽질러들의 노력으로 아주 간단하게 싱크가 가능하게 되었습니다. 먼저 준비물은, 올해 8월 이후의 -CURRENT가 필요한데, HFS패치때문에..

일단, firewire모듈은 지금 베이스에 통합이 되어 있어서 따로 넣어줄 필요는 없습니다. 그런데, HFS+ 파일시스템 지원 모듈이 아직 베이스에 통합되지 않았기 때문에 따로 인스톨을 해 줘야하는데 http://people.freebsd.org/~yar/hfs/ 에서 받으실 수 있습니다. 사실 요걸 8월 27일 이후 CURRENT에 설치하면, 컴파일이 중간에 하나 안 되고 뻑나는데 CFLAGS에 -DB_LOCKS=0을 넣고 컴파일하면 됩니다. 8월 27일 jeff의 커밋에서 B_LOCKS가 빠지는 바람에… 빼서 좀 불안하긴 하지만, 뭐 그런대로 잘 되는듯;

그 다음부터는 필요한 커널 모듈만 올려주면 바로 끼우기만 하면 됩니다.

으흐흐 이렇게 바로 마운트 해서 Contacts (iCal같은 데서 쓰는)의 vCard도 접근할 수 있고, mp3디렉토리에도 들어갈 수 있군요. 그리고, [FreshPorts]audio/gtkpod 를 사용하면 직접 iTunes처럼 관리도 할 수 있습니다! 흐흐

0310-gtkpod.png

그런데, gtkpod의 하나 다른 점은 플레이하면 직접 플레이하는 게 아니라 xmms를 호출한다는… –;;;

그리고, 언마운트할 때 마구 뽑아버리면 문제가 좀 많은데 반드시 언마운트하고, 이젝트하고, 그 다음에 리셋해준 다음에 뽑아줘야 한답니다.

이렇게 안 해주면 또 마운트하고 싶으면 리붓해야 하는 OS X에서랑과 같은 현상이 –; 아, 그리고, 파일 시스템이 UTF-8이긴 한데, 한글이 U+1100영역으로 분리되어서 들어가기 때문에 [FreshPorts]x11/gnometerminal 같은 걸로 보면 풀어쓰기한 것처럼 보이는데, 뭐 딱히 패치하기도 난감한 것이.. -.-;;; 그냥 그대로 써야겠네요..

으흐흐.. iPod for Mac 사용자 분들은 다들 한 번씩 시도해 보세요 =3

FreeBSD procfs 보안 취약점 발견

요즘 보안 버그가 종종 나오는군요~ 흐물흐물;;

FreeBSD에서는 사실 잘 사용되지는 않지만 procfs와 리눅스 호환성을 위한 linprcfs에서 보안 취약점이 발견되어, 커널 메모리가 일부 유출될 수 있다고 합니다.

구체적인 문제점은 procfs 읽기/쓰기요청에서 커널이 [FreeBSDMan]uiomove 를 사용하여 데이터를 옮겨주는데, struct uio안의 uio_offset이 음수이거나 엄청 큰 수면 커널 메모리가 유저의 접근이 허용되지 않은 메모리를 허용할 수 있다고 합니다.

procfs와 linprocfs는 일반적으로 FreeBSD에서는 디폴트로 꺼져있고 많이 사용되지 않기 때문에 일반적으로는 큰 문제는 없는데, [FreshPorts]sysutils/psmisc 같은 툴을 이용하려고 procfs를 마운트해서 쓰시는 분들은 얼른 업데이트 하셔야 겠네요..

Marcus의 첫 커밋 송~

Asami상이 있을 때 인기를 누렸던 ports/INDEX 커밋 송이 살아 돌아왔습니다. 흐흐.. Marcus씨의 작품~ (원곡 http://openlook.org/distfiles/portsfreezebaby.ogg 를 들으면서 같이 불러보세요~)

FreeBSD ARP 자원 고갈에 의한 DoS 약점 발견

이더넷이나 802.11 네트워크에서 하위 레이어의 프로토콜 주소를 찾기 위해 사용되는 ARP의 구현에 문제점이 발견되어서 보안 권고가 발표되었습니다.

http://lists.freebsd.org/pipermail/freebsd-security/2003-September/000989.html

구체적인 문제점으로는, 같은 네트워크에 물려있는 악의의 공격자가 스푸핑을 하면서 계속 ARP를 엄청나게 많이 때리면 자원이 고갈되면서 커널 패닉이 나는 것인데, 벌써 10년도 넘은 소스에서 발견된 문제점이라, BSD계열 전체에 적용됩니다. (이번 버그는 Apple에서 발견하였습니다.)

믿을 수 없는 공중 네트워크에서 혹시 사용하신다면 얼른 업데이트하세요~ 흐흐 패치할 수 없다면, static arp를 사용하거나 선을 뽑아버리는 방법이 있다고 합니다. -ㅁ-;;

멀티바이트 파일시스템 지원 두 번째

어제 대충 소식만 전했던 이무라씨의 파일시스템 멀티바이트 패치(사실은 iconv패치 쪽은 2바이트 전용) 체험담을 자세히 소개합니다. 흐흐

우선, 이 패치는 벌써 일본에서는 많이 쓰고 있다고 합니다. 200명 넘게 아무 문제 없이 쓰고 있다고 하니 안정성에서는 크게 걱정할 필요없을 것 같네요. 저도 사실은 9월 1일자 커널에다가 모듈만 컴파일해서 넣었는데도 잘 도는군요 크크;

패치하는 방법은 다운로드 받은 뒤에, /usr/src에서 patch -p0 <kiconv-5_current-20030921.diff하시면 되는데, 전부 성공해야합니다. 성공했는지 여부는 출력을 봐도 되지만 find . -name ‘*.rej’같은 명령으로도 검색하실 수 있구요. 그 뒤에, world가 옛날 소스라면 make world를 한 번 하시고, 최근 소스 그대로라면 /usr/src/lib/libkiconv에서 make install하고 /usr/src/include에서 make install하고 make kernel하시면 됩니다. (libkern이 바뀌었기 때문에 커널 전체 빌드하지 않으면 잘 안 됩니다. 흐물..) 그 다음에는 보통 커널 컴파일하듯 리붓 한판 하시고, 이제 msdosfs를 마운트하면 됩니다. 요렇게..

그러면 이제 /d가 euc-kr로 나오는 것을 볼 수 있습니다. 흐흐

간단하게 구현 내용을 보면, 어제 블로그에서 쓴 것이 잘못되었는데요 흐흐.. libiconv를 무시한 것이 아니라, libiconv에 xlat16 컨버터를 추가하고, libkiconv라는 유저랜드측 라이브러리가 mount_msdosfs같은 마운트 프로그램들에서 libiconv.so에서 16비트 컨버터 테이블을 만든 다음에 sysctl로 libiconv.ko에 전달해 주는 구조로 되어있습니다. 그래서, 결국은 다른 패치들도 msdosfs_iconv.ko등 _iconv가 달려있는 커널 모듈이 올라오면 컨버터가 전부 libiconv.ko를 쓰도록 패치됩니다. 제대로 된 구조죠 흐흐.

일단 Shift-JIS, Big5, GBK, EUC-KR같은 것 쓰는데는 큰 문제가 없다만, 문제는 16비트 테이블로 해결이 안 되는 UTF-8이나 EUC-JP같은 것들인데, EUC-JP는 파일시스템에서는 거의 안 쓰니까 빼고, UTF-8은 전에 했던 애플 패치를 한번 이무라씨의 패치와 합쳐볼 생각입니다. 흐흐. 어제 UTF-8패치 만들어 놨던 걸 메일링리스트에 올렸더니 trhodes@가 같이 Darwin msdosfs 머지 작업을 하자고 메일을 보내왔는데, 사실 유니코드 컨버트 외에 dirty mark같은 건 전혀 몰라서 -.,-; 수준 맞춰서 같이 할 수 있을 지 모르겠군요 으흐흐;

FreeBSD 멀티바이트 커널 모듈들 패치 대거 등장

전에 Blog0308/MsDosFsUtf8에서 혼자서 해놓고 좋다 그러고 있었던 패치에서 훨씬 더 나아간 전역적인 커널 패치를 류이치로 이무라씨가 방금 공개했습니다. 커헉~ 저 많은 패치를 소문없이 해버리다니 =3 =33

이무라씨의 패치 내용은 기존에 있던 libiconv 커널 모듈을 완전히 무시해버리고 새로 kiconv라는 라이브러리를 만들어서 kiconv를 이용하도록 cd9660, msdosfs, ntfs 커널 모듈에 패치해서 각각 CD9660_ICONV, MSDOSFS_ICONV, NTFS_ICONV 커널 옵션을 주면 iconv를 사용하도록 한다고 합니다. libiconv는 완전히 커널에서 다 해결보려고 한 반면에, kiconv는 유저랜드 라이브러리(보통 GNU libiconv)를 이용해서 테이블을 만든 뒤에, 테이블을 sysctl로 복사해서 쓴다고 합니다. kiconv의 방법은 빤히 한계가 드러나고 문제가 있긴 하지만.. libiconv 커널모듈도 디자인이 잘 된 편은 아니기에.. 임시방편으로는 뭐 괜찮기도 하겠네요 (-.-;;;;)

시간날 때 적용해 보고 더 자세한 것은 내일 또~ 이히..

요즘 FreeBSD 소식~

추석때문에 어느새 9월이 끝나가네요. (허억~ T_T)
요즘 FreeBSD의 주요 소식을 전해드리겠습니다~

  • FreeBSD 4.9 릴리즈가 좀 늦춰졌습니다. 현재 가끔가다가, ATA쪽에서 다운된다는 사람들이 메일링 리스트에 종종 있어서, 안정화를 좀 거친 뒤에 릴리즈하는 것으로 했는데, 한 2~3주 정도 늦어져서 10월 중에 최종 릴리즈가 될 듯 합니다. 포트는 계속 프리즈되어있는데, [FreshPorts]korean/nabi[FreshPorts]korean/gdick 새 버전을 넣어야 하는데 못 넣어서 아쉽네용~; 이번 릴리즈 엔지니어링이 꽤 길어져서 작년처럼 거의 2달 프리즈되어 있지나 않을까 걱정되는군요~ (사실은 프리즈되어서 얼마나 편한지 모른다 =3 =333)

  • [FreshPorts]security/openssh 가 두번째 나온 보안버그 패치가 되었습니다. 어제 블로그에서 말씀드린 3.7에서 보안 버그 패치가 완전하지 않아서, 3.7.1이 다시 오늘 릴리즈되었다고 합니다. Security Officer인 nectar가 아직 안 일어났는지 베이스에서는 패치되지 않았는데 뭐 오늘 중으로 되겠죠 흐흐..

  • BSDCon 2003이 끝났습니다. 이번엔 개발자 바베큐 파티도 하고 뭐 재미있는 것 많았다는데.. 저도 얼른 영어 잘 해서 그런데 가 봤으면 좋겠네요. :)

  • AsiaBSDCon이 대만에서 2004년 3월 15일에 개최된답니다. USENIX에서 공식적으로 개최하는 것이니 기대가 되긴 하는데, 어차피 영어로 해야하는 것 미국에서 하는 거나 별 차이 없지 않을까 생각도 되는군요 -.-;;; (아아아~~;;) 홈페이지는 http://www.asiabsdcon.org/cfp.shtml 입니다.

  • 5-STABLE에 점점 가까워지고 있습니다. 이제 KSE와 libthr모두 거의 문제가 보고 되고 있지 않을 정도로 안정화가 되었습니다. 빠르면 11월에 5.2가 릴리즈될 수 있을 것이라고 합니다. 그렇지만, 몇가지 성능상의 문제 때문에 API가 약간 바뀔 수 있고, dynamic root나 몇 가지 기능을 더 추가한 뒤에 5.3부터 안정버전으로 갈 확률이 높다고 합니다.

  • Poul Richards가 그동안 패키징되지 않고 그냥 타볼로 인스톨하고 make world로 업데이트했던 베이스를 패키지로 묶는 패치를 메일링리스트에 올렸습니다. 대체로 괜찮아 보이고 반응도 괜찮아서, 긍정적인 기대를 해도 될 듯 합니다. http://docs.freebsd.org/cgi/getmsg.cgi?fetch=299210+0+current/freebsd-ports

  • 바보 베리사인 리졸빙 문제: 베리사인이 며칠 전부터, 거의 넷피아 수준의 엽기 와일드카드 리졸빙을 루트서버에서 제공하기 시작했습니다. 이로 인해서, 없는 도메인들이 리졸빙되어 버려서, 여러 네임 서버들이나 네트워크 프로그램들이 정상적으로 에러처리를 하지 못하거나, 캐쉬가 바보가 될 수도 있는데, bind는 패치된 릴리즈가 공개되었고, FreeBSD도 4.9가 릴리즈되기 전에 고쳐질 수 있을 듯 합니다.

OpenSSH 원격 루트 보안 구멍 발견

All versions of OpenSSH’s sshd prior to 3.7 contain a buffer management error. It is uncertain whether this error is potentially exploitable, however, we prefer to see bugs fixed proactively.

방금 전에 (한국 시간 9월 17일 12시경) OpenSSH의 잠재적인 exploitable 보안 구멍이 발표되었습니다. OpenSSH 3.7 에서 이 버그를 수정하였으며, 지금 BSD들에서는 CVS에서는 모두 버그가 수정되었습니다. 아직 패치 안 하시고 BSD쓰시는 분들은 cvsup하시고 sshd만 다시 빌드하세요 ~.~