FreeBSD 설치하기

10년이 넘게 FreeBSD로 직지Server를 꾸려왔습니다. 그런데 가끔식 이 server가 애를 좀 먹입니다. 집에 있는 평범한, 그것도 좀 오래된 PC를 써서 꾸며나가는 것이라서 행여 정전이라도 되거나, 비나 눈이 와서 전압이 불안해지면 문제가 생기기 쉽상입니다.

2009년 3월 1일 저녁부터 다음날까지, 제가 있는 Virginia, Richmond에 눈이 30cm가 넘게 왔습니다. 그 일로해서 밤새 전압이 불안했는지, 아침에 일어나 보니 직지server가 Hard Disk 고장으로 죽어있었습니다. 지금 이 글을 쓰는 시점에서는 모든 자료는 간신히 그대로 살렸지만, 여러 설정 문서들과 porgram들을 다시 깔게 되었습니다.

예전에도 FreeBSD설치에 대한 글을 쓴 적이 있는데, 이번에는 좀 다른 각도에서 쓰려고 합니다. 자신의 생각, 그리고 주위에서 벌어지는 일을 객관적으로 기술하여 문서로 남기는 것이 참 중요한 일이라고 생각합니다. 이 문서는 그런 생각에서 출발한 첫 글월이 되겠습니다.

그리고 이 글은 전문가가 아니라 일반 사용자 입장에서 쓴 경험기입니다. - 2009.3.8일 김민수

들어가면서

돌이켜보면 제 삶은 현대 산업화, 그리고 과학기술의 급속한 발달과 거의 그 속도를 같이 해 왔습니다. 따라서 더 새로운 것(새로 올라간 판수), 더 빠른 것(빨라진 CPU와 memory), 더 큰 것(대용량 HardDisk), 들들들,,, 그런 것들이 좋다는 생각이 저도 모르는 사이에 제 생각을 이루는 한 뿌리가 되어왔습니다.

그로 인해, 너무 많이 불편하지 않은 판올림이라면 늘 따라서 해 왔습니다. 보안 관련해서 더 좋네, 기능이 더 많아졌네, 하면서 말이지요. 사실 그러한 면도 없지 않아 있습니다. 특히나 UniCode관련해서는 정말이지, 제가 뭘 어찌 할 수 없는 답답함과, 누군가가 무엇인가 - 정확하게 무엇인지 정의하지도 않은 채 - 해 주기를 바라고, UniCode를 지원하는 기능이 더해지면 늘 판올림을 해 왔으니까요. 아니, 보다 정확히는 판올림을 통해 UniCode지원이 혹시나 더 좋아지지는 않았을까 하는 바람으로 말이지요. 그리고 FreeBSD 5.x때까지 UniCode지원은 참 빈약했습니다1.

이런 저런 배경으로 인해 직지Server는 FreeBSD 7.1을 쓰고 있었는데, 이번에 새로 설치하면서는 6.4로 내려서 깔았습니다. 제 생각의 한 뿌리가 바뀌기 시작했다는 조짐입니다만, :-) FreeBSD 6.4로 결정은 다음과 같은 생각에서 입니다.

그리고 마지막으로, 여지껏은 FreeBSD는 Server로, 그리고 Windows98, XP들을 Clinet로 이용해서 전산화 관련한 기본적인 일을 했는데, 이번 기회에 직지server를 내 개인 PC로도 겸용을 하려는 생각을 하게 되었습니다. 다루는 computer 대수가 많아지면 사실 유지, 관리, 보수하는데 더 시간이 들게 됩니다.

그리고 그동안 Gnome, Kde들을 통해 GNU/Linux/Unix 진영에서의 UniCode, 현대한글 입출력 환경이 정말 좋아졌기 때문입니다. 아직까지 옛한글 입력은 숙제로 남아 있는데, 이에 대해서는 Microsoft Word 기능을 좀 빌려야 할 것 같습니다.

글월의 역사

  1. 2009.3.8: 글월 쓰기 시작.
  2. 2009.3.10: FreeBSD 6.4 최소한으로 설치하기 끝마침.

  3. 2009.3.11:
  4. 2009.3.20:

글월쓰기의 기본 철학

FreeBSD 6.4 ISO image 내려받기

제가 처음으로 한 일은, FreeBSD 6.4 배포판의 ISO image를 내려받아 CD로 구은 겁니다. FreeBSD가 돌아가는 PC가 없어서 Windows XP환경에서 http://www.roxio.com/ Roxio를 이용해서 구웠습니다.

