Linux와 FreeBSD는 서로 다른 두 가지 방식으로 하드 드라이브와 파티션에 이름을 붙인다(label). 이 장에서는 그 두 가지 방식의 주요한 차이점에 대해서 다룰 것이다. 실제로 FreeBSD의 이름 붙이는 방식은 전통적인 BSD 이름 붙이는 스타일을 PC의 fdisk 파티션에 맞게 포팅해서 변환한 것이다. 그래서 그 방식은 NetBSD, OpenBSD, Ultrix, Digital Unix, SunOS, 그리고 Solaris와 같은 다른 BSD 기반 유닉스 시스템과 매우 유사하다.
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 문서를 참고하자.
하드 드라이브는 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 확장 파티션에 있는 어떠한 논리 파티션에도 변화를 가하지 마라!는 것을 당부하고 싶다.