FreeBSD 한글판 2.2.1-RELEASE CD-ROM 기사 - 3장 이후 3. FreeBSD로 부팅하자! 이제 부팅하는 화면이 나올 것이다. 여러분들이 만약 FreeBSD부팅 프로그램인 booteasy를 선택하였다면(파티션에서 BootMgr을 선택했다면), 일단 booteasy가 여러분을 반길 것이다. 3.1 FreeBSD Boot Manager, booteasy booteasy는 LILO가 리눅스에서 쓰이듯이 FreeBSD에서 멀티부팅을 위해 쓰이는 프로그램이다. 이 프로그램은 이전에도 말했듯이 작고 간편하다. booteasy가 뜨면 다음과 같은 말이 나온다. 나오는 내용은 꼭 일치하지 않을 수도 있다. ------ F1 . . . DOS F2 . . . BSD F5 . . . Disk 2 Default: ?? ------ 현재 상황은 booteasy가 처음 가동되었고, 부팅한 드라이브의 첫번째 기본 파티션에는 도스가, 두번째 기본 파티션에는 BSD시스템(여기서는 FreeBSD)이 있다는 말이다. 하지만, 여러분은 이미 자신의 FreeBSD시스템이 어디에서 부팅하고 있는지 알 것이다. 만약 F2에 BSD라고 나온다고 해도, 다른 드라이브에서 부팅하도록 했다면, 그건 단지 아무것도 아니거나, 파티션을 할 때 None이라고 제대로 해 주지 않아서 그런 것이다. 하지만 걱정할 필요 없다. 안누르면 되니까. 만약 여러분이 물리드라이브 2에 부팅할 수 있는 FreeBSD파티션이 있다면 드라이브를 전환해 주어야 한다. 드라이브 전환은 F5로 한다. 이제 다음과 같은 화면이 나오게 된다(하지만 여러분이 시스템을 어떻게 설치했는지는 여러분만이 안다. 필자는 단지 예를 제시하고 있을 뿐이다). ----- F1 . . . BSD F2 . . . BSD F5 . . . Disk 1 Default: F1 ----- Default에는 보통 부팅할 수 있는 지점이 온다. 여러분의 부팅 파티션이 물리 드라이브 2의 첫번째 기본 파티션이었다면, F1를 누르면 된다. 마음이 바뀌어서 다시 도스로 부팅하고자 한다던가, 드라이브가 더 있다던가 하면 F5를 누르면 다음 드라이브나, 2개만 있다면 다시 첫번째 드라이브로 돌아간다. booteasy는 여러분이 누른 마지막 순서를 기억한다. 따라서 이전에 FreeBSD로 부팅하였다면, 다음에 부팅할 때는 단지 ENTER만 계속 치면 이전에 누른 파티션으로 자동적으로 찾아간다. 다른 OS로 부팅하고 싶을 때만 다시 펑션키로 옮겨다니면 된다. booteasy는 DOS/Win95, OS/2, FreeBSD, Linux, MINIX, Xenix, SVR4, Windows NT등등을 다중부팅시킬 수 있는 능력을 가졌다. 따라서 이들 시스템을 사용하고 있던 중 FreeBSD를 새로 설치했다면 그대로 사용하면 되지만, 리눅스와 함께 쓰고 싶다면, LILO를 MBR에서 부팅 파티션의 부트섹터로 옮기어 주기 바란다. 만약 FreeBSD를 사용중에 윈도우즈95를 다시 설치하는 일이 생기면 booteasy는 지워진다. 이 경우에는 CD의 tools/bootinst.exe를 도스상태에서 실행하면 다시 설치해 준다. 그런데 이 프로그램은 부트섹터를 바꾸는데, 바꾸는 부트섹터를 저장할 공간이 필요한 관계로, CD에서 직접 실행하면 작동하지 않는다. 이때에는 bootinst.exe와 같은 디렉토리의 boot.bin을 적당한 디렉토리에 복사하고, 이를 실행하기 바란다. bootinst는 하드디스크의 파티션 구조를 보여주면서 booteasy를 인스톨할것인지를 묻는데, 부팅하는 디스크와 FreeBSD 부트 파티션이 있는 디스크에서 모두 yes라고 해 주면 된다. 이제 시스템이 제대로 가동되었다면, 미리 만든 id와 암호를 입력하고 로그인하자. 다음과 같은 식으로 로그인 화면이 나올 것이다. ----- FreeBSD (moderato.snu.ac.kr) (ttyp0) login: junker Password: Last login: Mon Apr 14 21:47:06 from moderato Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD 2.2.1-RELEASE (GENERIC) #0: Tue Mar 25 15:12:02 GMT 1997 Welcome to FreeBSD! If the info distribution has been loaded on this machine, the FreeBSD Handbook will be in file:/usr/share/doc/handbook and the FAQ in file:/usr/share/doc/FAQ Type /stand/sysinstall to re-enter the installation and configuration utility. HOW YOU CAN TELL THAT IT'S GOING TO BE A ROTTEN DAY: #32: You call your answering service and they've never heard of you. moderato:~% ------ 이제 성공적으로 돌아가는 FreeBSD시스템을 설치하였다. 만약 설치후 설정(Configure)나, 다시 깔아야겠다는 생각이 난 패키지나 배포폰이 있는가? 그럴때에는 루트로 로그인해서, 위 메시지에도 있듯이 단지 ------ # /stand/sysinstall ------ 이라 입려하면 그만이다. 인스톨 프로그램이 다시 실행될 것이다. 아까 X윈도우까지 설정이 끝났다면, 지금 당장 X윈도우를 실행해 볼 수 있다. ------ moderato:~% xinit ------ 그러면, 한글 애프터스텝과 한양폰트, 한텀을 설치했다면 다음과 같은 화면을 볼 수 있을 것이다. 이것들은 kr-userskel패키지에 모두 들어있던 것들이다. 이를 기반으로 해서 원하는 화면을 꾸며 보기 바란다. 이 패키지는 필자의 환경을 기준으로 작성된 것이어서, 해상도가 다르다던가 하면 화면이 이상하게 되는 경우가 있을 것이다. 하지만 개인의 환경을 작성하는 것은 개인이 몫이므로, 스스로 멋진 화면을 꾸며 보자. 4. 한글환경에 대해 이 CD의 제작에 있어서 가장 염두에 둔 것은 FreeBSD에서 되도록이면 편한 한글환경을 구축하는 것이었다. 따라서 이를 제대로 사용하려면 몇가지 이해가 필요하다. 이들 대부분은 어느 유닉스와도 같은 점이 많지만, 그렇지 않은 부분들도 많이 있음을 생각해 주면서 이 장을 읽기를 바란다. 4.1 2.2.1-RELEASE의 한글환경 2.2.1-RELEASE자체만 놓고 볼때 한글환경은 보통 영문 리눅스 배포본 정도라 생각하면 된다. 이미 한국어 ko_KR.EUC로케일이 ja_JP.EUC(일본어)와 함께 2.2-GAMMA부터 볼 수는 있었지만, 정의만 되어 있을 뿐 사용할 수 없는 단계였고, 한국사람이 많이 쓰는 프로그램들은 포팅되어 있는 것이 없었다. 그러나 이 CD에서는 korean디렉토리에 많은 한글관련 프로그램 패키지들과, 그에 대응하는 소스 트리인 port를 얻을 수 있다. 4.2 패키지 패키지는 앞에서 언급했던 korean패키지 34개 중 31개하고 audio의 splay가 이번에 새로 만들어진 것이며, 이 중 5개의 패키지는 port를 작성하지 않고 손으로 만들어진 것이다. 그런 이유로 이들은 아마 나중에라도 FreeBSD의 공식 FTP사이트들에서는 볼 수 없을 것이다. port에서 만들어지지 않은 패키지는 다음과 같다: - kr-hanx-3.2a1 - kr-localefix-ko-1.0 - kr-sendmailsetup-1.0 - kr-userskel-1.0 - kr-xaw-6.1i18n 이들은 대부분 시스템 자체를 직접 고치거나, 소스에서 만들기가 너무 복잡하여 손으로 만들고 만 것들이다. 4.3 locale 로케일이란, C라이브러리에서 각국의 언어/문화차이에 대한 표기와 캐릭터 셋이 차이나는 것을 보완하기 위한 국제화의 한 방편이다. locale에는 전체를 통제하는 LANG, 캐릭터 셋을 나타내는 LC_CTYPE, 시간계를 나타내는 LC_TIME, 화폐를 나타내는 LC_MONETARY등등이 있는데, FreeBSD의 로케일시스템은 리눅스보다는 나아 보이지만, 그렇다고 아직 완벽한 수준은 아니다. 하지만 시스템이 로케일을 지원한다는 것은 여러모로 쓸모가 많은 일이다. 4.3.1 C locale 만약 여러분이 LANG환경변수를 ko_KR.EUC로 맞추고 perl-5.003등을 실행한다면 다음의 메시지를 자꾸 만나게 될 것이다. ------ moderato:~% env LANG=ko_KR.EUC /usr/local/bin/perl5.003 warning: setlocale(LC_CTYPE, "") failed. warning: LC_ALL = "(null)", LC_CTYPE = "(null)", LANG = "ko_KR.EUC", warning: falling back to the "C" locale. ------ 이것들은 매우 성가신 노릇이다. 대부분의 로케일 설정을 이용하는 프로그램이 이렇게 반응하는 경우가 많을 것이다. 하지만, FreeBSD의 i18n(국제화, internationalization의 약자이다)담당자는 8비트 문자를 처리하는 부분과 16비트 문자를 처리하는 부분의 차이 때문에 이들을 같은 C라이브러리에 넣을 수 없다고 한다. 16비트 문자처리 루틴은 /usr/lib/libxpg4.so이다. 따라서 여러분이 한글을 지원하고, POSIX의 로케일 규정과 multibyte와 widebyte의 규정을 잘 지키는 16비트 문자 지원 프로그램을 작성한 경우에는 링크할때 -lxpg4란 스위치를 넣어주기 바란다. 의문이 드는 것은, perl등을 컴파일할 때 xpg4라이브러리를 미리 주고 컴파일하면 될 것을 그냥 두었을까 하는 것인데, 아직은 오동작의 소지가 있기 때문으로, 조금 불편하더라도 참기 바란다. 정 에러 메시지가 거슬리면 LANG환경변수를 C로 셋업하고 사용하기 바란다. kr-userskel을 설치했다면 LANG환경변수의 기본값은 ko_KR.EUC이다. 4.3.2 X locale 국제화 규정을 지키는 X프로그램들, 입력기를 사용하고 싶은 X프로그램들은 위에서 말한 xpg4라이브러리를 링크하지 않으면 EUC로케일들(ko_KR.EUC, ja_JP.EUC)을 제대로 활용할 수가 없다. 하지만 기본적으로 X프로그램을 컴파일하는데 사용하는 Imake의 템플리트에서는 xpg4라이브러리를 링크해주지 않는데, 이 경우에는 X프로그램이 뜨면서 Warning: locale not supported by C library, locale unchanged 이런 말이 나오게 된다. 이게 싫다면 /usr/X11R6/lib/X11/config/FreeBSD.cf파일의 62행의 #define ExtraLibraries /**/ 를 #define ExtraLibraries -lxpg4 로 고치면 된다. 이후 imake템플리트를 사용하도록 설계된 X용 프로그램들은 xpg4를 링크할 것이고, 소스 안에서 i18n초기화 함수(setlocale()이나 XtSetLanguageProc())을 부르는 경우 경고 메시지가 나오지 않을 것이다. 이는 나중에 나오게 될지도 모를 국제화 프로그래밍에도 꼭 필요한 것이다. 현재는 HanX를 사용하지 않는 한 리눅스와 FreeBSD와 같은 비상업용 OS에서 일반 X어플리케이션에서 한글입력이 가능한 방법이 알려져 있지 않다. 일본어 입력기중 한글입력 능력을 가진 것들이 있기는 하지만, 잘 된다는 경우를 아직 알지 못하기 때문이다. 이런 것들이 빨리 만들어져서 표준도 지키고 편하게 사용할 수 있는 그런 작업을 할 수 있는 날이 오기를 바란다. 물론 쉽지는 않겠지만, 누군가는 꼭 해야 하는 일이지 않을까? 5. 패키지와 포트 래드햇에는 rpm이라는 패키징 시스템이 있고, 데비안도 그 독특한 패키징 시스템으로 유명하지만, FreeBSD에도 이에 버금가는 패키징 시스템이 있다. FreeBSD에서 즉시 설치 가능한 바이너리의 모음을 package라고 부르는데, 이 패키지는 port라는 Makefile로 만든 소스에서 만들어진다. 이제 이 마술과도 같은 port와 package와의 관계를 잠깐 알아보고, port가 실제로 어떻게 동작할지 예를 들어 알아보자. 5.1 port port는 package작성의 기반이 되는 시스템이다. 이들은 인터넷 상에서 구할 수 있는각종 프로그램들의 설치가 각각 다르고 복잡하며, FreeBSD를 위해서는 소스를 고치거나 특별한 인수를 주어 컴파일해야 하는 일이 많은 모든 사건에 대비하기 위하여 단계별로 진행하는 컴파일을 도와주는 Makefile체계이다. 여러분이 ports를 설치했다면, /usr/ports디렉토리에서 패키지 설치때 나왔던 항목이 그대로 디렉토리가 되어 있는 것을 보게 될 것이다. ------ moderato:~% ls /usr/ports INDEX cad/ games/ misc/ shells/ LEGAL chinese/ graphics/ net/ sysutils/ Makefile comms/ japanese/ news/ templates/ README databases/ korean/ pkg/ vietnamese/ archivers/ devel/ lang/ plan9/ www/ astro/ distfiles/ mail/ print/ x11/ audio/ editors/ math/ russian/ benchmarks/ emulators/ mbone/ security/ ----- 각 디렉토리에는 어플리케이션의 이름으로 된 디렉토리가 있고, 그 안에는 port를 위한 정보들이 담겨 있다. 이는 CD에서 구할 수 없는 프로그램이나, 소스를 직접 컴파일하고자 할 때 사용할 수 있다. 예를 들어, korean/hcode를 port에서 설치해 보자. 단 컴퓨터가 네트웍에 연결되어 있다는 것을 가정한다. 설치과정은 아주 간단하다. 일단 korean/hcode디렉토리로 이동한 뒤, make install이라 하면 된다. 그러면 port시스템은 일단 /usr/ports/distfiles디렉토리에 원하는 소스가 있는지 확인해 보고, 없다면 네트웍을 통해 다른 사이트에서 받아오기 시작한다. 루트 권한이 필요한 것에 주의하자. # cd /usr/ports/korean/hcode # make install >> hcode2.1-mailpatch2.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://ftp.kaist.ac.kr/pub/hangul/code/hcode/. Receiving hcode2.1-mailpatch2.tar.gz (61679 bytes): 100% 61679 bytes transfered in 1.3 seconds (45.50 kB/s) >> Checksum OK for hcode2.1-mailpatch2.tar.gz. ===> Extracting for kr-hcode-2.1mp2 ===> Patching for kr-hcode-2.1mp2 ===> Applying FreeBSD patches for kr-hcode-2.1mp2 ===> Configuring for kr-hcode-2.1mp2 ===> Building for kr-hcode-2.1mp2 cc -O -c hcode.c cc -O -c conv.c cc -O -c in.c cc -O -c out.c cc -O -c mail.c mail.c:340: warning: redefinition of `u_long' /usr/include/sys/types.h:53: warning: `u_long' previously declared here cc -o hcode -O hcode.o conv.o in.o out.o mail.o ===> Installing for kr-hcode-2.1mp2 ===> Registering installation for kr-hcode-2.1mp2 # 그리고는 자동적으로 컴파일과 설치, 패키지 등록까지 마치게 된다. 이를 위해서 몇가지 단계를 거치게 된다. 패키지를 만들어 보관하고 싶다면 make package라 하면 된다. # make package >> Checksum OK for hcode2.1-mailpatch2.tar.gz. ===> Building package for kr-hcode-2.1mp2 Creating package kr-hcode-2.1mp2.tgz Registering depends:. Creating gzip'd tar ball in '/usr/ports/korean/hcode/kr-hcode-2.1mp2.tgz' # 이제 만들어진 패키지는 이 CD에 들어있는 것과 동일하다. 여기 CD에 있는 패키지는 모두 이같은 과정을 거쳐 만들어진 것이다. 만약 소스가 없고, 네트웍에 연결되어 있지 않은 경우에는, 일단 소스를 통신망에서 받거나 다른 방법을 통해서 /usr/ports/distfiles디렉토리에 옮겨놓고 make install을 실행하면 된다. 이 때의 소스파일 이름과 내용은 원래 사이트에 있던 파일과 완전히 동일해야 한다. 만약 내용은 같은데, 통신망에 올려지면서 이름이 바뀐 경우에는 해당 port디렉토리 의 Makefile을 보면 그 이름이 DISTFILES에 쓰여 있을 수도 있고, 아니면 DISTNAME와 EXTRACT_SUFX를 찾아서 이 두 이름을 붙이면 된다. 예를 들면, kr-hcode-2.1mp2의 앞부분은 다음과 같은데, DISTNAME= hcode2.1-mailpatch2 PKGNAME= kr-hcode-2.1mp2 CATEGORIES= korean MASTER_SITES= ftp://ftp.kaist.ac.kr/pub/hangul/code/hcode/ \ ftp://sunsite.kren.nm.kr/pub/packages/hangul/code/hcode/ EXTRACT_SUFX= .tar.gz 이렇다면 /usr/ports/distfiles에 들어가야 할 소스파일명은 hcode2.1-mailpatch2.tar.gz가 되는 것이다. EXTRACT_SUFX가 없다면 .tar.gz를 붙이면 된다. port에서 패키지를 만드는 데에는 다음의 단계를 거친다. 각 단계를 해 보고 싶으면 make <단계이름>이라 하면 된다. fetch 소스를 받아오고, 확인한다. extract 소스를 작업디렉토리에 풀어놓는다. patch 필요한 경우 패치를 한다. configure 컴파일하기 전에 설정 단계가 있다면, 그것을 한다. build 컴파일해서 실행파일을 만든다. install 설치한다. register 설치된 port를 등록한다. package 등록된 port를 묶어 패키지 파일로 만든다 자세한 설명은 Handbook의 18.2.5.2절을 잘 읽어보기 바란다. 이것을 설명하는 이유는, 넷스케이프의 설치가 매우 쉬워지기 때문이다. 만일 영문 넷스케이프 3.01를 설치하고 싶으면 /usr/ports/netscape3디렉토리에 가서 make install이라고만 하면 된다. 그리고 이 CD의 korean디렉토리에 넷스케이프사의 한글 넷스케이프 3.01이 있다. 이제 이를 설치해 보자. 일단 디렉토리로 이동해서 make install만 치면 만사 OK이다. # cd /usr/ports/korean/netscape3 # make install Script started on Tue Apr 15 14:42:40 1997 # make install >> netscape-v301-export.x86-unknown-bsd.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://ftp.kaist.ac.kr/.4/Netscape/pub/navigator/3.01/unix/. Receiving netscape-v301-export.x86-unknown-bsd.tar.gz (2567262 bytes): 100% 2567262 bytes transfered in 86.3 seconds (29.03 kB/s) >> netscape-ko-v301.alpha-dec-osf2.0.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://ftp.kaist.ac.kr/.4/Netscape/pub/navigator/3.01/unix/. ... Netscape 3.01-intl-ko --------------------- This is the netscape web-surfboard. Please read the file "/usr/local/lib/netscape/LICENSE" for the licensing terms. Note: If Java applets fail to display. Type this as root: cd /usr/X11R6/lib/X11/fonts/misc /usr/X11R6/bin/mkfontdir chmod 444 fonts.dir And then exit and restart your X server. This version of Netscape is some hack of Netscape 3.01 and international supplementary file of Korean, OSF/1 2.0 version. Please check there is no FreeBSD version of intl. It need Hanyang X11 fonts(KSC5601-1987.0) -- Port By Choi Jun Ho ===> Registering installation for kr-netscape-3.01intl # 설치가 되었다면 실행해 보면 된다. csh와 tcsh유저는 패스를 정리하기 위해 rehash를 실행하고 하면 된다. % rehash % netscape 이제 한글 넷스케이프가 실행된다. port는 설치를 간단하게 하는 목적 외에, port는 일단 FreeBSD에서 컴파일을 보장하는 범위 안에서 사용자가 원하는 대로 소스를 고칠 수 있다는 것을 허가한다. 설치된 패키지가 맘에 들지 않는다거나, 자기가 사용하는 옵션을 넣지 않고 컴파일한 경우가 그 예이다. 그런 경우에는 일단 port디렉토리로 이동해서, make patch가지만 하고, 소스를 수정한 다음 configure단계 이후를 실행해서 설치하면 된다. port시스템은 인터넷에 산재하는 여러 프리소프트웨어들을 쉽게 설치할 수 있는 수단을 제공한다. 이를 잘 알아두면 다른 프로그램이라도 포팅하기가 아주 쉬워질 것이다. 그래서, 이 port를 만드는 법은 알지 않아도 사용하는 법정도는 알아둘 필요는 있는 것이다. port에 대한 자세한 내용은 Handbook의 4.2절을 참고하기 바란다. 5.2 package package의 관리는 래드햇의 rpm을 써본 사람이라면 그 필요성을 알고 있을 것이다. 그러나 아직 FreeBSD는 그래픽을 제공하는 시스템 관리자를 제공하지는 않으므로, 텍스트 메뉴 정도에 만족해야 할 것이다. 이제 패키지의 사용방법을 알아보자. 5.2.1 설치 - pkg_add 패키지의 설치는, 일단 /stand/sysinstall의 것을 쓰기를 가장 권장한다. 그것에 제일 쉽고, 메뉴방식을 제공하기 때문이다. pkg_add는 그곳에서 사용한 패키지 설치 프로그램이다. 만약 자신이 kr-hcode-2.1mp2라는 패키지를 가지고 있다면, # pkg_add kr-hcode-2.1mp2.tgz 라 하면 된다. 만약 패키지에서 하고 싶은 말이 있다면 그것을 출력할 것이다. 대부분의 경우에는 아무말 없이 끝나게 된다. 각 패키지는 다른 패키지에 의존하는 경우가 있는데, 에를 들면 nhppf를 사용하려면 perl-5.003이 필요한 것이다. 이 경우에는 perl을 미리 설치하지 않아도, 같은 디렉토리에 perl-5.003.tgz가 있다면 그것까지 설치하게 된다. 만약 필요로 하는 패키지가 설치되어 있지 않고 구할 수 없다면 설치는 중단되게 된다. 이때 -f옵션을 주어 강제로 설치할 수 있지만, 그리 좋은 방법은 아니다. pkg_add라고만 치면 사용할 수 있는 몇몇의 옵션을 볼 수 있으니, 관심이 있는 독자는 여러 옵션으로 실험해 보기 바란다. 5.2.2 삭제 - pkg_delete 이전 버전의 FreeBSD에는 pkg_manage라는 패키지의 관리 프로그램이 있었는데, 이 버전에는 그것이 없다. 아마도 sysinstall이 그 역할을 대신하게 할 생각이라 보이지만, 아직 완전한 구현은 되지 않아서, 패키지의 삭제는 손으로 해야 한다. 만약 kr-hcode-2.1mp2를 삭제하고 싶다면 # pkg_delete kr-hcode-2.1mp2 하고 하면 된다. 만약 지우고자 하는 패키지의 이름을 정확히 모른다면 다음 절의 pkg_info에서 원하는 패키지 이름을 알아내기 바란다. 지우고자 하는 패키지가 다른 패키지에 의존하게 되면, 에러를 내고 지우지 않는다. # pkg_delete kr-hanterm304fonts Package `kr-hanterm304fonts' is required by these other packages and may not be deinstalled: kr-hanterm-304b3af # 이런 경우에는 -f옵션으로 강제로 지울 수 있지만, 그러면 다른 패키지를 쓸 수 없게 되어 버린다. 되도록이면 하지 말자. 5.2.3 정보 알아내기 - pkg_info pkg_info는 설치된 패키지의 정보를 알아내기 위한 프로그램이다. 일단 간단하게 실행해 보자. bash# pkg_info kr-hcode-2.1mp2.tgz Information for kr-hcode-2.1mp2.tgz: Comment: Hangul code conversion utility Description: hcode-2.1mailpatch2 ------------------- Hangul Code Conversion program. It can convert almost all kind of current used(or not used anymore) Korean language code, including KS C 5601-1987, ISO-2022-KR, Johab, N-byte, etc. This version is patched by Jungshik Shin . -- Ports by Choi Jun Ho 관련 패키지에 대한 정보를 볼 수 있다. pkg_info의 옵션은 상당히 다양한데, 몇가지만 예를 들어 보면, 해당 패키지에 의존하는 패키지들을 보고 싶은 경우: # pkg_info -R kr-hanterm304fonts Information for kr-hanterm304fonts: Required by: kr-hanterm-304b3af # 패키지에 대한 짧은 설명만 보고 싶은 경우: # pkg_info -c kr-hanterm304fonts Information for kr-hanterm304fonts: Comment: Hangul fonts for X11(johab) used in many hangul-related programs. # 등등이 있다. 자세한 것은 man pkg_info나 pkg_info에 아무런 인수를 주지 않고 실행하면 얻을 수 있다. 설치되어 있는 모든 패키지를 보는 것은 -a옵션을 주면 되는데, 나오는 정보가 많을 테니, 패키지 이름과 한줄짜리 설명만 나열시켜 보자. 이것은 많이 쓰게 될 것이다. # pkg_info -a -I xpostit-3.3.1 PostIt (R) messages onto your X11 screen xpm-3.4j The X Pixmap library. xscreensaver-1.27 Save your screen while you entertain your cat xview-config-3.2.1 OpenLook Toolkit config files. xview-lib-3.2.1 OpenLook Toolkit libs, includes, and man pages. xview-clients-3.2.1 OpenLook applications and man pages. ... # 만약 패키지 이름만 대충 알고 있을때, 그 패키지의 이름을 찾고 싶다면 위 명령을 grep으로 찾으면 된다. 만약 perl에 관계된 패키지를 찾아보고 싶다면 # pkg_info -a -I | grep perl perl-5.003 Pattern Extraction and Recognition Language. p5-Crypt-IDEA-1.0 perl5 interface to IDEA block cipher. p5-Array-PrintCols-1.2 perl5 module to print arrays of elements in sorted columns. # 6. 커널 컴파일 6.1. 커널 컴파일은 왜 하는가? 이제 이 글을 읽으면서 설치과정을 따라 했다면, 여러분은 일단 완성된 FreeBSD시스템을 가진 것이다. 이것만으로도 여러 일을 할 수 있고, 혹시 처음에 커널 설정을 잘못했더라도, 일단 커널에 있는 장치라면 단지 다시 부팅해서 인수만 조절하면 된다. 그러나 그것만으로 해결할 수 없는 문제가 있다. 자. CD에는 8비트 시절 유저들의 향수를 자극하는, 하나의 프로그램이 있다. 바로 그 유명한 Marat Fayzullin의 fMSX 1.5유닉스 버전이다. 그런데 이 패키지를 설치하고, fmsx를 실행하려고 하면 잘 실행되지 않을 것이다. moderato:~% fmsx Initializing Unix/X drivers: Opening display...OK Opening window...OK Allocating sprite buffer...OK Using shared memory: Creating image...OK Bad system call moderato:~% 이게 어찌된 일인가? 설치도 잘 했고 X도 잘 뜨는데 뭐가 문제란 말인가? 그러나, 시스템의 잘못도 아니고, fmsx의 잘못도 아니다. 이것은 단지 여러분의 커널에는, fmsx에서 사용해야 하는 System V의 공유메모리 시스템이 없기 때문이다. 아마 여러분이 리눅스를 사용한다면 그런 일은 없을 것이다. 왜 그럴까? 그 이유는 굉장히 간단한데, 그것은 System V를 따르는 리눅스 커널에는 System V의 특징인 System V IPC(공유메모리, 세마포어, 메시지 큐)가 당연히 들어있는 반면에, FreeBSD커널은 4.4BSD를 따르고 있어서, 기본적으로 System V IPC를 지원하지 않기 때문이다. 이 문제를 해결하려면, 커널에서 System V를 지원하도록 커널을 재컴파일해야 한다. han을 실행하기 위해서도 마찬가지이다. 그외에도 커널을 재컴파일해야 하는 이유는 많이 생길 수 있는데, 예를 들어 기본 커널에서 지원하지 않는 장치를 쓰기 위해서이다. 대표적인 예로 사운드카드를 들 수 있다. 만약 여러분이 splay와 같은 프로그램으로 mp3파일을 듣고 싶은데, 기본 커널에는 사운드 지원 기능이 들어가 있지 않다. 이 때에는 여러분들이 사용하는 사운드카드 장치를 지정해서 컴파일하면 된다. 그리고 기본커널에는 부팅과 설치가 잘 되기 위해 여러 종류의 네트웍 카드와 PCI장치등이 많이 지정되어 있는데, 이들 중에서 우리는 필요한 것만 선택해서 사용하면, 커널의 크기를 줄일수도 있고, 부팅시에 쓸데없는 장치 인식시간(물론 쓰지 않는 장치를 커널 설정에서 인식하지 않도록 지정하면 된다)를 줄일 수 있다. 이것이 커널을 다시 컴파일하는 이유이다. 하지만, 리눅스에서 커널을 컴파일해 본 적이 있는 사람이라면 잘 알고 있겠지만, 커널 컴파일은 자신의 기계와, 유닉스에 대한 약간의 지식을 요구하고, 번거로운 과정이다. 이것을 그냥 프로그램의 preference설정정도로 여기지 말기 바란다. 커널을 컴파일하기 위해서는 커널 소스가 필요하다. 커널 소스는 CD의 src/ssys로 지작하는 파일인데, 만약 여러분이 설치를 하지 않았다면 /stand/sysinstall을 불러서 다시 설치하면 된다. 커널 소스가 설치되었는지 아는 방법은, /sys디렉토리에 가 보아서 디렉토리와 파일이 잔뜩 있다면 설치된 것이다. 이 장의 내용은 handbook의 5장을 참조하기 바란다. 6.2 커널 컴파일 FreeBSD의 커널 컴파일 과정은 리눅스와는 완전히 다르지만, 정통적인 BSD커널 컴파일 방식을 따르고 있다. 만약 여러분이 SunOS 4.x이나 OSF/1의 커널 컴파일을 시도한 적이 있다면, 아주 유사한 점에 놀랄 것이다. 커널 컴파일의 순서는 다음과 같다. 1. /sys/i386/conf/의 GENERIC과 LINT를 참조해서 여러분의 커널 설정 파일을 만든다. 일단 쉽게, GENERIC이란 파일(이 파일은 지금 쓰고 있는 설치용 부트커널의 설정파일이다)을 자신의 커널 이름(아무것이나 좋지만, 여러분의 컴퓨터 이름으로 지정하면 좋을 것이다)으로 하나 복사한다. 이 파일은 적어도 에러 없는 설정파일이므로, 이를 시작점으로 하는 것이 좋다. 필자의 컴퓨터 이름은 moderato인데, 이 이름으로 하나 복사해 보자. 아, 물론 루트의 권한으로 해야 한다. # cd /sys/i386/conf # cp GENERIC MODERATO 2. 설정파일을 편집한다. 무척 지루하고, 복잡할지도 모르겠지만, 이 파일에 커널에서 사용하는 모든 옵션과 장치명이 지정되어 있다. # vi MODERATO 3. 편집이 다 끝났으면 config명령으로 커널을 컴파일할 준비를 한다. # /usr/sbin/config MODERATO Kernel build directory is ../../compile/MODERATO # config프로그램은 커널 설정 파일에 따라 커널 소스에서 필요한 부분을 모아 한 디렉토리에 넣고, 컴파일에 필요한 몇가지 과정을 거친 후, 여러분의 커널을 컴파일할 디렉토리의 이름을 알려주고 마친다. 혹 이 과정에서 에러가 난다면, 일단 커널설정 파일을 먼저 잘 살펴보자. 4. 이제 config에서 알려준 디렉토리로 이동해서 컴파일을 시작하면 된다. # cd ../../compile/MODERATO # make depend ... # make ... sh ../../conf/newvers.sh GENERIC -DAPM_BROKEN_STATCLOCK -DFAILSAFE -DCOMPAT_43 -DCD9660 -DMSDOSFS -DNFS -DFFS -DINET cc -O -Wreturn-type -Wcomment -Wredundant-decls -Wimplicit -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -nostdinc -I- -I. -I../.. -I../../../include -DAPM_BROKEN_STATCLOCK -DFAILSAFE -DCOMPAT_43 -DCD9660 -DMSDOSFS -DNFS -DFFS -DINET -DKERNEL -c vers.c loading kernel rearranging symbols text data bss dec hex 1175552 73728 88588 1337868 146a0c # 이는 리눅스 커널 컴파일 과정과 비슷할 것이다. 위와 같이 실행파일의 크기를 알려주는 size명령(커널도 단순히 스워핑이 안되고 항상 메모리에 상주하며, 특권을 가지고 실행하는 실행파일일 뿐이다)의 결과를 실행하고 제대로 종료했다면 커널 컴파일이 성공적으로 된 것이다. 이 과정에서 에러가 난다면, 그것은 커널 설정파일이 잘못된 것이므로, 다시 /sys/i386/conf디렉토리로 가서 설정파일이 무엇이 잘못되었는지 보면 된다. 5. 커널이 에러없이 컴파일되었다면, 커널을 제 위치에 가져다 놓자. 커널은, 루트 디렉토리 밑에 /kernel이라는 이름으로 있다. 커널을 설치하려면 # make install 이것으로 끝이다. 제대로 동작하는지 보려면 다시 부팅해 보면 된다. 자, 과정은 아주 간단하지만, 실제로 커널 설정파일을 편집하는 것은 처음 해 보는 사람에게는 여간 성가신 일이 아니다. 하지만 커널 설정파일은 단순한 텍스트 파일이고, GENERIC과 LINT파일에 설명이 잘 되어 있으므로, 그리 어렵지 않을 것이다. 어려운 것은 여러분이 어떤 장치를 선택할 지를 알고 있고, 커널에 어떤 옵션을 주어야 할 지 아는 일이다. 6.3 커널 설정 파일 커널설정 파일은 아무 편집기로나 편집하면 된다. 위에서부터 찬찬히 훑어나가며, 주석문을 잘 보고 편집해 나가면 된다. 우리가 주로 해야 할 일은 다음과 같다. - CPU타입과 커널 이름등의 설정 - 커널 옵션 - 파일시스템 - 장치 제어기 - SCSI장치 - 콘솔, 마우스, X서버 - 직렬과 병렬포트 - 네트워킹 장치 - 사운드카드 - 의사장치(pseudo-device) - 조이스틱, 스피커와 기타 이제 커널 설정파일에 있는 것들을 간단하나마 살펴보자. 6.3.1 CPU타입과 커널 이름등 machine "i386" 이 커널이 인텔 80386아키텍처에서 실행되는 것이라는 것을 의미한다. FreeBSD는 아직 PC가 아닌 다른 플랫폼(Alpha, 68000등)을 지원하지 않으므로, 이것은 그냥 놔두면 된다. cpu "i586" 여러분의 CPU를 말한다. 어떤 CPU인지 에 맞게 설정하면 되는데, 보통 i586정도면 486기종에서도 문제가 없다. CPU는 펜티엄 프로(i686)까지 지원한다. 인텔 호환의 다른 CPU라면 호환하는 인텔CPU의 이름으로 지정하면 될 것이다. ident ident다음에는 커널 설정파일의 이름, 즉 컴퓨터 이름을 그대로 쓰면 된다. maxusers 이것은 최대 사용자수를 의미하기 보다는 커널 내부의 시스템 테이블을 조정하는데, 대부분의 커널 내부의 시스템 테이블은 이 값을 기준으로 잡히게 된다. 예를 들어 이 커널에서 만들 수 있는 최대의 프로세스 수는 20+16*maxuser이다. 다시한번 말하지만, 이것은 시스템에 로그인할 수 있는 최대 사용자수가 아니다. 시스템에 로그인할 수 있는 최대 사용자수를 바꾸려면 pty장치의 수를 조정해야 한다. config root on 커널이 어디에서 부팅할 것인지, 어느 파일로 부팅할 것인지 정한다. 보통 FreeBSD에서 커널 이름은 kernel이다. 리눅스는 vmlinuz였을 것이다. 보통의 유닉스에서는 커널 이름이 vmunix등으로 불린다. 커널 이름은 반드시 kernel로 하자. 그다음에는 커널이 어디에서 부팅할 것인지를 정하는데, 이것은 FreeBSD부팅 파티션의 이름이다. 예를 들어 여러분이 두번째 IDE하드디스크에 설치했다면, wd1을 쓰면 된다. 첫번째 IDE드라이브는 wd0이다. 만약 SCSI장치를 사용한다면 sd0과 같은 이름을 쓰기 바란다. 6.3.2 CPU타입과 커널 이름등의 설정 이것은 커널에 주는 컴파일 스위치(cc컴파일러에 -D로 넘기는)이다. 이것은 커널의 여러 동작을 제어할 수 있다. options MATH_EMULATE 수치보조프로세서가 없는 경우에 수치보조프로세서를 에뮬레이션한다. 만약 여러분이 수치보조프로세서를 가지고 있는 경우에는 앞에 #을 붙여 주석처리해도 좋다. 486DX이상의 기종이라면 모두 수치보조프로세서를 가지고 있다. options "COMPAT_43" 4.3BSD와의 호환성을 유지한다. 반드시 설정하기 바란다. options UCONSOLE 사용자가 콘솔을 쓸 수 있도록 혀용한다. 이것은 X윈도우에서 커널이 보내는 콘솔 메시지를 표시할 수 있도록 해준다. (그런 xterm을 띄우려면 xterm -C라고 하기 바란다) options SYSVSHM options SYSVSEM options SYSVMSG 이전에 예를 들었던 fmsx와 han을 돌리려면 이 옵션을 꼭 주어야 한다. 이들은 System V IPC인 공유메모리, 세마포어, 메시지 큐를 사용할 수 있도록 해 준다. 보통 X윈도우에서 표시속도를 빠르게 하기 위한 MIT의 공유메모리 확장(shared memory extension)을 쓰는 프로그램들(fmsx등등)등을 쓰고자 한다면(패키지의 DOOM이나 xanim을 실행하기 위해 필요하다) 반드시 넣기 바란다. 쉽게 말하면 언제나 이 옵션을 포함하면 된다. 6.3.3 파일시스템 FreeBSD에서 사용할 수 있는 각종 파일시스템을 지정한다. 몇몇의 파일시스템은 lkm(loadble kernel module)로 동적으로 링크할 수 있지만, 항상 사용한다면 넣어두는 것이 좋을 것이다. options FFS FFS(Fast File System)은 FreeBSD의 기본 파일시스템 이름이다. 이것은 꼭 포함해야 한다. options NFS NFS(Network File System)을 지원하게 한다. 만약 네트웍에 연결되어 있지 않거나, 사용할 NFS파일시스템이 없다면 주석처리하기 바란다. options MSDOSFS FAT를 사용하게 해 준다. 도스 드라이브를 사용하고 싶다면 꼭 넣기 바란다. 하지만 mtools를 통해 도스 드라이브를 쓴다면 넣을 필요는 없다. options "CD9660" CD-ROM의 ISO9660파일시스템을 사용하도록 해 준다. CD를 쓰고 싶다면 꼭 넣어야 하지만, 음악CD를 듣고자 하는 경우에는 필요 없다. options PROCFS Process Filesystem은 지금 작동하는 프로세스를 파일시스템처럼 볼 수 있다. 이것은 디버거에서 사용하면, 동작하는 프로세스를 디버깅하거나, 자세한 프로세스 정보를 볼 수 있게 한다. options MFS MFS는 간단히 말하면 램디스크이다. 보통은 사용하지 않을 것이다. options QUOTA 디스크 용량제한을 할 수 있도록 한다. 자세한 쿼터 설정은 handbook의 8장을 참조하기 바란다. 6.3.4 장치 제어기 장치제어기는 어떤 장치를 만들 것인지를 정하는데, 이것은 예를 들어 ISA보드나 PCI보드, 플로피 디스크 드라이브, IDE드라이브등을 사용하겠다는 것을 지정한다. 구체적인 카드 이름을 지정하는 것이 아닌 것에 주의하기 바란다. controller isa0 ISA장치를 쓰도록 한다. FreeBSD는 현재 MCA(Micro Channel Architecture)를 지원하지 않으므로, IBM PS/2에서는 FreeBSD를 사용할 수 없다. controller pci0 PCI보드를 사용한다면 꼭 지정하기 바란다. controller fdc0 플로피 디스크 드라이브를 사용하도록 한다. controller wdc0 controller wdc1 이것은 기본 IDE하드디스크 드라이브이다. EIDE를 생각해 보면, wdc0은 primary하드디스크 2개이고, wdc1은 secondary하드디스크를 의미한다. IDE CD-ROM도 이 범주에 포함된다. 만약 SCSI하드디스크만을 사용한다면 지정할 필요는 없을 것이다. device wcd0 이것은 IDE CD-ROM을 의미한다. 만약 여러분들이 하나 이상의 IDE콘트롤러와 그것에 연결된 CD-ROM이 있다면 wcd1도 마저 지정하기 바란다. 이것을 이용하여 ATAPI CD-ROM을 사용하려면, options ATAPI를 지정하는 것도 잊지 말자. device mcd0 at isa? port 0x300 bio irq 10 vector mcdintr device scd0 at isa? port 0x230 bio controller matcd0 at isa? port ? bio 사운드카드에 연결된 CD-ROM을 사용한다면 위의 3개중 하나를 지정하기 바란다. mcd0은 Mitsumi CD-ROM, scd0은 Sony CD-ROM, matcd0은 사운드블라스터에 연결하는 마쓰시타/파나소닉 CD-ROM이다. 6.3.5 SCSI장치 SCSI장비는 요즘 값이 많이 내리고, 그 성능이 IDE디스크보다 뛰어나 요즈음 많이 사용하고 있는 것들이다. SCSI인터페이스카드를 쓰고 있다면 먼저 자신이 쓰는 카드가 어떤 것인 확인해 보고, 아래의 장치들 중에서 쓰고 있는것을 지정하기 바란다. controller ahc0 Adeptec 274x/284x/294x이다. PCI용 SCSI인터페이스 카드이다. controller ahb0 at isa? bio irq ? vector ahbintr Adeptec 174x controller aha0 at isa? port ``IO_AHA0'' bio irq ? drq 5 vector ahaintr Adaptec 154x controller ncr0 NCR 53C810, 53C815, 53C825, 53C860, 53C875 PCI용 SCSI콘트롤러이다. 이외에도 여러가지 콘트롤러를 많이 지원하므로, 반드시 /sys/i386/conf디렉토리의 majors.i386과 LINT파일, 그리고 handbook의 2.1절을 읽어보고 사용하는 장치를 지정하기 바란다. 일단 콘트롤러를 지정한 후에는 반드시 어떤 종류의 장치를 쓸 것인지 지정해야 한다. controller scbus0 SCSI장치를 쓴다면 꼭 지정해야 한다. device sd0 device st0 device cd0 각각 SCSI하드디스크, SCSI테이프 장치, SCSI CD-ROM을 의미한다. 이것을 지정하는데 한가지 주의할 것이 있는데, 만약 위의 controller를 지정하지 않거나, controller scbus0를 지정하지 않고 위의 device만 지정해 컴파일하려 하면 컴파일 후 최종 링크과정에서 에러가 날 것이다. 따라서 SCSI장치를 사용하지 않는 경우에는 위 장치를 넣을 필요가 없고, SCSI를 사용한다면 일단 controller설정을 올바르게 한 다음 device를 선택하기 바란다. 6.3.6 콘솔, 마우스, X서버 FreeBSD에는 두가지의 콘솔 드라이버가 있다. 이 중에 하나를 선택하여야 하고, 버스마우스(직렬포트나 병렬포트를 말하는 것이 아니다)나 PS/2마우스를 쓰도록 지정할 수 있다. device sc0 at isa? port ``IO_KBD' tty irq 1 vector scintr sc0는 기본 콘솔드라이버로, SCO유닉스 콘솔을 에뮬레이션하는 것이다. 이 콘솔을 사용한다면, 콘솔에서 TERM환경변수를 scoansi나 cons25로 지정해야 한다. device vt0 at isa? port ``IO_KBD'' tty irq 1 vector pcrint 이것은 VT220호환 콘솔 드라이버이다. 이것을 사용하려면 TERM환경변수를 VT100이나 VT220으로 놓아야 하는데, 보통은 sc0을 사용하는 것이 좋을 것이다. vt0를 사용하고자 한다면 다음 두 줄을 추가해야 한다. options "PCVT_FREEBSD=210" options XSERVER device mse0 at isa? port 0x23c tty irq 5 vector ms mse0는 로지텍이나 ATI사의 버스 마우스를 사용할 경우에 지정한다. 대부분의 사용자는 직렬포트 마우스나 PS/2를 사용하는 것에 주의하자. device psm0 at isa? port ``IO_KBD'' conflicts tty irq 12 vector psmintr PS/2마우스를 사용하는 경우에는 이것이 없으면 마우스를 쓸 수 없다. 6.3.7 직렬과 병렬포트 직렬포트와 병렬포트는 모뎀과 마우스나 프린터 사용에 꼭 필요한 것이다. 자신의 컴퓨터가 어떤 포트를 지원하는지 확인한 다음에 지정하도록 하자. device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr sio0에서 sio3은 각각 COM1에서 COM4에 해당한다. 만약 COM4를 사용하는데 이 설정으로 COM4를 인식하지 못한다면, irq를 3으로 바꾸어 보기 바란다. 하지만 IRQ를 바꾸는데 꼭 커널을 다시 컴파일할 필요는 없고, 단지 커널 설정만 다시 하면 된다. device lpt0 at isa? port? tty irq 7 vector lptintr lpt0에서 lpt2는 병렬포트이다. 프린터를 병렬포트에 접속하고 사용하는 경우에는 반드시 넣도록 하자. 6.3.8 네트워킹 장치 만약 여러분이 LAN환경에서 랜카드를 사용한다면, 랜카드의 종류와 호환기종을 일단 확인하기 바란다. 그리고 나서 알맞는 장치를 지정하고, 되도록이면 PnP기능을 설정하지 말 것이며, 도스에서 사용할 수 있는 설정 프로그램을 통해 IRQ와 I/O주소를 꼭 확인해 두도록 하자. options INET TCP/IP를 지원하기 위해서는 꼭 넣도록 하자. 여러분이 LAN에 연결되어 있지 않더라도 꼭 설정해야 한다. device ed0 at isa? port 0x280 net irq 5 iomem 0xd8000 vector edintr device ep0 at isa? port 0x300 net irq 10 vector epintr 이 장치들은 ed0가 NE2000/WD80xx호환카드, ep0가 3Com 3c509카드를 지원한다. I/O주소(port)와 irq를 꼭 확인하기 바란다. 물론 이것은 틀려도 커널을 다시 컴파일할 필요 없어 커널을 재설정할 수 있다. 이외에도 많은 종류의 카드를 지원하므로, 반드시 SCSI장치때 설명했던 자료를 참고로 하기 바란다. pseudo-device loop TCP/IP의 loopback장치를 지원한다. 만약 127.0.0.1의 로컬호스트 네트워킹을 사용하고 싶다면 꼭 넣어야 하는데, 모든 경우에 반드시 넣기 바란다. pseudo-device ether 이더넷 카드를 사용한다면 꼭 넣기 바란다. 이것이 있고 위의 카드지정이 있어야 LAN카드가 제대로 동작한다. pseudo-device sl SLIP(Serial Line Internet Protocol)을 사용하려면 이 장치를 지정하기 바란다. number는 동시지원하는 SLIP세션의 수이다. 자세한 SLIP사용법은 handbook의 12.3절을 보기 바란다. pseudo-device tun tun은 사용자모드 PPP소프트웨어에 쓰인다. 이것은 루트권한 없이도 PPP를 사용할 수 있도록 해 준다. number는 SLIP에서와 마찬가지로 동시지원하는 PPP세션의 수이다. 사용자 모드 PPP의 셋업에 대해서는 handbook의 12.1절을 보기 바란다. 6.3.9 사운드카드 FreeBSD는 여러 종류의 사운드 카드를 지원한다. 이것들은 보통의 GENERIC부팅 커널에는 포함되어 있지 않은데, 아래 글을 보고 사용하는 카드들 지정하기 바란다. 아래의 커널 옵션을 지정했다면, 부팅 후 이 장치들을 만들어야 한다. 이 작업에 대해서는 /usr/src/sys/i386/isa/sound/sound.doc과 handbook의 5.4절을 보기 바란다. controller snd0 사운드카드를 사용한다면 꼭 지정하기 바란다. device pas0 at isa? port 0x388 irq 10 drq 6 vector pasintr ProAudioSpectrum 디지탈 오디오와 MIDI장비를 사용하는 경우에 지정한다. device sb0 at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr 사운드블라스터 디지탈 오디오를 사용하는 경우에 지정한다. 만약 사운드블라스터의 IRQ가 7이 아니라면(도스의 사운드블라스터 소프트웨어를 설치했다면 autoexec.bat에 BLASTER환경변수에 I다음에 나오는 숫자를 읽으면 된다), 위 문장에서 conflicts키워드를 빼고, irq를 지정한 것으로 바꾼 후, options "SBC_IRQ=<지정한 irq>"도 같이 넣어주기 바란다. device sbxvi0 at isa? drq 5 사운드블라스터 16를 사용하는 경우에 지정한다. device pca0 at isa? port ``IO_TIMER1'' tty PC스피커를 사용하고 싶다면 이것도 지정해 주기 바란다. 이외에 그라비스 울트라사운드 카드나 마이크로소프트 사운드시스템, 애드립, 롤랜트 MPU-401카드등등을 지원한다. 6.3.10 의사장치(pseudo-device) 의사장치는 실제 하드웨어가 아니지만, 커널 내에서 하나의 장치역할을 하는 것들이다. 이미 네트웍 장치를 설정할 때 보았을 것이다. pseudo-device gzip gzip으로 압축된 실행파일을 실행할 수 있게 해준다. 이 기능을 사용해 보려면, 이 옵션을 주고 커널을 컴파일한 후, 다시 부팅하고, 원하는 파일을 gzip으로 압축한 후에 다시 원래 이름으로 돌려 놓으면 된다. 디스크의 용량이 모자라면 유용하게 쓸 수 있는 방법이지만, 속도가 느려짐에 주의하자. /stand의 설치용 실행파일들은 압축되어 있으므로, 이 디렉토리의 파일(sysinstall등)을 쓰려면 이 옵션이 있어야 한다. pseudo-device log 커널 에러메시지 표시에 사용하는 로깅장치이다. 꼭 있어야 한다. pseudo-device pty 의사터미널의 갯수를 지정한다. 이것은 telnet이나 rlogin으로 들어오는 사용자의 수를 제한하게 할 수 있다. pseudo-device vn vnode드라이버를 사용할 수 있게 하는데, 대표적인 예는 파일을 스왑 장치로 지정하게 하는 것이다. 6.3.11 조이스틱, 스피커와 기타 이제 FreeBSD에 지원하는 여러가지 장치들을 살펴보자. 여기에는 두가지만 쓰겠지만, /sys/i386/conf/LINT파일을 참조하면 지원하는 많은 장치들을 볼 수 있을 것이다. device joy0 at isa? port "IO_GAME" 조이스틱을 사용하게 할 수 있도록 한다. pseudo-device speaker PC스피커를 쓸 수 있도록 하는데, 이건 앞의 사운드카드에서 쓰는 PC스피커와 다르다는 것에 주의하자. 사운드카드에 있던 것은 사운드를 PC에서 연주한다는 것이고, 이것은 IBM BASIC에서 제어하던 스피커 장치이다. 스피커를 시험해 보려면 /usr/sbin/spkrtest나, /usr/games/piano를 실행해 보면 된다. XT시절을 지내본 사람들은 잘 알 것이다. 6.4 장치 만들기 사운드카드와 같은 부트 커널에 없던 장치를 쓰려면, 장치파일을 만들어야 한다. 좀 번거로운 작업이기는 하지만, 꼭 해 보자. 만약 여러분들이 사운드블라스터를 쓰고 있고, 커널을 잘 컴파일했다면, 다시 부팅해서 장치를 인식하는지 확인하고(만약 너무 장치 인식표시가 빨리 지나갔다면, 나중에 dmesg명령으로 볼 수 있다) 장치를 만들어 보자. 여러분의 커널 설정파일에는 다음과 같은 행이 있을 것이다. controller snd0 이제 사운드카드 장치를 만들려면, # cd /dev # sh MAKEDEV snd0 라고 하면 필요한 사운드카드 장치를 만들어 준다. 현재 FreeBSD의 사운드카드 드라이버는 리눅스의 것과 완전히 호환인데, 그 예가 splay를 비롯한 많은 사운드관련 프로그램이 있다는 것이다. 만약 여러분이 사운드카드 관련 프로그램을 컴파일하고 싶다면, 소스에서 #include 라고 된 행을 찾아 #include 로 바꾸어 주고 다시 컴파일하면 된다. splay는 이 방법을 사용하여 포팅되었다. 6.5 커널 부팅 커널이 에러 없이 성공적으로 컴파일되었다면, 다시 부팅하기만 하면 된다. 이때 나오는 메시지에서, 여러분이 지정한 장치들을 잘 인식하는지 살펴보자. 화면이 너무 빨리 지나간다고 생각하면, Scroll Lock키를 누르고 커서키과 PageUp/PageDown키를 사용해서 지나간 메시지를 보면 되고(이것은 SCO콘솔드라이버에서만 된다), 아니면 일단 로그인해서 dmesg명령을 주면 된다. 만약 어떤 이유로 커널이 부팅이 되지 않는다면, 일단 이전의 커널로 부팅해야 한다. 이전 커널로 부팅하고 싶다면 부팅시에 >> FreeBSD BOOT ... Usage: [[[0:][wd](0,a)]/kernel][-abcCdhrsv] Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1 Use ? for file list or press Enter for defaults Boot: 위의 화면에서 잠시 멈추게 되는데, 이 때 대체할 커널의 이름을 Boot:프롬프트 뒤에 써넣으면 된다. 보통 커널을 설치하면, 이전 커널은 kernel.old란 이름으로 지정되므로, Boot: kernel.old 라고 쓰면 된다. 이것도 실패한다면, 부팅할 때 썼던 커널로 부팅할 수 있다. Boot: kernel.GENERIC 이라고 쓰면 된다. 어떤 파일이 있는지 모른다면, ?를 누르면 루트 디렉토리에 있는 파일 리스트가 나타난다. 7. 팁 BSD시스템에서 쓰이는 약간의 관리상의 팁을 들어보자. - 사용자 파일(/etc/passwd) 이 파일은 실제로 사용자의 암호 정보를 참조하는 것이 아니다. 실제 암호는 /etc/master.passwd에 정리되어 저장된 내용을 사용하는데, 이것은 리눅스에서 사용할 수 있는 새도우 패스워드 시스템과 같은 것이다. 따라서 사용자를 /etc/passwd를 고쳐 등록할 경우에는, 단지 /etc/passwd파일을 고치는 것만으로는 되지 않는다. 이 파일을 편집할 때에는 반드시 vipw명령을 사용하여 고치기 바란다. 이것은 /etc/passwd를 편집하고, 종료할 때 이 내용을 바탕으로 /etc/master.passwd를 재구성한다. - 시스템 설정(/etc/sysconfig) /etc/sysconfig는, 설치후 설정에서 지정하는 것들과, 그 외의 많은 시스템의 셋업을 포함하고 있다. 이 파일은 그냥 읽을 수 있는 쉘스크립트인데, 시스템 설정이 부족하다고 느끼거나, 수동의 조작을 원하는 경우에는 반드시 이 파일을 편집하고 리부팅을 하면 된다. /etc/rc스크립트는 손대지 말자. sysconfig에 넣을 수 없는 초기설정은 /etc/rc.local에 넣으면 된다. BSD시스템은 System V의 복잡한 init레벨을 사용하지 않으므로 비교적 간단한 구조를 취하고 있다. 주석을 하나하나 읽어가며 잘 셋업해 보자. 하지만 대부분의 작업을 /stand/sysinstall로 조절할 수 있으므로, 하고 있는 일이 어떤 것인지 잘 모르면 직접 이 파일을 고치는 일은 피하기 바란다. - 싱글유저 부팅 부팅할 때 싱글유저(멀티유저 상태가 아닌 시스템에 한사람만 로그인하는 상태. 시스템 점검 때 많이 쓰인다)로 부팅하고 싶으면 FreeBSD부트 프로그램이 뜰 때 Boot: 뒤에 -s를 입력하면 된다. - 커널 재설정 설치할 때 보았던 커널 재설정을 실행하려면, FreeBSD부트 프로그램이 뜰 때 Boot: 뒤에 -c를 입력하면 된다. 같은 화면이 나올 것이다. 혹 커맨드 라인 프롬프트가 나오면 visual이라 입력하면 메뉴방식 에디트 화면이 나올 것이다. - 도스의 확장 파티션 마운트하기 이전 버전의 FreeBSD에서는 도스의 확장파티션을 마운트할 수 없었는데, 이제는 할 수 있다. 하지만 설치할 때는 나오지 않는다. 일단 여러분의 하드디스크1이 다음과 같이 되어 있다고 가정하자. 파티션 1: 기본 도스파티션(C:) 파티션 2: FreeBSD파티션 파티션 3: 도스 확장파티션 논리드라이브 1(D:) 논리드라이브 2(E:) 확장파티션에 어떤 논리드라이브가 있는지는 도스의 fdisk명령을 쓰면 간단히 알 수 있다. 실제로 D:의 경우 파티션 5, E:의 경우 파티션 6에 해당하게도록 된다(파티션 1-4는 기본 파티션에 해당한다). 이 파티션을 쓰려면 일단 장치를 만들어야 한다. 이 하드디스크가 IDE의 첫번째 하드디스크였다면(Primary Master), # cd /dev # sh MAKEDEV wd0s5 로 D:드라이브에 해당하는 장치를, # sh MAKEDEV wd0s6 으로 E:드라이브에 해당하는 장치를 쓸 수 있다. 이제 이것을 마운트해 쓰면 된다. # mkdir /d # mount -t msdos /dev/wd0s5 /d # mount -t msdos /dev/wd0s6 /e 조금 어려운 면이 있는데, 이제 막 지원하는 기능이기 때문이다. 조금 이해하고 쓰자. 필자는 도스드라이브와 교환하고 싶은 데이터가 있다면 기본 도스파티션의 드라이브를 지정해 사용하는 것이 사용하기에 편할 것이라 생각한다. - CD롬의 마운트 부록CD롬등을 마운트해 쓰고 싶다면, 마운트해 사용하면 된다. EIDE CDROM의 예를 들어보면, 일단 wcd0장치가 만들어져 있어야 하고, # mount -t cd9660 /dev/wcd0 /cdrom 이렇게 하면 CD-ROM이 /cdrom디렉토리 밑에 마운트된다. - X윈도우의 색상수 조절 이것은 리눅스와 같은데, xinit를 실행할 때 % xinit -- -bpp 16 등과 같이 지정하면 된다. -bpp다음의 숫자는 색상의 깊이(color depth)이다. 16이라면 65536색인 것이다. 이것은 /etc/XF86Config에서 사용하는 비디오카드 섹션에 DefaultColorDepth 16 을 넣어도 된다. - 리눅스 에뮬레이션 FreeBSD는 리눅스와 SCO유닉스의 실행파일 레벨 에뮬레이션을 할 수 있다. 그러니까 리눅스의 ELF바이너리를 그냥 가져다 실행할 수 있다는 것이다. 일단 리눅스 에뮬레이션에는 리눅스의 공유라이브러리들이 필요한데, 이들은 패키지 중에서 linux_lib-2.3.tgz를 설치하면 된다(이것을 슬랙웨어의 라이브러리들이다). 라이브러리를 설치하고, 바이너리 호환을 동작시켜 보자. 시작하는 것은 간단하다. 루트의 권한으로, # /usr/bin/linux 라고만 하면, 커널의 동적 모듈이 동작하여 별도의 커널 컴파일 없이도 리눅스 호환 프로그램들을 실행할 수 있다. 부팅할 때부터 리눅스 호환 프로그램들을 실행하도록 하려면, /etc/sysconfig에서 linux="NO" 로 되어 있는 것을 YES로 고치면 된다. 이것은 SCO유닉스도 마찬가지이다. 8. 부록CD의 구조 부록CD의 구조를 간단히 알아보자. FreeBSD가 있는 FTP사이트에서도 거의 같은 디렉토리 구조를 볼 수 있다. XF8632 XFree86 3.2, X-Window시스템 autorun Win95용 CD자동실행 프로그램과 CD아이콘 bin 최소 실행 바이너리와 유틸리티, 그리고 시스템 catpages 포맷된 맨페이지 commerce 상업용 프로그램의 데모버전들 compat1x FreeBSD 1.x호환 라이브러리 compat20 FreeBSD 2.0호환 라이브러리 compat21 FreeBSD 2.1호환 라이브러리 des DES암호화 라이브러리 dict 영어사전(/usr/share/dict) doc FAQ과 Handbook등 extra 이 CD에서 추가된 것들 floppies 부팅 플로피 games 텍스트 기반 게임 info GNU info문서들 manpages man페이지 packages 패키지 ports port의 소스 proflibs 프로파일러용 라이브러리 src 소스 tools 도스용 툴(FIPS, fdimage, ...) xperimnt 실험중인 프로그램들 그밖에 CD의 루트 디렉토리에는 ABOUT.TXT나 HARDWARE.TXT와 같은 참고 문서와, 부팅 커널인 kernel, 커널 부팅 프로그램 fbsdboot.exe, 인스톨 배치파일 install.bat, 그리고 플로피 설치 메뉴프로그램인 setup.exe등이 있다. 대부분의 파일명은 설치할 때 볼 수 있는 배포본 메뉴와 같다는 것을 알 수 있을 것이다. extra에는 원래 FreeBSD FTP사이트에는 없는, 이 CD에만 있는 내용이다. 이 디렉토리에는 다음의 부디렉토리가 있다. doc/article 잡지 기사의 원본이다. 유닉스 텍스트이니 그냥 볼 수 있다. 이 잡지의 기사보다는 조금 오래된 내용일 것이다. doc/faq FreeBSD FAQ doc/faq/html FreeBSD FAQ의 html버전이다. 일반 웹브라우저에서 URL을 지정해서 볼 수 있다. doc/handbook FreeBSD Handbook doc/handbook/html FreeBSD Handbook의 html버전이다. 일반 웹브라우저에서 URL을 지정해서 볼 수 있다. image/ CD표지그림을 넣어두었다. source/ZIPdrive IOMega Zip드라이브 병렬포트버전을 사용할 수 있도록 하는 커널 소스이다. README를 잘 읽고 따라 하기 바란다. source/splashkit 이것은 부팅할 때 윈도우즈95처럼 그림이 나오도록 하는 커널 패치이다. 안에 있는 문서를 잘 읽고 따라 하면 재미있는 부팅 화면을 볼 수 있다. source/han FreeBSD용 han 1.0fb의 소스이다. 윈95에서 이 CD를 넣으면 CD커버 그림과 함꼐 뜨는 간단한 프로그램을 볼 수 있는데, CD롬에 있는 각종 README와 이 기사를 읽을 수 있다. floppies디렉토리의 부팅 플로피와 CD-ROM용 부팅 커널은 FreeBSD Advisory의 보안관련 버그를 고치는 것이다. 이 버전은 원래 FTP사이트의 floppies/newer에서 구할 수 있는 것인데, 원래 디렉토리로 옮겨 두었다. 자세한 버그의 내용에 대해서는 FreeBSD-hackers메일링 리스트를 찾아보기 바란다. xperiment는 개발중이거나 알파 버전의 소스들, 그리고 commerce에는 상업용 버전 프로그램들의 데모 버전이 들어있다. ISA PnP커널 베타버전, X용 심시티, Accelerated X데모판 등등을 볼 수 있다. 관심있는 독자들은 마운트해서 사용해 보기 바란다. 9. 관련 리소스 이제 FreeBSD와 관련된 각종 자료들을 소개하겠다. 9.1 책 Marshall Kirk McKusick외, The Design and Implementation of the 4.4BSD Operating System, Addison-Wesley, 1996 이 책은 4.4BSD의 구조를 설명한다. 전산학에 관심이 있는 사람만 보기 바란다. 이 책의 앞부분에는 유닉스의 역사와 BSD의 역사가 잘 실려 있다. 9.2 WWW FreeBSD Org. http://www.freebsd.org 한국 FreeBSD Org.(미러) http://www.kr.freebsd.org 일본 FreeBSD Org. http://www.jp.freebsd.org OpenBSD http://www.openbsd.org NetBSD http://www.netbsd.org BSDI http://www.bsdi.com JUNKER's FreeBSD Page http://jazz.snu.ac.kr/~junker/work/freebsd NuT's FreeBSD page http://nuts.miso.co.kr/freebsd.html 일본 FreeBSD는 아주 활동이 활발한 곳이다. 이곳에서 국제화와 관련된 아주 많은 자료를 얻을 수 있었다. 9.3 USENET 한글 그룹은 han.sys.freebsd가 있고, 영문 그룹으로는 comp.unix.bsd.freebsd.announce와 comp.unix.bsd.freebsd.misc등을 보면 된다. 9.4 FTP FreeBSD Org. ftp://ftp.freebsd.org/pub/FreeBSD 한국 FreeBSD Org.(미러) ftp://ftp.kr.freebsd.org/pub/FreeBSD 일본 FreeBSD Org.(미러) ftp://ftp.jp.freebsd.org/pub/FreeBSD 한국 선사이트 ftp://sunsite.kren.nm.kr/pub/OS/FreeBSD 누리넷 ftp://ftp.nuri.net/pub/FreeBSD 필자의 FTP서버 ftp://jazz.snu.ac.kr/pub/unix/FreeBSD-kr 9.5 메일링 리스트 FreeBSD자체의 메일링 리스트는 아주 종류가 많고 다양하다. 이들에 대한 정보를 얻고 싶다면, Handbook의 26.1절을 보기 바란다. 지금은 한국에 있는 한글관련 메일링 리스만 소개한다. freebsd-hangul메일링 리스트 가입방법: mojordomo@kr.freebsd.org에 다음 내용의 편지를 보낸다. subscribe 유닉스 사용자라면 간단히 보낼 수 있다. # mail majordomo@kr.freebsd.org subscribe freebsd-hangul ^D(콘트롤 D를 누르자) # 탈퇴하려면 majordomo@kr.freebsd.org에 unsubscribe freebsd-hangul <이름> 을 내용으로 해서 보내면 된다. 제목에는 아무것도 넣지 말자. 이제 글을 쓰고 싶으면, freebsd-hangul@kr.freebsd.org로 글을 쓰면 된다. freebsd-current라는 것도 있는데, 이것은 FreeBSD중앙의 freebsd-current와 같은 것이다. 9.6. 기타 그외에, 나우누리에 FreeBSD소모임이 있다. 나우누리 가입자라면 go scom 16해서 FreeBSD모임에 갈 수 있다. 9.7. 프로그램과 기타 관련 웹사이트 한글 패키지와, 기타 관련된 웹사이트들을 소개한다. 9.7.1 FreeBSD정보 BootAsia boot.flp: FreeBSD Japanese/Chinese Installer http://www.mt.cs.keio.ac.jp/person/hosokawa/freebsd-jpinst/ FreeBSD Symmetric MultiProcessor Kernel http://www.freebsd.org/~fsmp/SMP/SMP.html FreeBSD and the Iomega Zip Drive http://www.prism.uvsq.fr/~son/ppa3.html The FreeBSD Japanese Documentation Project http://www.astec.co.jp/~hanai/FreeBSD/ NewBie FreeBSD http://www.bb.cc.wa.us/~chris/docs/docs.html FreeBSD Book Project http://www.bb.cc.wa.us/~chris/book.html An Easy Way to Setup FreeBSD http://escargot.ee.t.u-tokyo.ac.jp/%7Emita/FreeBSD/ X Inside - AcceleratedX Server for FreeBSD http://WWW.XInside.COM:80/axfbsd.html Walnut Creek FreeBSD v2.2.1 CD http://www.cdrom.com/titles/os/fbsd22.htm Xaw의 국제화 버그 http: //cclub.tutcc.tut.ac.jp:1080/netbsd/japanese/netbsd-jp18.html#xawbigfix 9.7.2. 한글관련 Hangul and Internet in Korea FAQ http://pantheon.cis.yale.edu/~jshin/faq/ h2ps http://cglab.snu.ac.kr/~yjlee/n3f/applications/h2ps.html nh2ps http://jazz.snu.ac.kr/~junker/work/nh2ps nhpf http://cglab.snu.ac.kr/~yjlee/n3f/applications/nhpf.html nhppf http://jazz.snu.ac.kr/~junker/work/netscape3-hanfilter 한글 AfterStep http://jazz.snu.ac.kr/~junker/work/afterstep-h 한글 FVWM95 http://jazz.snu.ac.kr/~junker/work/fvwm95-h Linuxdoc-SGML한글패치 http://jazz.snu.ac.kr/~junker/work/linuxdoc-sgml-h HanX http://soback.kornet.nm.kr/~kisskiss/hanx.html Sendmail 8.8.x과 Procmail을 이용한 한글 메일전송 http://pantheon.yale.edu/~jshin/faq/procmail.html Pine 3.92 이후 판과 RFC 1557을 따르는 한글 메일 교환 http://pantheon.yale.edu/~jshin/faq/pine.html elm을 통한 한글메일 교환 http://pantheon.yale.edu/~jshin/faq/README.elm GNU Hurd설치 미니 HOWTO http://jazz.snu.ac.kr/~junker/doc/hurd-howto 9.8 기본 문서 FreeBSD Handbook 이 문서는 FreeBSD를 사용할 때 필요한 거의 모든 내용이 담겨져 있다. 모든 의문사항이나 모르는 것이 있다면 우선적으로 이 글을 보기 바란다. 설치할 때 doc을 설치했다면 /usr/share/doc/handbook디렉토리에서 핸드북을 읽을 수 있다. FreeBSD FAQ 이 문서도 의문사항이 있을 때 한번씩 읽어보기 바란다. 이 문서도 doc을 설치했다면, /usr/share/doc/FAQ에서 읽을 수 있다. 핸드북과 FAQ은 html버전과 텍스트 버전이 있으므로, 웹브라우저로 읽을 수 있다. CD에서도 같은 문서를 extra/doc/디렉토리에서 찾을 수 있다. 10. 끝으로 실제로 우리나라에서는 FreeBSD를 사용하고 있는 사람이 얼마 되지 않는듯 하다. 리눅스를 기반으로 하는 사용자는 상당히 많고, 그들의 활동도 활발하지만, FreeBSD사용자들은 상대적으로 혼자일 수 밖에 없는 경우가 많다. 그래서 그런지 앞으로 소개할 우리나라의 관련 리소스에서는, 그리 활발한 활동이 이루어지고 있지 못하다. 하지만 이 CD를 계기로 많은 활동이 이루어지기를 바란다. 이웃나라 일본 유저들은 상당히 활발한데, 그들은 Handbook도 모두 다 번역할 정도로 열성적이다(doc을 인스톨하면 일본어 Handbook도 같이 설치된다). 그들한테서 많은 정보를 얻을 수 있다는게 다행이었는데, 그것보다는 우리나라에 FreeBSD에도 리눅스의 많은 실력있는 유저들과 같은 사람들이 많이 있었으면 좋겠다. GNU의 커널과 OS시스템인 HURD는, 기본적으로 BSD의 ffs파일시스템에 설치하도록 되어 있다. 물론 리눅스의 ext2fs에도 설치할 수 있겠지만, FreeBSD에 설치하는 것이 아주 쉽다. HURD의 설치에 대해서는, 필자의 홈페이지에 잘 쓰여 있으니 그 정보를 참조하면, 간단하나마 HURD의 맛보기가 가능할 것이다. 현재, FreeBSD의 한글부트 디스켓을 만들고자 하는 프로젝트가 추진중이다. 이것은 게이오대학교의 다쯔미 호소카와씨의 FreeBSD i18n부팅 플로피에 들어갈 메시지와 폰트를 마련하는 것인데, 이미 한글 부팅은 성공하여 여러 메시지의 번역을 앞두고 있다. 관심이 있는 분은 필자에게 연락하기 바란다. 그리고 이 CD의 제작에 도움을 주신 프로그램세계 관계자 여러분, han의 포팅을 해 준 세희, CD커버를 멋지게 그려 준 상택이, i18n문제에 많은 조언을 해준 Andrey A. Chernov씨, CD제작시 도스용 부팅커널을 만드는 힌트를 주고, 이 CD제작에 대한 전반적인 문의사항에 도움을 준 FreeBSD Inc.의 Jordan K. Hubbard, 외국사람이면서도 FreeBSD의 한글환경에 관심이 많은 FreeBSD Document Project의 Christopher J. Coleman씨, 유닉스 한글환경에 많은 도움을 주시는 신정식씨와 다른 han.comp.hangul의 열성적인 활동가 여러분, 나래 사람들, 그리고 유닉스에서 사용할 수 있는 많은 프리소프트웨어를 만든 많은 국내외의 프로그래머들과, 많은 영감을 느끼게 해 준 알짜웨어팀의 이만용님과 다른 분들, 나우누리 리눅스 동호회 여러분들에게 감사를 드린다. 이들이 없이는 이 CD가 나올 수 없었다. 끝으로, 필자에게 port에 대한 조언이나 문의사항은 junker@jazz.snu.ac.kr이나, 나우누리의 junker로 문의하면 된다. 설치에 대한 것은 물어보지 않아주었으면 좋겠다, 쉽게 구할 주 있는 자료들을 반복해서 묻는 것은 좋은 일이 아니며, 이런 질문들은 han.sys.freebsd나 다른 여러 사람들이 볼 수 있는 게시판에 게시하는 것이 여러사람에게 정보를 공유하겠다는 의미에서 더욱 좋다. FreeBSD와 리눅스는 대립적인 관계가 아니다. 오히려 아주 친숙하며, 서로 보완해야만 하는 관계인 것이다. 앞으로 이 두 유닉스가 더욱 발전하고, 이들을 위한 많은 좋은 프로그램들이 개발되기를 바란다. 앞으로 우리의 귀여운 BSD대몬을 여러곳에서 볼 수 있는 날을 바라며...