살아 돌아가는 FreeBSD가 설치된 PC에 DVD/CVD ROM기록기가 있는 경우라면, 다음 자료를 참고하여 CD를 쉽게 구울 수 있습니다.

FreeBSD 6.4 최소한으로 설치하기

다음은 최소한의 사양으로 설치하는 모습입니다.

일단 최소한으로 빨리 설치한 후에, /usr/ports/에서 필요한 무른모(software)들을 찾아서 깔 생각입니다.

일단 FreeBSD 6.4 1번 CD를 CD drive에 넣고 PC를 재기동을 하면 제일 처음에 묻는 것은 지역이 어디냐는 것인데, 이는 특정 배포판의 지적재산권에 관련된 질문인 것으로 알고 있습니다. 그런 다음에 바로 다음과 같은 설치 화면으로 갑니다.

개인차이겠지만, 저는 대부분 내 입맛에 맞게 설치(Custom)을 선택합니다.

그러면, 다음과 같은 하위선택사항이 나오는데, 바로 항목 3번, Partition을 선택합니다.

이어서 어떤 HardDisk를 선택해서 설치를 할 것인지를 고릅니다.

다음 설정은 FreeBSD외에 다른 OS는 없는 조건으로 설치하는 것을 보여주기 때문에, 전제 HardDisk 공간을 다 FreeBSD에서 쓸 수 있게끔 잡아준 모습니다.

다음 화면은 BootSector와 관련한 질문인데, FreeBSD 외에 다른 운용체제를 쓰지 않으므로, 표준(Standard)으로 잡아줍니다.

그리고 그 다음은 이름표(Label)를 붙여주는 일입니다. 다음 화면에 보이는 것은 다른 PC에 있는 예로써 실제 직지 server의 설정과는 다릅니다.

여기에서는 예로 하나만 보였지만, 직지 server를 다 설치한 모습은 다음과 같은 구조입니다.

여기까지 다 되었으면 기본 설정은 끝난 것이고, 이제 어떤 것들을 깔아서 쓸 것인지를 고르는 순서입니다. 시간을 아끼기 위해서 최소 설치(Minimal)를 골랐습니다.

이렇게 다 하고 나서, 처음 화면으로 돌아가서, 7번 항목, 저지르기(Commit)를 선택하고, [OK]합니다. 그러면 다음과 같이 어디에서 배포탄을 가져다가 깔 것인지를 물어보는데, Internet연결이 되어 있으면 FTP를 선택하면 되고, 아니면 CD/DVD를 선택하셔도 됩니다. 여기서는 Internet이 연결이 되어 있는 상태에서, FTP로 설치를 하는 경우입니다.

CD/DVD를 선택했다면 알아서 잘 깔리겠지만, FTP를 선택하면 Network설정을 물어봅니다. 다음은 고정 IP가 있는 경우이고, 유동 IP인 경우에는 두번 째 화면 DHCP 질문에서 [YES]하면 됩니다.

다음은 host, domain, gateway, IP 주소, name server, netmask 들을 정해주는 화면입니다. 이 설정은 사용자의 환경, ISP에 따라 변하기 때문에 공란으로 남겨두었습니다.

다음은 직지 server ifconfig 출력 일부입니다. 실제 IP주소는 지웠습니다.

여기까지 모든 것이 다 됐으면 그 다음 화면은 필요한 문서, 무른모(software distribution)들을 복사하는 모습들입니다. 정상적으로 설치가 다 끝나면 다른 설치작업을 또 할 것인지를 물어보는데, 여기에서 [Yes]를 하고 기본설치후에 하는 추가선택사항을 정해줍니다.

기본설치 후에 추가 선택 사항들

다음 그림은 추가 설치를 하겠다고 했을 때의 처음 화면입니다. 이 화면은 sysinstall이라는 명령으로 다시 뛰울 수 있습니다.

기본적으로 세 가지만 더하고 재기동을 하면 됩니다.

먼저, 여기에서 Distributions 줄을 선택하고 Enter를 칩니다.

그러면, 다음과 같은 차림판이 올라오는데, 여기에서 man, src, ports를 선택하고 OK하면 설치가 됩니다. src, ports는 반드시 설치해야 합니다. /!\ src는, 아래 화면에는 선택한 것으로 보이지 않았지만, 나중에 무른모를 설치할 때 필요한 경우가 있으므로, 이참에 설치하는 것이 나중에 시간을 아끼는 길입니다.

