다음 이전 차례

3. Linux와 FreeBSD간의 스왑(swap) 공간 공유

이 섹션은 필자가 Linux와 FreeBSD가 스왑(swap) 공간을 어떻게 공유시켰는가를 설명한다. 이와 같은 결과를 만들어내는데 다른 방법이 있을 수도 있다. 그렇게 하기를 원한다면 Linux보다 FreeBSD를 먼저 설치할 수 있는데, FreeBSD 슬라이스에 들어가는 파티션들의 순서에 주의를 해야한다.

3.1 Linux 설치 및 준비

첫번째 단계는 평상시처럼 Linux를 설치하는 것이다. 하드디스크에 FreeBSD 슬라이스를 위한 공간을 남겨두도록 한다. Linux 스왑(swap) 파티션을 만들 필요는 없지만, 원한다면 FreeBSD에 할당한 공간에 만든다. 그렇게 하면 나중에 Linux 스왑 파티션을 지우고, FreeBSD를 위한 공간으로 사용할 수 있다.

Linux를 인스톨한 후에는 새로운 커널을 만들어야 한다. 커널 컴파일하는 일에 익숙하지 않다면, Linux Kernel HOWTO를 읽어보도록 하자. 커널을 만들 때 UFS filesystem support (read only) BSD disklabel (FreeBSD partition tables) support반드시 포함해야 한다:

UFS filesystem support (read only) (CONFIG_UFS_FS) [N/y/m/?] y
BSD disklabel (FreeBSD partition tables) support (CONFIG_BSD_DISKLABEL) [N/y/?] (NEW) y

새 커널을 설치하고 리부팅한다. 만약 Linux 스왑 파티션을 만들었다면 /etc/fstab 파일에서 swap이라는 단어를 포함하는 모든 줄을 삭제하자. 새로 만든 커널을 가진 Linux 부트 플로피가 제대로 동작하는지 확인해야 한다. 이제 FreeBSD를 설치할 차례이다.

3.2 FreeBSD 설치

FreeBSD 문서에 나와 있는 대로 FreeBSD를 설치한다. Linux 스왑 파티션을 만들었다면 지우도록 하자(FreeBSD fdisk 프로그램을 사용하면 된다). FreeBSD 슬라이스 안에 들어있는 파티션들의 순서에 주의하도록 한다. 내정된(default) 이름들을 사용한다면 두 번째 파티션이 스왑 파티션이 될 것이다. FreeBSD 설치를 마치면 새로 만든 Linux 부트 플로피를 사용하여 Linux로 리부팅해 들어간다.

3.3 Linux에서 FreeBSD 스왑(swap) 공간 셋업

Linux로 부팅해 들어갔으면 dmesg를 실행하자. 출력에서 다음과 같은 메세지를 볼 수 있어야 한다:

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

이것은 /dev/hda4는 FreeBSD 슬라이스이며 /dev/hda5, /dev/hda6, /dev/hda7 그리고 /dev/hda8은 FreeBSD 파티션임을 의미한다. 만약 스왑 파티션이 슬라이스 안의 두 번째 파티션이라면, 그것은 /dev/hda6가 될 것이다.

스왑 파티션을 사용하려면 Linux의 /etc/fstab 파일에 다음 줄을 추가해야 한다.

/dev/hda6       none            swap            sw              0       0

FreeBSD는 어떤 종류의 파티션이든지 스왑 공간으로 사용할 수 있지만, Linux는 스왑 파티션에서 특별한 표시(signature)를 필요로 한다. 그 표시는 mkswap을 사용하여 만든다. 그런데, FreeBSD가 그 공유되어지는 스왑 파티션을 사용할 때 이 표시를 없애 버리기 때문에, Linux로 부팅할 때마다 mkswap을 실행시켜야 할 것이다. 이것을 자동으로 하기 위해서는 부트할 때 swapon을 실행시키는 스크립트를 찾아야 한다. Red Hat Linux에서는 그 스크립트는 /etc/rc.d/rc.sysinit이다. 그 파일에서 swapon -a하는 부분 바로 앞에 다음 줄을 넣어주도록 하자:

awk -- '/swap/ && ($1 !~ /#/) { system("mkswap "$1"") }' /etc/fstab

이것은 매번 부팅할 때마다 /etc/fstab에 있는 주석처리(그 줄 첫 번째 칸에 ``#''를 넣어주면 된다)되지 않은 스왑 파티션에 대하여 mkswap을 실행시킬 것이다.

다시 Linux로 리부팅했을 때 스왑 공간의 크기를 확인하기 위해서 free를 실행하도록 한다. 또한 모든 것이 원하는 대로 작동하는지 확인하기 위해서 FreeBSD로도 리부팅해 들어가야 한다. 만약 제대로 작동하지 않는다면, 아마도 스왑 공간으로서 잘못된 파티션을 사용했을 것이다. 그 문제에 대한 유일한 해결책은 FreeBSD를 재설치하고 다시 시도해 보는 것이다. 경험은 위대한 스승이다. :-)


다음 이전 차례