웹마스터 팁

드디어 OpenBSD3.2가 릴리즈 되었군요.
Redhat의 새로운 릴리즈가 일으키는 반향과는 비교할 수 없지만, 보안과 관련해서는 항상 관심의 초점이죠.
대문에 보니 One remote hole in the default install, in nearly 6 years! 문구가 있군요.
몇달 전만 해도 No remote hole in the default install, in nearly 6 years! 였는데.
" 기본 설치시 지난 6년간 1번의 보안구멍만이 발견되었습니다. " 아마 ssh 관련 문제였었죠....

아뭏튼 새벽에 설치하는 동안 잠시 짬을 내어 설치가이드를 작성해 보았습니다.
참고로 OpenBSD는 FreeBSD, NetBSD, BSDI와 함께 버클리 CSRG(Computer Systems Research Group)의 마지막 작품인 4.4BSD-Lite2에 기반한 정통 유닉스 운영체제로써, 미국의 암호화 관련 수출 제한 규정에 구애받지 않으면서 산업계에서 가장 강력한 보안성을 제공하기 위해 NetBSD에서 파생된, 강력한 보안성을 지닌 운영체제입니다.

홈페이지 : http://www.OpenBSD.org

====================
[ ] 안에 표시된 것은 OpenBSD가 기본적으로 제시하는 것입니다. 대개의 경우 그대로 따르면 되지만 필요에 따라 자신만의 값을 써주면 됩니다.
<Enter> 라고 표시된 것은 사용자가 엔터키를 치라는 의미입니다.
. . . 은 화면에 프린트되는 문구들을 생략한 것입니다. 필요하지는 않지만 실제 설치할 경우 찬찬히 읽어보시면 도움이 될 수도 있습니다.
이 가이드로 인해 닥치게 될 지도 모르는 피해 혹은 불행에 대해 저는 어떠한 책임도 질 수 없음을 밝힙니다.
====================

부팅 디스켓 만들기.

설치는 굳이 CD이미지를 다운받을 필요없이 디스켓 한장으로 모든 설치가 끝납니다. CD이미지는 아예 없습니다. OpenBSD를 지원하고 싶으신 분들은 홈페이지에서 CD를 주문하세요.
여기서는 디스크를 통해 부팅, ftp를 이용하여 설치를 마치겠습니다.

부팅 디스켓을 만들기 위해 일단 다음 이미지를 다운받습니다.
ftp://ftp.openbsd.org/pub/OpenBSD/3.2/i386/floppy32.fs

이외에도 floppyB32.fs, floppy32C.fs 등이 있는데 SCSI, RAID등 특수한 경우에 사용되는 것이고 위의 것이 스탠다드입니다.
자세한 사항은 INSTALL.i386을 읽어보시면 됩니다. - 사실 여기에 설치와 관련된 아주 자세한 정보가 모두 들어있습니다.

저는 FreeBSD에서 부팅 디스켓을 만들었습니다.

# fdformat -f 1440 fd0.1440
VVVVVVVVVVVVVVVV done
# dd if=floppy32.fs of=/dev/fd0 bs=126b

윈도우 사용자라면 rawrite 나 fdimage 를 사용하면 됩니다. ftp 사이트의 tools 폴더를 찾아보십시오. (/pub/OpenBSD/tools)
다음은 홈페이지에 있는 사용법입니다.

Example usage of rawrite:   C:> rawrite
  RaWrite 1.2 - Write disk file to raw floppy diskette

  Enter source file name: floppy32.fs
  Enter destination drive: a
  Please insert a formatted diskette into drive A: and press -ENTER- : Enter

Example Usage of fdimage:   C:> fdimage -q floppy32.fs a:

Example Usage of ntrw:   C:> ntrw floppy32.fs a:
  3.5", 1.44MB, 512 bytes/sector
  bufsize is 9216
  1474560 bytes written

전 사용해보지 않아서 잘 모르겠지만 복잡해 보이거나 하지는 않네요... ^^



설치하기

본격적으로 설치에 들어갑니다. 디스켓을 삽입하고 컴퓨터를 켭니다. 디스켓으로 부팅이 안된다면 바이오스에서 부팅 순서를 바꿔줍니다.
이하 경어는 생략합니다. 양해 바랍니다.

erase ^?, werase ^W, kill ^U, intr ^C
(I)nstall, (U)pgrade or (S)hell? i

인스톨은 I, 업그레이드는 U, 쉘로 빠지려면 S. 당연히 I.

환영의 메세지가 나오며 설치에 필요한 기본설정을 한다.

Welcome to the OpenBSD/i386 3.2 installation program.
.
.
.

Specify terminal type: [vt 220] <Enter>
Do you wish to select a keyboard encoding table? [n] <Enter>