그런 다음에 다시 추가 설정화면까지 돌아가서 Root Password를 선택합니다. 화면 아래에 비밀번호를 입력하라는 입력 창이 뜹니다. 두 번, 같은 비밀번호를 입력해서 SuperUser의 비밀번호를 정하십시오.

그 다음으로, 일반 사용자를 하나 더해줍니다. Unix계열에서 root의 권한은 정말 막강하기 때문에, 일반 사용자를 만들어서 그 이름으로 접속하고, 필요할 때만 root로 su해서 쓰는 것이 보안상, 정신 건강상 좋습니다. 사용자를 더하기 위해 User Management를 선택하면 다음과 같은 화면이 뜹니다.

여기에 원하는 사용자 이름과 group을 결정합니다. 저는 처음 사용자에게 wheel group, login shell 로는 /bin/csh를 줍니다.

이런 다음에 설정화면 제일 꼭대기로 가서 X Exit Install을 선택합니다. CD/DVD를 빼고나서 Yes를 누르면 이제 HardDisk에 설치된 FreeBSD 6.4로 처음 기동이 될 겁니다.

직지 Server 돌리는데 필요한 무른모(Software Program)들 설치

다음 설치는 직지 버금 server에 있는 자료를 복구해서 직지 으뜸server로 옮기는 데 필요한 program순서로 설치한 것 입니다. 모든 설치는 root 계정으로 su 해서 했습니다.

모든 설치에 있어서 해야하는 공통 사항

그리고 나서,

직지 server에 설치한 모든 무른모들의 source배포판은 fftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles에 있습니다. Internet만 연결되어 있으면 해당 port에서 make fetch 하면 내려받아 /usr/ports/distfiles에 저장합니다.

이제 각 무른모를 하나씩 살펴보겠습니다.

lynx (2.8.6)

아주 가벼운, 문자기반의 web broswer입니다. 저는 거의 습관적으로 제일 먼저 설치합니다. ping으로도 Internet접속 상태를 확인할 수 있지만, lynx로 간단하게 network의 연결상태를 확인한다든지, web 기능이 잘 돌아가는지 등을 확인 할 때 아주 좋습니다.

MySQL Server/Client (5.0.67)

직지가 친한 사람들 몇 사람에게 제공하는 service가 MySQL을 사용합니다. 그리고, MySQL을 필요로 하는 무른모(software)들이 많이 있으므로 미리 설치해두는 것이 좋을 것 같습니다.

설치후 /etc/rc.conf에 더하는 내용.

설치하고 나서 해야 할 작업들.

Proftpd (1.3.2)

직지 server가 사용하는 FTP 무른모(software)입니다. 버금 server에 연결해서 압축되어 있는 backup 문서들을 옮겨오기 위해서 필요합니다. 그리고 또한 직지 server의 ftp service에도 필요합니다.

/!\ Proftpd는 홀로 시작하게 할 수 있고, inetd, 또는 xinetd에 기대어 시작하게 할 수도있습니다. 직지 server는 xinetd에서 시작을 하게 했기 때문에 나중에 필요한 모든 무른모들이 다 깔린 다음에 설정문서들을 함께 다루겠습니다.

Apache (2.0.63)

Apache는 Internet에 web 기능을 제공하는 무른모입니다. 너무나도 잘 알려져 있어서 별 설명이 필요없지 않을까 싶습니다.

Postfix (2.5.4)

Postfix는 Internet에서 전자우편 기능을 제공하는 무른모입니다. 직지 sever네서 예전에는 sendmail을 썼었는데, FreeBSD 5.x에서 6.x로 판올림 하면서 무슨 문제가 생기는 것을 해결하지 못해서 그냥 Postfix로 바꾼 것이 계기가 되어 아직까지도 쓰고 있습니다. Sendmail은 애초에 WebHosting 업체에서 설정해준 것을 물려받아 쓰는 것이라, 무슨 설정을 하는지도 사실 잘 모르고 썼는데, postfix를 쓰면서는 그래도 뭐하는지는 알면서 설정을 하게 되었습니다. :-)

그리고 나중에 postfix 관련 설정문서는 더 자세히 다루겠지만, 일단 현재 jikji.org의 relay관련한 시험결과는 다음과 같습니다. 직지는 광고성 전자우편을 무척이나 싫어하며, 직지 전자우편 server가 광고성 전자우편을 중계하는데 사용되기를 바라지 않습니다.

