다음 이전 차례

6. 외부 바이너리 실행

6.1 Linux에서의 FreeBSD 바이너리 실행

iBCS 패키지는 Linux 하에서의 FreeBSD 바이너리 실행에 대한 지원하고 있다; 그러나 그것은 오래되었으며 관리되어지지않고 있다. 필자 자신을 그것을 제대로 작동시킬 수 없었다. 이와 관련해서 필자보다 운이 좋았던 사람이 있다면 반드시 알려주기 바란다.

6.2 FreeBSD에서의 Linux 바이너리 실행

FreeBSD는 a.out과 ELF 형식으로 된 Linux 바이너리를 실행할 수 있다. 이것을 하기 위해서는 다음 세 단계를 거쳐야 한다:

  1. Linux와의 호환이 가능하도록 해야 한다. (FreeBSD 2.2.2에서 --- 다른 버젼에서는 세부적인 것들이 달라질 수 있다) 이것을 하기 위해서는 /etc/rc.conf 파일을 수정해서
    linux_enable="NO"
    
    을 다음과 같이
    linux_enable="YES"
    
    로 바꾸고 리부팅해야 한다. Linux 바이너리 지원을 로드하는 또다른 방법은 명령어 /usr/bin/linux을 실행하는 것이다. 이 방법으로 하면 리부팅할 필요가 없으며, 항상 Linux 바이너리 지원을 로드하는 것도 아니다(즉, 메모리를 절약할 수 있다). 새로운 FreeBSD 커널을 만든다면 FreeBSD 커널 설정(config) 파일에 다음 줄을 추가하는 것을 잊지 않도록 하자.
    options         COMPAT_LINUX
    
  2. Linux 바이너리가 동적으로 링크되어있을(dynamically linked) 경우에는 Linux 공유 라이브러리를 설치해야 한다. 그 라이브러리들은 FreeBSD 2.2.{2,5,6}에서는 linux_lib-2.4.tgz라는 패키지로 포함되어 있다. 패키지를 설치하기 위해서는 다음 명령어를 실행한다:
    pkg_add <path_to_package>/linux_lib-2.4.tgz
    
    <path_to_package>는 패키지가 저장되어있는 디렉토리이다.
    pkg_add ftp://ftp.freebsd.org/pub/FreeBSD/packages-stable/All/linux_lib-2.4.tgz
    
    /stand/sysinstall를 재실행함으로써 네트웍으로 패키지를 설치할 수도 있다. /stand/sysinstall를 사용할 경우에는 ``Configure'', ``Packages''를 선택한 다음 메뉴를 사용하면 된다. 정적으로 링크된(statically linked) Linux 바이너리를 실행하려고 할 때는 다음 명령러를 실행시켜야 한다:
    brandelf -t Linux <name_of_statically_linked_linux_binary>
    
  3. 실행하고자 하는 Linux 프로그램을 설치한다. 프로그램은 UFS나 ext2fs 파일시스템 어디에나 설치할 수 있다. FreeBSD에서 ext2fs 파일시스템을 사용하는 것에 대한 더 자세한 정보는 FreeBSD에서의 ext2fs 파일시스템 마운트 절을 참고하기 바란다.

필자는 이 방법을 사용해서 FreeBSD 2.2.2에서 Applixware 4.3과 Netscape 3.01의 Linux버젼(둘 다 ELF 형식)을 성공적으로 실행시켰다(물론, 필자도 Netscape 4의 FreeBSD 전용 버젼이 있다는 것을 알고 있다). acroread와 StarOffice도 FreeBSD 하에서 잘 작동한다. 이 주제에 대한 더 많은 정보를 얻기 위해서는 FreeBSD 문서를 읽도록 하자.


다음 이전 차례