기본 콘텐츠로 건너뛰기

라벨이 freebsd인 게시물 표시

FreeBSD에 GNOME 환경 구축하기

불친절한 FreeBSD씨에게 억지로 화장을 시켜보려고 GNOME환경을 구축하려고 생쑈를 다 했네... 쩝. 1. 그놈 패키지 설치 $ pkg_add -r gnome2 2. GDM설정 $ vi /etc/rc.conf # 아래 줄 추가 dbus_enable="YES" hald_enable="YES" gdm_enable=YES" 3. PROC 파일 시스템 열기 $ vi /etc/fstab # 아래 줄 추가 proc    /proc    procfs    rw    0    0 4. 리붓해서 쓰면 끝. = _=; 아쒸... 이런 거 선택사항으로 해서 자동으로 잡아주면 좋겠고만... 원본 위치: http://purewell.egloos.com/4598429

'netstat -i'가 보여주는 오류패킷이란 뭘까?

FreeBSD에서 netstat -i 를 때리면 Ierr이랄지, Oerr이 나오는데, 이것이 뜻하는 바는 출입하는 패킷 중에 오류패킷이라는데, 어떤 패킷이길래 오류패킷이라는 것일까? 게다가 Ierr이 올라가면, 공격이라고 치겠지만, Oerr이 올라가면 이건 뭘로 설명해야할까? $ netstat -i Name    Mtu Network       Address              Ipkts Ierrs     Opkts Oerrs   Coll bge0   1500 <Link#1>      00:a0:d1:e4:0a:53 328040975     0 23123553    0     0 bge0   1500 192.168.196   tksstest          25797619     - 22999251     -     - bge1*  1500 <Link#2>      00:a0:d1:e4:09:69        0     0        0     0   ...

Debian FreeBSD

FreeBSD 포트 시스템 힘드네... Debian gets FreeBSD kernel support 아무리 날고 기는 패키지 관리 시스템이라도 내 손에 익지 않으면 그림의 떡일 뿐. FreeBSD Port System... 어려워... 문서도 못 찾겠고... 자꾸 Gentoo처럼 소스 받아다가 컴파일 하려고 하고... 그런데 데비안이 Linux 기반 배포판 말고 FreeBSD 기반 배포판도 만든다고 하니, 두 손 들고 박수 쳐줄께. 이제 FreeBSD 환경에서 apt-get만 하면 되는건가? (이미 FreeBSD 쪽에서 apt도 port 안에 넣어 놓은 것 같긴 하지만) Users might prefer a FreeBSD kernel to get support for certain features, such as Network Driver Interface Specification (NDIS) drivers and possibly Sun's ZFS file system, that might not be found on Linux, according to Debian developers. In a document defending kFreeBSD, they said some users have found FreeBSD to have better performance or stability than the Linux kernel . 요즘 시대에 OS 성능 견주기는 그다지 의미가 없을 것 같은데. 도토리 키 재기 아닐까? 서버 하나 당 어마어마한 트래픽을 받는 것이 아니라면, 손에 익은거나 관리하기 쉬운 OS를 선택할 것 같다. "kFreeBSD offers an alternative in case Linux is branded illegal by the SCO case or other threats," the developers wrote. "In legal terms, Linux sources are like a minefie...

FreeBSD 포트 시스템 힘드네...

외부와 결별한 PC에 FreeBSD를 깔았는데, 깜빡하고 vim을 깔지 않아서(현란한 구문강조가 필요해!) 이래저래 찾던 중 /usr/ports/editor/vim 폴더 발견! Makefile도 있길래, 무심결에 make 때렸더니 외부에서 소스 받아오려고 하다가 실패. 대충 다른 PC에서 받아서 FreeBSD에서 /usr/ports/distfiles 아래 적당히 넣고 다시 make. 또 의존성 필요하다고 다른 소스 내놓으라고 칭얼. 결국 XFree86까지 내놓으라고 칭얼. 힘든데? 어디 바이너리로 쉽게 까는 방법 없나. 굳이 gvim을 쓸게 아니면 XFree86쪽도 필요 없을꺼 같은데... 덧글: 아직도 설치 못하고 있다... orz OTL 원본 위치: http://purewell.egloos.com/4292954

친절하지 못하면 선택 받기 힘들다