터미널 타입과 키보트 인코딩 셋을 정한다. 그냥 엔터 치면 된다.
.
.
.

Proceed with install? [n]  y

계속 진행하겠느냐는 질문. 당연히 y 를 입력하여 계속 설치를 진행한다.
.
.
.

Available disks are: wd0 wd1
Which one is the root disk? (or done) [done] wd0
Do you want to use *all* of wd0 for OpenBSD? [no] yes

현재 사용가능한 디스크를 표시해 주고 있다. 현재 wd0, wd1 두개의 디스크가 사용가능한 것으로 표시된다.
루트로 사용할 디스크를 정해주고(wd0), 모든 용량을 사용하겠다면 yes 를 선택한다.
.
.
.

다음은 파티션 편집이다. OpenBSD는 그 방식이 낯설어서 애매하긴 한데, 생소해서 그렇지 조금만 익숙해지면 아주 간편하다는 것을 몸과 마음으로 느낄 수 있다.

Initial lavel editor (enter '?' for help at any prompt)
>
> ?

?를 치면 언제나 도움말을 보며준다.
다음 명령어들을 잘 기억하자.
사실 쓰는 것은 a, d, p, w, q 정도이다.

Available commands:
        p [unit]  - print label.
        M         - show entire OpenBSD man page for disklabel.
        e         - edit drive parameters.
        a [part]  - add new partition.
        b         - set OpenBSD disk boundaries.
        c [part]  - change partition size.
        d [part]  - delete partition.
        g [d|b]   - Use [d]isk or [b]ios geometry.
        m [part]  - modify existing partition.
        n [part]  - set the mount point for a partition.
        r         - recalculate free space.
        u         - undo last change.
        s [path]  - save label to file.
        w         - write label to disk.
        q         - quit and save changes.
        x         - exit without saving changes.
        X         - toggle expert mode.
        ? [cmnd]  - this message or command specific help.
Numeric parameters may use suffixes to indicate units:
        'b' for bytes, 'c' for cylinders, 'k' for kilobytes, '+ 'm' for megabytes,
        'g' for gigabytes or no suffix for sectors (usually 512 bytes).
        Non-sector units will be rounded to the nearest cylinder.

Entering '?' at most prompts will give you (simple) context sensitive help.

>p (현재의 파티션 상태를 보여준다.)

device: /dev/rwd0c
type: ESDI
disk: ad0s1
label:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 64
sectors/cylinder: 4032
cylinders: 1022
total sectors: 4124673
free sectors: 0
rpm: 3600

8 partitions:
# size offset fstype [fsize bsize cpg]
a: 3277953 63 4.2BSD 1024 8192 16
b: 846720 32778016 swap
c: 4124673 63 unused 0 0

현재 wd0 디스켓의 상태는 위와 같다. wd0a 와 wd0b 로 나뉘어져 있다. 이 둘을 지운다.
>
>d a
>d b  
>p

다시한번 상태를 보면 다음과 같다. a, b 가 지워졌음을 알 수 있다.

device: /dev/rwd0c
type: ESDI
disk: ad0s1
label:
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 64
sectors/cylinder: 4032
cylinders: 1022
total sectors: 4124673
free sectors: 0
rpm: 3600

8 partitions:
# size offset fstype [fsize bsize cpg]
c: 4124673 63 unused 0 0

이제 추가를 해보자. a 명령어를 이용하면 된다.
>
> a a
offset: [83]
size: [4124673] 1600m
Rounding to nearest cylinder: 3277953
FS type: [4.2BSD]
mount point: [none] /
>
>a b
offset: [3278016]
size: [846720]
FS type: [swap]
>
>w
>p

/ 와 스왑만을 지정해 주었다.
파티션 테이블을 저장하고(w) 종료(q)한다.

Available disks are: wd1
Which one do you wish to initialize? (or done) [done] wd1
Do you want to use *all* of wd0 for OpenBSD? [no] yes


가능한 다른 디스크를 표시해주고 있다. 이 경우 wd1이 사용가능하다는 이야기인데, 파티션을 지정하려면 디스크의 이름을(wd1) 필요없다면 그냥 엔터(done)를 눌러준다.

===이하 파티션 편집과정은 wd0와 같음===


You have configured the following devices and mount points:

다음 마운트 포인트를 설정했다는 말이 나온다. 파티션의 편집은 사람마다 틀리고 목적에 따라 틀리지만 여러가지 이유로 파티션 나누어 사용할 것을 권한다. 나는 그냥 통째로 사용하는 편이다.

wd0a /
wd1e /var
wd1f /home

Are you really sure that you're ready to proceed? [n] y

