리눅스 · 4 min read · Jan 03, 2026
IHLFS: 설치하는 것에 대한 완전한 제어
IHLFS: 설치하는 것 확인하기 (및 기타)
소개
LFS (Linux From Scratch) 사용자로서 저는 제 시스템에 설치된 패키지에 관심이 있습니다.
LFS에 대한 간단한 소개: LFS는 Suse나 RedHat과 같은 배포판이 아니라, LFS 커뮤니티는 여러분이 자신의 리눅스 시스템을 설정할 수 있도록 안내서를 제공하는 것을 목표로 합니다. 웹사이트에는 여러분이 처음부터 자신의 리눅스 시스템을 구축하는 방법이 매우 자세히 설명되어 있습니다. 모든 패키지는 소스를 컴파일하고 설치하여 설치됩니다.
LFS 커뮤니티에서는 설치된 패키지를 추적하는 방법에 대한 조사가 있었습니다. 현재로서는 그런 도구가 없습니다.
Jhalfs는 LFS 시스템 구축 프로세스를 자동화하는 최신 도구로, Paco를 사용할 수 있는 기능이 있습니다 (참조: paco.sf.net)..
Paco는 LD_PRELOAD 메커니즘을 기반으로 하며, 같은 기술이 Gentoo와 같은 예에서 사용됩니다. 이 기술은 유망해 보이지만 몇 가지 심각한 단점이 있습니다.
저는 다음과 같은 명령이 제 시스템에서 무엇을 하는지 추적할 수 있는 다른 방법을 찾고 있었습니다.
make install이 솔루션을 찾았습니다. Pierre Hebert의 훌륭한 아이디어 덕분입니다. 그는 LFS 웹사이트의 “Hints” 섹션 또는 미러에서 (참조: Read Hints Online, “TRIP, a TRIvial Packager for LFS (and other linux systems)”) 임의의 설치 명령이 수행하는 작업을 완전히 제어하는 방법을 설명합니다. 이를 통해 추가된 모든 파일, 모든 수정 및 삭제된 파일 또는 디렉토리를 추적할 수 있습니다. 이는 위에서 언급한 “make install” 명령뿐만 아니라 RMP와 같은 명령이 수행하는 모든 것을 추적할 수 있습니다.
제가 개발한 도구 IHLFS는 매우 기본적이며 TRIP와 동일한 기술을 기반으로 합니다. 이는 파일이나 전체 패키지 또는 시스템에 추가하고자 하는 모든 것을 설치한 후 시스템이 어떻게 보일지를 미리 볼 수 있게 해줍니다. 만약 결과가 마음에 들지 않는다면 - 예를 들어, 일부를 다른 위치에 설치하고 싶다면 - 언제든지 되돌릴 수 있습니다.
IHLFS라는 이름은 다음을 의미합니다:
Install Helper Linux From Scratch
이는 시스템의 정확한 복사본(일종의 가상 시스템)을 생성함으로써 이루어집니다. 이 복사본에서는 여러분이 하는 일에 완전히 자유롭고, 원래 시스템에는 전혀 영향을 미치지 않습니다. 사용자는 언제든지 가상 시스템에서 실제 시스템으로 수정 사항을 “이동”하거나 “플러시”할 수 있는 선택권이 있습니다.
이 기술의 또 다른 용도는 사용자가 실제 시스템에 있다고 생각하고 그렇게 행동하는 환경을 만드는 것입니다. 그러나 그 사이에 그는/그녀는 원하는 대로 할 수 있으며, 실제 시스템에 해를 끼치지 않습니다.
기본 기술
이것은 마법처럼 들릴 수 있지만, 실제로는 리눅스에서 사용할 수 있는 몇 가지 기술을 결합하여 가능해집니다.
파일 시스템 Unionfs, chroot 및 잘 선택된 재마운트된 디렉토리를 사용하여 이 가상 시스템을 설정할 수 있습니다.
Unionfs
가장 중요한 부분은 unionfs의 사용입니다. Unionfs는 최소한 두 개의 다른 파일 시스템의 합집합을 생성할 수 있는 가능성을 제공합니다. 자세한 정보는 www.unionfs.org를 참조하세요. 이제 새로운 파일 시스템을 원래 파일 시스템(루트)의 읽기 전용 모드와 임시 파일 시스템(캐시)의 읽기/쓰기 모드의 합집합으로 설정하면, 원래 파일 시스템과 정확히 같은 파일 시스템을 갖게 되지만, 원래 시스템에 아무런 영향을 주지 않고 파일을 수정, 삭제 및/또는 추가할 수 있습니다. 이는 루트가 읽기 전용으로 마운트되어 있기 때문에 불가능합니다. 모든 수정 사항은 unionfs에 의해 캐시에 저장됩니다.
원래 시스템과 새로 생성된 시스템의 유일한 차이는 경로입니다: 새 시스템에서는 항상 union의 마운트 지점 경로로 시작합니다. 이것이 다음 단계가 필요한 이유입니다.
Chroot
이 마운트 지점으로 chroot하면, 여러분의 시스템의 절대 복사본인 환경에 들어갑니다. 원하는 대로 무엇이든 할 수 있으며, 중요한 디렉토리와 파일을 제거할 수도 있습니다. 테스트해보세요! 시스템이 멈출 때까지 얼마나 멀리 갈 수 있는지 확인해보세요.
(재)마운트
추가로 해야 할 일은 /dev, /proc 및 /sys와 같은 여러 중요한 디렉토리를 (재)마운트하는 것입니다. 이는 union 파일 시스템이 기존 마운트 지점을 보존하지 않기 때문입니다.
/tmp와 같은 일부 특별한 디렉토리를 재마운트하는 것도 권장됩니다. 이 디렉토리는 configure 스크립트와 make 명령이 임시 중간 결과를 저장하는 데 사용됩니다. ihlfs 프로그램이 이를 심각한 변경 사항으로 등록하지 않기를 원합니다. 이는 소스가 빌드되는 디렉토리에도 해당됩니다.
요구 사항
물론 최신 리눅스 버전이 필요합니다. 지원되는 커널과 필요한 Unionfs 버전에 대한 정보는 웹사이트를 참조하세요. 다른 커널은 다른 버전의 unionfs를 의미합니다.
커널은 모듈 로딩을 지원해야 합니다.
또한 캐시를 마운트할 수 있는 충분한 공간이 있는 파티션이 필요합니다. 현재로서는 별도의 파티션입니다.
저는 제 일반 시스템과 가상 시스템에서의 빌드 성능을 비교했으며, 유의미한 차이를 보지 못했습니다.
마지막으로, IHLFS는 모든 리눅스 시스템에 있어야 하는 명령어(예: tar, chroot, modprobe, mount, bash, find, grep 및 bzip2)를 사용합니다.
설치
제 웹사이트에서 패키지를 다운로드하세요:
wget http://linux.bononline.nl/linux/ihlfs/src/ihlfs-1.0.tar.bz2적절한 디렉토리에 아카이브를 풀어주세요:
tar -xjf ihlfs-1.0.tar.bz2
cd ihlfs-1.0ihlfs의 설치는 다음 스크립트를 통해 진행됩니다:
./install.sh이 스크립트는 몇 개의 디렉토리를 생성하고 몇 개의 파일을 복사합니다.
작동 방식
시작하기 전에 캐시가 들어갈 파일 시스템이 마운트되어 있는지 확인하세요. 그리고 구성 파일 /etc/ihlfs/ihlfs.conf의 설정을 확인하세요. 모든 것이 괜찮다면, 프로그램을 다음과 같이 시작하세요:
ih-lfs몇 가지 메시지가 표시되며, 모든 것이 괜찮으면 프롬프트가 표시됩니다:
/:>이제 원하는 명령을 입력할 수 있습니다. union은 마운트 포인트를 보존하지 않으므로, 소스 디렉토리가 소프트웨어를 빌드하는 곳에 마운트되지 않을 수 있습니다.
지금까지의 변경 사항을 보려면 다음을 입력하세요:
list이 명령은 변경 사항의 요약을 보여줍니다.
캐시에서 루트로 모든 변경 사항을 이동하려면 다음을 입력하세요:
flush이 명령은 덮어쓰거나 수정되거나 삭제될 파일 및 디렉토리의 백업과 설치될 모든 것의 백업을 생성합니다.
모든 변경 사항을 제거하려면 다음을 입력하세요:
clean마지막으로 세션을 종료하려면 다음을 입력하세요:
quit or exit예시
여기 몇 가지 간단한 예시가 있습니다. 파일 추가:
~:>touch /tmp/test4ihlfs
~:>listmcview에서 다음과 같이 표시됩니다:
요약.
--------
추가되거나 삭제되거나 수정되거나 덮어쓰인 파일 및/또는 디렉토리가 발견되지 않았습니다!이는 예상된 결과입니다. /tmp 디렉토리는 union을 우회하고 있습니다. 이제 다른 곳에 파일을 생성해보세요:
~:>touch /var/tmp/test4ihlfs
~:>list요약.
--------
추가된 파일.
------------
/var/tmp/test4ihlfs연락처
버그를 발견하거나 더 나은 방법으로 작업할 수 있는 아이디어가 있다면 알려주세요! 제 이메일 주소는 stef at bononline dot nl입니다. 하지만 진행하기 전에, 제가 프로그래밍한 방식이 항상 가장 효과적이지 않을 수 있다는 것을 알고 있습니다. 저는 이를 의도적으로 그렇게 했습니다. 프로그래밍 스타일에 있어서는 효과성보다 가독성을 선호합니다.
TODO
이 패키지는 아직 완료되지 않았습니다. 패키지 관리자에 대해 아는 사람이 있다면 다음을 지적해 주세요:
구성 파일에 편집기 선택 추가
현재 ihlfs는 단 하나의 모드만 있습니다: 대화형. 사용자에게 환경을 생성합니다. 다음과 같은 명령줄 모드:
ih-lfs --command "make install"도 가능해야 합니다.
설치 중인 패키지 이름과 버전을 식별하는 플래그 추가.
다양한 명령에 대한 몇 가지 예시 추가.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.