cyrus-sasl-saslauthd (2.1.22)

전자우편 중계가 안되기 때문에 postfix가 설치된 server자체에서 보내지 않는이상 mail server를 통해서 쉽게 전자우편을 보낼 수가 없게 되었습니다. 이럴때 필요한 것이 사용자 인증을 통해 믿을 수 있는 사용자가 보내는 경우에는 전자우편을 중계를 허용하는 것 입니다. saslauthd가 그런 인증을 통한 전자우편 중계를 가능하게 하는 무른모입니다. 참 오랜만에 제 windows 98 client에서 직지 server를 통해 전자우편을 보낼 수 있게 되었네요. :-)

dspam (3.6.8)

Mailman (2.1.11)

이 무른모는 전자우편으로 보내는 소식지를 보내고 받을 수 있도록 해줍니다. http://mailman.jikji.org/mailman/listinfo를 보시면 어떤 것인지 아실 수 있을 겁니다. 꼭 설치할 필요가 있는 것은 아닙니다.

그리고 설정을 하는데 좀 애를 먹었습니다. 전 무른모를 설치한 후에 바로 제대로 실행되는 것을 좋아하는데, 뭐 아무런 일도 안 일어나서 Internet을 찾아봐서 설정을 마쳤습니다. 다음 쪽을 참고하십시오. 직지 server처럼 Postfix를 사용하는 경우인데, 정말 정리를 잘 한 것 같습니다.

MoinMoin (1.7.1)

직지 Project는 2005년부터 MoinMoin Wiki로 그 내용을 꾸려가고 있습니다. 긴 방황끝에 공동저작환경으로 고른 wiki입니다. 이번에 오랜만에 판올림을 했는데, MoinMoin 1.7 쓰기에서 제가 느끼는 차이점을 알아가고 있습니다.

판수를 올리면서, 그 이전판수에서 만들어진 글월자료는 http://www.moinmo.in/HelpOnUpdating를 참조해서 새로 고쳤습니다.

그리고, 이 무른모 관련한 설정 문서는 MoinMoin 1.7 쓰기에 있습니다.

Xapian

모인모인에서 HelpOnXapian을 보고 설치했습니다. - 2009.4.11

=== Catdoc ==== 모인모인에서 HelpOnXapian을 보고 설치했습니다. - 2009.4.13

Php5 (5.2.6)

http://en.wiktionary.org/wiki/PHP에 의하면 원래 Personal Home Page tool이었는데, 재귀적 약어로서 PHP Hypertext Preprocessor라고 하네요. 이름이야 어찌되었든 간에, 저는 이 php를 고인물처럼 고정적인 html 문서에 흐르는 물처럭 역동적인 내용을 보여주는 필요에 의해 생겨난 산물이라고 봅니다. 제일 처음 기억하는 php의 쓰임은 문서가 마지막으로 고쳐진 날짜가 언제인지를 보여주는 것이었습니다.

역사야 어찌되었든 간에, php를 쓰는 web 무른모가 있으면 꼭 설치를 해야하는 놈입니다.

Php5-extensions

php5 설치와 함께 다양한 기능들을 더하려면 설치를 해야 합니다. 각종 함수들, library들 입니다.

SSH2 (3.2.9)

Qpopper (4.0.9)

Xinetd (2.3.14)

vim (7.2.14)

PhpBB (2.0.23)

Darwin Streaming Server

제일 많이 쓸 것 같은 내용은 다음과 같습니다.

<html> <object width="425" height="344"> <param name="movie" value="http://IP/sample_300kbit.mov"> </param><param name="allowFullScreen" value="true"></param> <embed src="http://IP/sample_300kbit.mov" type="video/x-msvideo" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> </html>

swftools

FreeBSD 6.4를 개인용 Desktop으로 쓰기

gnome2 (2-2.22)

kde3 (3.5.10)

xorg (7.3_2)

gnome2, kde3를 설치하고 나서 알아서 gdm이 될줄 알았더니 안되었습니다. 혹시나 하고 pkg_info를 해보니, 아니나 다를까, xorg가 설치가 안 된 것이었습니다.

설치를 하고 났더니 gdm이 되네요.

scim-hangul (0.3.1_2)