계속할 준비가 되었느냐는 질문. 심호흡을 한번하고 y를 누른다. 하드디스크는 이제 돌이킬 수 없다.
.
.
.

다음은 네트웤 설정이다. ftp를 통해 설치를 하기때문에 이부분이 정확해야 설치를 완료할 수 있다. 질문을 잘 읽어보고 답한다.

Enter system hostname (short form, e.g. 'foo'): [] dev
Configure the network [y] <Enter>
Enter DNS domain name (e.g. 'bar.com'): [my.domain] your.domain

가능한 네트웤카드가 나온다.

Available interfaces are: rl0
Which one do you wish to initialize? (or done) [rl0] <Enter>
IP address for rl0 (or 'dhcp')?  192.168.0.9  (DHCP를 사용하면 dhcp라고 적어주고 아닌 경우 아이피를 적어준다.)
Symbolic (host) name? [dev]
Netmask? [255.255.255.0]
The default media for rl0 is
       media: Ethernet autoselect (none)
Do you want to change the default media? [n] <Enter>

네트웤카드의 미디어 타입을 정한다. 보통은 엔터를 쳐주면 되지만, 변경을 원한다면 y를 누른다. 가능한 미디어 타입이 쭉 나오고 그중 하나를 선택하면 된다.

Done

다음은 게이트웨이와 네임서버의 설정이다. 사용하는 값을 적어주면 된다.
아마 dhcp 의 경우 이것은 불필요할 것이다.

Enter IP address of default route: [none] 192.168.0.1
Enter IP address of primary nameserver: [none] 168.126.63.1
Would you like to use the nameserver now? [y] <Enter>
Do you want to do more, manual, network configuration? [n]

=====================

원래는 이렇게 나가야 정상인데 realtel8139 카드가 인식이 안되네요.
Done - no interfaces found 가 나오네요. 이런.
네트웤 카드를 바꾸고 다시 시도해서 올리도록 해 보겠습니다.
남은것 SMC 1211 밖에 없는데 이것 역시 안되면 가이드는 많이 연기됩니다.

설치를 마치고 올렸어야 정상인데, 나중으로 미루다 보면 결국 안올릴까봐 우선 1편만 올립니다. 속편을 기다려주세요.

======================
이어집니다.

결국 SMC카드로도 실패하고 이것저것 해보다가 랜카드 문제가 아닌것 같아 다시 시도해보고 성공했습니다.
위 메뉴중Do you want to do more, manual, network configuration? [n] 에서 y 를 선택 쉘로 빠져서 라우터로 핑을 때리니 나가더군요.
ifconfig -a 명령을 내려보면 정상적으로 잡혀있고...
인터넷 연결에 문제가 없다는 생각이 들어 그냥 계속 진행해 보았습니다. 쉘에서 exit를 쳐서 설치메뉴로 빠져나갑니다.
======================

Password for root account (will not echo):
Password (again):

root 를 위한 패스워드를 설정한다. 화면에는 표시되지 않으므로 주의하자.

.
.
.

다음은 설치매체를 정한다. ftp를 이용하여 설치할 것이므로 f 를 선택하고, 기타 설정은 자신의 상태에 맞추어 주면 된다.

device: or a (f)tp, (n)fs or (h)ttp server.
Where are the install sets you want to use? (m, c, f, etc.)? f
HTTP/FTP proxy URL? (e. g. 'http://proxy:8000', or 'none') [none]
Do you want to see a list of potential ftp servers? [y] n

y 를 누르면 전체 서버의 목록을 보여주지만 아직 3.2 가 미러링 되지 않은 곳도 존재하므로 n 을 눌러 취소하고 서버의 주소를 수동으로 적어준다.

Server IP address, or hostname? ftp.openbsd.org
Does the server support passive mode ftp? [y]
Server directory? [pub/OpenBSD/3.2/i386]
Login [anonymous]

다음은 인스톨 셋을 선택한다. 목록중에서 필요한 것이 있으면 '+' 를 이용해 추가하고 필요없는 것은 '-' 를 이용해 삭제한다.

The following sets are available. Enter a filename, 'all' to select all the sets, or 'done'. You may de-select a set by prepending a '-' to its name.
        [X] base32.tgz
        [X] etc32.tgz
        [X] misc32.tgz
        [X] comp32.tgz
        [X] man32.tgz
        [X] game32.tgz
        [ ] xbase32.tgz
        [ ] xshare32.tgz
        [ ] xfont32.tgz
        [ ] xserv32.tgz
        [X] bsd
File name? (or 'done') [xbase32.tgz] all