요즘 후배가 FreeBSD 를 깔면서 며칠 째 고생하고 있다. FreeBSD 설치 화면이 윈도우즈 그것에 비교할 수 없을 정도로 불친절하기 때문이다. (물론 네트워크 성능 하나만큼은 미칠 듯이 좋지만) 2000년... 대학교 들어와서 처음 마주해본 리눅스라는 녀석이 지금 FreeBSD와 같았으리라. 그때도 배우기 싫고, 불친절한 녀석과 마주하기 싫었다. (지금은 밥벌이의 매우 소중한 존재가 되었다) 그랬던 녀석이 지금은 윈도우즈와 비슷하게 화려해지고 친절해졌다. 번역문서도 엄청 많아졌고, 같이 이야기를 나눌 수 있는 상대도 많아졌다. 정말 많이 친절하고 좋아졌다. 반면 FreeBSD는 어떠한가. 물론 FreeBSD 역시 번역문서도 제법 있고, 철학 자체가 군더더기 없는 OS라고 하지만, 초보자가 언뜻 다가서기엔 너무나 먼 당신 이다. 물론 닥치면 내가 2000년에 만난 리눅스처럼 강제로 배우겠지만, 그렇지 않으면 윈도우즈나 리눅스를 선택할 것이다. 이거 왠지 케케묵은 어떤 OS가 더 좋냐 식의 떡밥이 될 수도 있겠지만, 말하고자 하는 바는 OS 성능이 아니라 UX 를 말하고자 하는 것이다. 친절하지 못하면 선택 받기 힘들다. 원본 위치: http://purewell.egloos.com/4002541

POSIX shared memory

일전에 언급한 SysV 에서 처음으로 세상에 내동댕이 쳐진 IPC 집합 가운데에서 공유메모리부터 보겠다. SysV가 가진 API는 POSIX.1-2001에도 올라와 있는 녀석이긴 하다. 함수는 shmget, shmat, shmdt, shmctl 등이 있다. 엄청나게 유명한 녀석이기 때문에 따로 자세히 설명하지 않겠다. shmget으로 공유메모리를 커널에 요청한다. 그럼 커널일 공유메모리객체를 만들기만 할 것이고, shmat을 통해 실제 프로세스 메모리에 공유메모리를 쳐바를(attach) 수 있다. shmdt는 쳐바른 공유메모리를 떼어내는데(detach) 사용하고, shmctl은 공유메모리객체를 정리하거나 기타 객체를 조작하는데 잠깐 이용한다. - 설명끝 - shm_open은 SysV와 별도로 POSIX.1-2001에 올라온 녀석인데, 역사는 잘 모르겠고(2001년에 나왔겠지~ 하하하~), SysV용과 달리 메모리 사용량 조절이 가능하다. 왜냐구? 파일이니까. shm_open는 UNIX가 가지고 있는 open함수와 매우 흡사하며, 결과값 역시 FD를 내놓는다. 파일을 다루는 각종 함수를 사용할 수도 있고, mmap 함수를 이용해서 shmat처럼 프로세스 메모리 공간에 쳐바를 수도 있다. 문제는 공유메모리라는 '파일'이 어디에 만들어지는지 모르기 때문에(OS마다 달라!) shm_unlink라는 함수도 별도로 제공한다. 일단 생김새는 open함수와 비슷하다. int shm_open(const char* name, int oflag, mode_t mode); name은 공유메모리객체의 이름이 들어간다. 맨페이지에 따르면, 어디든 포팅하기 쉽게 사용하려면 슬래시가 맨 처음에 단 하나만 들어가는 이름을 사용하라고 한다. (예: /myshare.shm) oflag는 이것을 읽기용, 쓰기용, 생성, 이미 있으면 잘라버릴지를 결정한다. 플래그는 O_RDONLY, O_RDWR, O_CREAT, O_EXCL, O_TRUNC 등이 있다. mode는 접근제어로 ...

FreeBSD SSL 컴파일

$ g++ ssltest.cpp -o ssltest -lssl /usr/lib/libssl.so: undefined reference to `BIO_find_type' /usr/lib/libssl.so: undefined reference to `EVP_enc_null' /usr/lib/libssl.so: undefined reference to `EVP_CIPHER_CTX_init' ... Linux에선 ssl 만 링크해도 괜찮은데, FreeBSD에선 crypto 도 링크해야 한다. orz OTL 원본 위치: http://purewell.egloos.com/3863211

FreeBSD 5.3 ~ 6.2 Release Note 주요 관심

딱 내 기준으로 주요 관심사... 5.3 System V Shared Memory interface 버그 수정 - 공유메모리 세그먼트가 유효하지 않은 커널 메모리를 참조할 수 있음. FreeBSD TCP 스택에 LB-DoS 공격 가능성 제거. contigmalloc(9)을 재구현하여 효율이 매우 높아짐. mballoc을 mbuma로 대체함. NMBCLUSTERS 옵션이 커널에서 더이상 쓰이지 않음. RFC3042(Limited Retransmit), RFC3390(Increased Initial Congestion Window Sizes), TCP bandwidth-delay product limiting 등 기술이 TCP 기본 옵션 채택. 최소 MSS 지원을 TCP구현에 포함. 짧은 시간에 대량의 작은 TCP 세그먼트 처리율 조정 가능. ( net.inet.tcp.minmss ) RFC2018(SACK) 구현으로 TCP에서 대량의 패킷 손실 처리 성능향상 i386, amd64, ia64 시스템에서 libkse가 libpthread로 명칭을 바꾸고, -pthread 컴파일 옵션 시 기본 쓰레드 라이브러리로 지정. 5.4 IPI(Inter-Processor Interrupt) 버그 해결. SMP시스템에서 부하가 클 때 시스템 다운 현상 해결. em(4) 드라이버에서 VLAN 태킹 하드웨어지원을 기본으로 선택하지 않음. 수신 윈도우가 0일 경우, TCP의 RST패킷을 무시하는 버그 수정. TCP SACK 버그 수정. 무수한 libpthread 버그 수정. 5.5 HTT(Hyper-Threading Technology) 기본 활성화. ( machdep.hyperthreading_allowed ) 2개의 TCP버그 수정(보안관련) - ( FreeBSD-SA-05:15.tcp ) 커널메모리 버그(보안관련) - ( FreeBSD-SA-06:06.kmem ) TCP의 SACK에서 무한 루프 버그 수정. 7, 8세대 AMD CPU 지원. Dual-core 프로세서를 SMP관...

