다음 이전 차례

2. FreeBSD 방식의 하드 드라이브 이름붙이기(labelling)

Linux와 FreeBSD는 서로 다른 두 가지 방식으로 하드 드라이브와 파티션에 이름을 붙인다(label). 이 장에서는 그 두 가지 방식의 주요한 차이점에 대해서 다룰 것이다. 실제로 FreeBSD의 이름 붙이는 방식은 전통적인 BSD 이름 붙이는 스타일을 PC의 fdisk 파티션에 맞게 포팅해서 변환한 것이다. 그래서 그 방식은 NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS, 그리고 Solaris와 같은 다른 BSD 기반 유닉스 시스템과 매우 유사하다.

2.1 FreeBSD ``슬라이스(slice)''와 ``파티션(partition)''

FreeBSD는 PC 하드 드라이브에 있는 파티션 테이블 4개 엔트리(entry) 중에 하나를 필요로 한다. 이 주(primary) 파티션을 FreeBSD 용어로는 ``슬라이스(slice)''라고 부른다. 그 주 파티션에는 여덟 개까지의 파티션을 만들 수 있는데, 그러기 위해서는 disklabel 프로그램을 사용한다. 이 논리(logical) 파티션을 FreeBSD 용어로는 ``파티션(partion)''이라고 부른다. 이러한 관념은 Linux(DOS도 마찬가지)가 확장(extended) 파티션에서 논리(logical) 파티션을 다루는 방법과 비슷하다. Linux(혹은 DOS)로 만든 확장 파티션에는 FreeBSD를 설치할 수는 없다. Linux fdisk 프로그램은 메인 메뉴에서는 FreeBSD 슬라이스로 된 BSD 파티션을 보여주지 않지만, `b' 명령을 사용하면 BSD 디스크라벨(disklabel) 정보를 볼 수 있다. 출력은 다음과 같은 형태로 이루어진다(/dev/hda4가 FreeBSD 슬라이스이다):

bash# fdisk /dev/hda

Command (m for help): p

Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/hda1   *        1        1       27    54400+  83  Linux native
/dev/hda2           28       28       55    56448   83  Linux native
/dev/hda3           56       56      403   701568   83  Linux native
/dev/hda4          404      404      621   439488   a5  BSD/386

Command (m for help): b
Reading disklabel of /dev/hda4 at sector 1624897.

BSD disklabel command (m for help): p

8 partitions:
#        size   offset    fstype   [fsize bsize   cpg]
  a:    64512  1624896    4.2BSD        0     0     0   # (Cyl.  404 - 419)
  b:   104832  1689408      swap                        # (Cyl.  420 - 445)
  c:   878976  1624896    unused        0     0         # (Cyl.  404 - 621)
  e:    64512  1794240    4.2BSD        0     0     0   # (Cyl.  446 - 461)
  f:   645120  1858752    4.2BSD        0     0     0   # (Cyl.  462 - 621)

BSD disklabel command (m for help): q
bash#

첫 번째 열에 있는 `a'에서 `f'까지의 문자는 아래에 있는 FreeBSD 슬라이스의 예에서 보여지는 라벨(label)과 완전히 일치한다. BSD 어법(parlace)에 따라 세 개의 특별한 파티션들이 있다. 문자 `a'는 루트 파티션을 가리키고, `b'는 스왑(swap) 파티션을 가리키며, `c'는 전체 슬라이스를 가리킨다. 다른 파티션 형태에 이러한 문자를 배정하는 ``표준'' 방법에 대해서 더 많은 정보가 필요하다면 FreeBSD 문서를 참고하자.

2.2 Linux와 FreeBSD에서 드리이브와 파티션 이름붙이기(labelling)

하드 드라이브는 Linux와 FreeBSD에서 다음과 같은 방식으로 이름이 붙여진다:

                        Linux           FreeBSD
First IDE drive         /dev/hda        /dev/wd0
Second IDE drive        /dev/hdb        /dev/wd1
First SCSI drive        /dev/sda        /dev/sd0
Second SCSI drive       /dev/sdb        /dev/sd1

하나의 IDE 드라이브에 있는 파티션(FreeBSD 슬라이스)는 다음과 같은 방식으로 이름이 붙여진다(예에서는 /dev/hda를 사용하였다):

                                Linux           FreeBSD
First primary partition         /dev/hda1       /dev/wd0s1
Second primary partition        /dev/hda2       /dev/wd0s2
Third primary partition         /dev/hda3       /dev/wd0s3
Fourth primary partition        /dev/hda4       /dev/wd0s4

필자의 FreeBSD 슬라이스에 있는 파티션들은 다음과 같은 방식으로 이름이 붙어있다. 그 방식은 내정치(default)로 붙여지는 이름들이다. FreeBSD의 맞춤(custom) 설치를 한다면 그 이름들을 바꾸는 것도 가능하다 (이번 예에서는 /dev/hda4가 FreeBSD 슬라이스이다):

Linux label     FreeBSD label   FreeBSD mount point 
/dev/hda5       /dev/wd0s4a     /
/dev/hda6       /dev/wd0s4b     swap
/dev/hda7       /dev/wd0s4e     /var
/dev/hda8       /dev/wd0s4f     /usr

Linux에서 dmesg를 실행하면, 다음과 같은 메세지로 이 사실을 확인할 수 있을 것이다(이것이 제대로 동작하려면 UFS filesystem support를 선택한 다음 커널을 새로 컴파일해야한다. Linux 설치 및 준비 절을 참조하자):

Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >

FreeBSD를 /dev/sd1s3 슬라이스(Linux 어법으로는 /dev/sdb3)에 설치하고, /dev/sdb2가 두 개의 논리 파티션(/dev/sdb5/dev/sdb6)을 가진 Linux 확장 파티션이라면, 앞의 예는 다음처럼 보일 것이다:

Linux label     FreeBSD label   FreeBSD mount point 
/dev/sdb7       /dev/sd1s3a     /
/dev/sdb8       /dev/sd1s3b     swap
/dev/sdb9       /dev/sd1s3e     /var
/dev/sdb10      /dev/sd1s3f     /usr

이것들은 dmesg 출력에서 다음처럼 나타날 것이다.

Partition check:
 sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >

FreeBSD 슬라이스 뒤에 리눅스 확장 파티션을 가지고 있다면 곤란한 상황에 처하게 된다. 대부분의 Linux 커널 설치 플로피는 UFS 지원없이 컴파일되어 있기 때문에, 슬라이스 안에 있는 FreeBSD 파티션을 인식하지 못할 것이다. 다음과 같이 나타나야 할 것이(/dev/hda3가 FreeBSD 슬라이스이고 /dev/hda4가 Linux 확장 파티션이다)

Partition check:
hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >
다음처럼 나타난다:
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 >

이것은 잘못된 장치 배정으로 데이타를 잃어 버린다. 항상 모든 Linux 확장 파티션 뒤에 FreeBSD 슬라이스를 설치하고, FreeBSD를 설치하고 난 이후에 Linux 확장 파티션에 있는 어떠한 논리 파티션에도 변화를 가하지 마라!는 것을 당부하고 싶다.


다음 이전 차례