딸림으로 scim-1.4.7_3가 같이 깔림니다.

baekmukfonts-ttf (2.0_2)

aleefonts-ttf (11.5)

unfonts-ttf (1.0_2)

Bluefish (1.0.7_5)

wget (1.11.2_1 )

FileZilla (3.0.11)

IglooFTP (0.6.1)

Glunarclock (0.32.4)

해는 늘 보기 때문에 그 변화를 쉽게 알 수 있습니다. 그런데, 달은 전기가 발명된 이후로 잘 보지 못하게 되고, 그래서 그 변화를 예전보다 쉽게 알 수 없게 되었습니다. 달의 변화를 눈으로 쉽게 볼 수 있게 해주는 무른모입니다.

Grip (3.2.0)

CD에 들어 있는 소리를 슬기틀에서 읽고 들을 수 있는 문서로 바꾸려고 깔았습니다.

CD2MP3 (0.82)

역시 제일 편한 것은 문자기반의 명령어를 쓰는 풀그림입니다!

FreeBSD 6.4 HardDisk를 Clients와 서로 공유 저장공간으로 쓰기

FreeBSD간에 공유

NFS

Server측 설정

/etc/rc.conf 문서에 다음과 같은 내용을 넣어 줍니다.

그리고 /etc/exports 설정을 바꾸어 준 다음에는 다음과 같이 해줍니다.

Client 측 설정

/etc/rc.conf 문서에 다음과 같은 내용을 넣어 줍니다.

그리고 server측에 접근하려면 다음과 같이 합니다.

Windows

samba (3.0.32)

고급 기능 쓰기

아이들을 키우다 보니 조심스러운 것이 한 두 개가 아닙니다. 물론 아이들에게 옳고 그른 것을 보는 눈과, 강한 의지력을 길러주면 조금이나마 걱정을 던다고 하겠지만, 그 중에서 가장 조심스러운 것이 누리터에서 쓰레기와 보석을 고르는 방법을 알려 주는 것입니다. 그러는 가운데, 사실 어떠한 내용이 언제 어떻게 튀어 나올지 모르는 것이 사실입니다. 이에 누리터 내용에 따라 접근을 제어하는 방법을 생각하게 되었고, 그러기 위해서는 여러 가지 도구들을 써야 하고, 그 도구를 제대로 쓰기 위해서는 내 입맛에 맞게 Kernel을 고쳐 써야 할 일이 생기게 되었습니다.

예전에는 NAT, PF, 뭐 이런 것들 때문에 고쳐 썼는데, 이제는 아이들 때문에 고쳐 쓰게 됩니다. 이로 인해 당분한 직지 누리터 접속이 불안할 수도 있습니다. - 김 민수 2009.04.27

Kernel 입맛에 맞게 고쳐 쓰기

사실 kernel을 자기 입맛에 맞게 고치는 것은 Configuring the FreeBSD Kernel에서 보실 수 있습니다. 저는 이 내용과, Dansguardian Setup with ClamAV Content Filtering & Squid Transparent Proxy의 두 내용을 참고해서 바꾸었습니다.

짧게 여기에 쓰면,

  1. cd /usr/src/sys/i386/conf
  2. cp GENERIC JIKJI
  3. vi JIKJI
  4. JIKJI의 내용을 입맛에 맞게 바꾸어 줍니다.
  5. :wq!
  6. vi /etc/make.conf 해서, KERNCONF=JIKJI 를 넣어 줍니다.
  7. cd /usr/src
  8. make buildekernel
  9. make installkernel
  10. fastboot

다음은 diff /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/JIKJI 결과 입니다.

Squid

Adzap

DansGuardian

FreeBSD 문서 심기

쓸 때 마다 다시 찾게 되는 명령어

머리가 나쁜 것인지, 관심이 없는 것인지, 쓰려고 하면 늘 찾게 되는 명령어 모음.


도움말_갈래, 전산자료_갈래


  1. http://lists.freebsd.org/pipermail/freebsd-questions/2007-September/158371.html
    http://savannah.nongnu.org/bugs/?25688
    http://wiki.freebsd.org/Unicode - It has long been pointed out that FreeBSD has problems with low-level (libc?) support for Unicode. It would be great if a person knowledgeable in the area could rehash the issues here. (1)

  2. http://en.wikipedia.org/wiki/ISO_image (2)

FreeBSD 설치하기 (last edited 2011-11-17 23:01:32 by MinsooKim)