linuxfromscratch:12.4:linux_from_scratch:006-about_the_multilib_edition

Linux From Scratch - Version 12.4

이전
사전 준비

다음
LFS와 표준

Multilib는

오늘날 x86 세계의 대부분의 시스템은 64bit word 크기를 가집니다. word 크기는 한 번에 가장 효율적으로 사용할 수 있는 bit 수를 의미합니다. 이전 x86 프로세서 아키텍처는 32bit word 크기를 가졌는데, 이는 메모리 내 데이터의 최적 정렬 방식에 대한 이해가 다를 뿐만 아니라 서로 다른 크기의 메모리를 주소 지정하는 메커니즘도 다르다는 것을 의미합니다. 64bit 프로세서의 명령어 집합은 32bit 프로세서의 명령어와 상당히 유사하지만, 바이너리(기계어로 컴파일된 객체)는 64비트 시스템에서 직접 실행될 수 없습니다.

멀티라이브러리(Multilib)는 32bit 바이너리가 현대적인 64bit CPU에서 실행될 수 있도록 지원하는 메커니즘입니다.

Multilib 사용 이유

멀티리브를 하는 이유는 무엇인가?

교육적 관점에서, LFS의 ‘기본’ 형태는 소스에서 리눅스 시스템이 어떻게 구축되는지 이해하는 가장 좋은 방법일 것입니다. 다양한 아키텍처로 혼란스러워할 필요가 없습니다. 하지만 32-bit 바이너리를 실행해야 할 필요가 있고, 전체 시스템을 32-bit로 빌드하고 싶지 않을 때(요즘에는 자원 낭비일 수 있습니다) LFS-Multilib가 선택지가 됩니다. 이러한 필요성의 예시는 다음과 같습니다.

  • 소스 없이 32-bit로만 제공되는 폐쇄형 소프트웨어.
    프린터 드라이버나 기타 하드웨어 드라이버의 경우 회사에서 바이너리만 제공하는 경우가 있습니다. 이러한 드라이버가 있다면 LFS-Multlib가 실행에 도움을 줄 수 있습니다.
  • LFS의 범위를 넘어가는 VirtualBox 같은 가상화 플랫폼을 설정하려면 Multilib 지원이 필요합니다.
  • 또는 단순히 가능하기 때문에

LFS Multilib Edition은 이전 장에서 대상 아키텍처에 대해 설명한 내용보다 한 걸음 더 나아가고 한 걸음 물러납니다. 한편으로는 Multilib Edition이 x86_64 아키텍처에만 집중하고 제한되지만, 다른 한편으로는 가능한 두 아키텍처(32-bit 및 64-bit)를 모두 활용하도록 지침을 확장합니다.

또한 LFS의 기본 교육적 접근 방식인 리눅스 시스템 구축 방법을 보여주는 범위를 약간 넘어섭니다. 이를 달성하기 위해 시스템의 기본 아키텍처 외 추가 아키텍처 지원은 필요하지 않습니다. 표준 LFS 빌드 환경을 사용해 시스템을 구축해 본 경험이 없다면, 이 Edition을 사용하기 전에 직접 만들어보시길 권장합니다.

Multilib 시스템 빌드

멀티리브 시스템을 구축하는 것은 ‘기본’ LFS 책을 사용해 시스템을 구축하는 것과 크게 다르지 않습니다. 여기저기 약간의 조정 외에도 가장 두드러진 차이점은 멀티리브 시스템에서는 일부 애플리케이션을 최대 세 번 컴파일해야 한다는 점입니다: 하나는 기본 64-bit 아키텍처용, 하나는 32-bit 아키텍처(m32)용, 그리고 32비트 메모리 접근과 64비트 명령어 세트를 가진 32-bit 아키텍처(mx32)용으로 한 번 더 컴파일해야 합니다.

대상 시스템이 다음 요구 사항을 모두 충족하는 경우에만 계속 진행하십시오:

  • x86_64 호환 기기

    시스템 커널 설정에 접근할 수 있다면, m32용 빌드를 위해 CONFIG_IA32_EMULATION=y가 설정되어 있어야 하며, mx32용 빌드를 위해 CONFIG_X86_X32_ABI=y가 설정되어 있어야 합니다.

    시스템 커널 설정에 접근할 수 없는 경우, 다음 명령어를 실행하여 호환성을 테스트할 수 있습니다:

    echo ‘int main(){}’ > dummy.c
    gcc -m32 dummy.c
    ./a.out
    
    gcc -mx32 dummy.c
    ./a.out
    
    ./a.out 명령어 중 하나라도 “Exec format error” 메시지를 반환한다면, LFS 내에서 해당 아키텍처용 빌드가 가능한 시스템 커널이 없는 것입니다. 따라서 멀티리브 없이 필수 커널 기능을 갖춘 LFS 시스템을 먼저 빌드한 후, 이를 기반으로 멀티리브 시스템을 구축하는 것이 좋습니다.

  • LFS에 대한 경험이 어느 정도 있으신 경우
  • 32비트 지원이 필요한 경우

세 가지 조건을 모두 충족하신다면, Multilib 모드로 LFS를 빌드하시기 바랍니다.


이전
사전 준비

다음
LFS와 표준

  • linuxfromscratch/12.4/linux_from_scratch/006-about_the_multilib_edition.txt
  • 마지막으로 수정됨: 2026/01/01 08:32
  • 저자 baecy