The following sets are available. Enter a filename, 'all' to select all the sets, or 'done'. You may de-select a set by prepending a '-' to its name.
        [X] base32.tgz
        [X] etc32.tgz
        [X] misc32.tgz
        [X] comp32.tgz
        [X] man32.tgz
        [X] game32.tgz
        [X] xbase32.tgz
        [X] xshare32.tgz
        [X] xfont32.tgz
        [X] xserv32.tgz
        [X] bsd
File name? (or 'done') [xbase32.tgz] -game32.tgz

The following sets are available. Enter a filename, 'all' to select all the sets, or 'done'. You may de-select a set by prepending a '-' to its name.
        [X] base32.tgz
        [X] etc32.tgz
        [X] misc32.tgz
        [X] comp32.tgz
        [X] man32.tgz
        [ ] game32.tgz
        [X] xbase32.tgz
        [X] xshare32.tgz
        [X] xfont32.tgz
        [X] xserv32.tgz
        [X] bsd
File name? (or 'done') [game32.tgz] done
Ready to install sets? [y]

설치에 필요한 화일들을 받아온다. 속도는 다소 느린 편이나 인내심을 갖고 기다리자.

Getting base32.tgz ...
100% |**************************************************| 23869 KB    06:57
Getting etc32.tgz:
100% |**************************************************|   1447 KB    00:26
Getting misc32.tgz:
100% |**************************************************|   1666 KB    00:27
Getting comp32.tgz:
100% |**************************************************| 16798 KB    04:37  
Getting man32.tgz:
100% |**************************************************|   5428 KB    01:34    
Getting bsd:
100% |**************************************************|   4409 KB    01:23
Getting xbase32.tgz:
100% |**************************************************|   8831 KB    02:31  
Getting xshare32.tgz:
100% |**************************************************|   1531 KB     00:31
Getting xfont32.tgz:
100% |**************************************************| 30656 KB     08:57
Getting xserv32.tgz:
100% |**************************************************| 14797 KB     04:21
Extract more sets? [n]
Do you expect to run the X Window System? [y]

x 윈도우를 사용하기 위해서 y를 선택한다.

Saving configuration files.... done
Generating initial host.random file ..... done

마지막으로 타임존을 설정한다. 아래의 절차를 생략하려면 Asia/Seoul 이라고 바로 입력해도 되다.

What timezone are you in? ('?' for list) [US/Pacific] ?

Africa/      Chile/       GB-Eire      Israel       NZ-CHAT      Turkey
America/     Cuba         GMT          Jamaica      Navajo       UCT
Antarctica/  EET          GMT+0        Japan        PRC          US/
Arctic/      EST          GMT-0        Kwajalein    PST8PDT      UTC
Asia/        EST5EDT      GMT0         Libya        Pacific/     Universal
Atlantic/    Egypt        Greenwich    MET          Poland       W-SU
Australia/   Eire         HST          MST          Portugal     WET
Brazil/      Etc/         Hongkong     MST7MDT      ROC          Zulu
CET          Europe/      Iceland      Mexico/      ROK          posixrules
CST6CDT      Factory      Indian/      Mideast/     Singapore
Canada/      GB           Iran         NZ           SystemV/       right/

What timezone are you in? ('?' for list) [US/Pacific] Asia
Select a sub-timezone of 'Asia' ('?' for list): Seoul
You have selected timezone 'Asia/Seoul'.

타임존 설정이 끝나면 디바이스를 설치하고 MBR을 설정하고 마무리 작업을 한다.

Making all device nodes.....

.
.
.


대단원이다. reboot 로 재부팅 한다. 재 부팅시 설치디스크는 제거해야 하다.

CONGRATULATIONS!  You have successfully installed OpenBSD!  To boot the
installed system, enter halt at the command prompt. Once the system has
halted, reset the machine and boot from the disk.

# reboot


OpenBSD로 부팅이 성공한다면 새로 사용자를 추가하고 필요한 팩키지를 설치하고 커널을 컴파일하고 자신의 용도에 알맞게 사용하면 된다.

기타 :
대략적으로 필요한 부분만 다루다보니 자세한 옵션이나 설정등의 내용이 부실하다. 스스로 이것저것 해보면서 알아보기 바란다.
설치에 사용된 머신은 Pentiam mms-200, 64M램, cirrus-login 5464, realtek8139, sb16, USB MOUSE, PS/2 키보드의 사양이다.
설치에 걸리는 시간을 ftp로 화일을 받아오는 시간을 제외하고는 매우 짧다. 10분만에도 끝낼 수 있다.
설치후 디스크 사용량은 대략 270메가 정도이다.




참고로 스크린샷입니다. 이건 3.1입니다. 3.2로 나중에 올리겠습니다.

http://www.nzeo.com/bbs/zboard.php?id=main_desktop&page=7&sn1=&divpage=1&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=2241