FreeBSD: Limiting open port RST response from xxx to 200 packets/sec

FreeBSD에서 /var/log/message 안에 "Limiting open port RST response from xxx to 200 packets/sec" 라는 메시지를 볼 수 있다. 외부로부터 잘못된 SYN요청이 과도하게 들어와서 RST로 응답하는 회수를 초당 200건으로 제한했다는 의미이다. 이게 SYN 공격을 통해서 발생할 수도 있지만, 의도치 않게 네트워크 상황에 따라 발생할 수도 있다. 예를 들어 해외에 NAT로 묶인 망이 있고, 그곳에 서비스 이용 클라이언트가 3,000개(순단 시 자동으로 재접속 시도가 있다는 것도 가정!)가 있다는 가정을 해보자. 해외망 특성상 네트워크 순단이 숨쉬기보다 조금 덜 발생 하는데, 위에서 말한 망이 살짝 순단일 경우 동시에 3,000개 접속(session)이 떨궈진다. 이때 거의 한정적인 아이피 - NAT에 묶여 있으니 - 에서 많은 SYN이 발생할 것이다. 게다가 이런 경우 심심치 않게 중간 망이나 NAT쪽 망이 갑자기 부하가 몰려 장비가 앉았다 일어났다를 빠르게 반복할 수도 있다. NAT에 묶인 클라이언트 OS는 connection timeout를 뿜기 전에 SYN을 몇 번 더 보내볼 것이고... 덕분에 서비스를 제공한 서버로 의도와 상관 없이 DDoS SYN attack을 날려주는 멋진 결과를 선사한다. 공격이라고 생각한다면 tcpdump를 이용해서 패킷을 걸러내는 문서 를 참조해보자. Powered by ScribeFire . 원본 위치: http://purewell.egloos.com/3513098

FreeBSD에서 shm_open은 open일 뿐이다.

Linux에서 잘 써먹고 있는 파일처럼 쓸 수 있는 shared memory interface인 shm_open. 이게 표준안(POSIX.1)에 있길래 아무런 의심 없이 잘 썼지. 그런데 아쉽게도 FreeBSD에서 이 녀석은 단순히 open을 wrapping한 것일뿐. 즉, 그냥 일반 파일을 조작하는 것에 불과하다는 것이지. 현재 FreeBSD 6.2가 나왔지만 FreeBSD에서 제공하는 man page 에는 아직도 래핑함수라는 걸 명시하고 있네. In the FreeBSD implementation, POSIX shared memory objects are implemented as ordinary files.  The shm_open() and shm_unlink() act as wrappers around the open(2) and unlink(2) routines, and path, flags, and mode arguments are as specified for those functions.  The flags argument is checked to ensure that the access mode specified is not O_WRONLY (which is not defined for shared memory objects). 에구구... 안타까워라. 실제로도 FreeBSD에서 shm_open하면 실행한 디렉토리에 바로 파일이 만들어지네... Powered by ScribeFire . 원본 위치: http://purewell.egloos.com/3502714

FreeBSD::errno

EPERM 1 Operation not permitted ENOENT 2 No such file or directory ESRCH 3 No such process EINTR 4 Interrupted system call EIO 5 Input/output error ENXIO 6 Device not configured E2BIG 7 Argument list too long ENOEXEC 8 Exec format error EBADF 9 Bad file descriptor ECHILD 10 No child processes EDEADLK 11 Resource deadlock avoided 11 was EAGAIN ENOMEM 12 Cannot allocate memory EACCES 13 Permission denied EFAULT 14 Bad address ENOTBLK 15 Block device required EBUSY 16 Device busy EEXIST 17 File exists EXDEV 18 Cross-device link ENODEV 19 Operation not supported by device ENOTDIR 20 Not a directory EISDIR 21 Is a directory EINVAL 22 Invalid argument ENFILE 23 Too many open files in system EMFILE 24 Too many open files ENOTTY 25 Inappropriate ioctl for device ETXTBSY 26 Text file busy EFBIG 27 File too large ENOSPC 28 No space left on device ESPIPE 29 Illegal seek EROFS 30 Read-only filesystem EMLINK 31 Too many links EPIPE 32 Broken pipe EDOM 33 Numerical argument out of domain ERANGE 34 R...