벤더 설치 스크립트 중에는 지원 OS 목록을 문자열로 검사하고 일치하지 않으면 시작 자체를 거부하는 것이 있다. 바이너리 호환성은 문제가 없는데 이름만으로 막히는 경우다. Rocky Linux 나 AlmaLinux 는 RHEL 과 같은 소스에서 나온 배포판이라 실제 동작에는 지장이 없으므로, 검사에 걸리는 파일만 RHEL 로 바꿔 통과시킨다.
이것은 우회일 뿐 지원 대상이 되는 것은 아니다. 벤더 지원을 받아야 하는 운영 시스템이라면 정식 RHEL 구독을 쓴다. 검증용 · 개발용 장비에 한해 쓸 수 있는 방법으로 본다.
검사에 쓰이는 값은 보통 다음 셋 중 하나다.
| 대상 | 내용 |
|---|---|
/etc/redhat-release |
Rocky Linux release 8.10 (Green Obsidian) 같은 한 줄 |
/etc/os-release |
ID · ID_LIKE · VERSION_ID · PLATFORM_ID |
lsb_release -a |
redhat-lsb-core 패키지가 있을 때만 |
어느 것을 보는지는 설치 스크립트를 열어 확인한다. 대개 grep, . /etc/os-release 같은 형태로 드러난다.
cat /etc/redhat-release
cat /etc/os-release
원본을 먼저 백업한다.
cp -a /etc/redhat-release /etc/redhat-release.orig
cp -a /etc/os-release /etc/os-release.orig
echo 'Red Hat Enterprise Linux release 8.10 (Ootpa)' > /etc/redhat-release
/etc/os-release 는 필요한 키만 고친다. 전체를 갈아엎으면 다른 도구가 깨질 수 있다.
NAME="Red Hat Enterprise Linux"
VERSION="8.10 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.10"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.10 (Ootpa)"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8.10:GA"
버전과 코드명은 실제 RHEL 의 것과 맞춘다. RHEL 8 계열의 코드명은 Ootpa, RHEL 9 계열은 Plow 다.
lsb_release 를 보는 스크립트라면 다음도 필요하다.
dnf install -y redhat-lsb-core
작업이 끝나면 원본으로 돌린다. 위장 상태를 그대로 두면 이후 운영에서 혼란이 크다.
mv /etc/redhat-release.orig /etc/redhat-release
mv /etc/os-release.orig /etc/os-release
/etc/redhat-release 와 /etc/os-release 는 패키지 소유 파일이다. Rocky 에서는 rocky-release 패키지가 이 파일들을 가지고 있어, 그 패키지가 갱신되면 내용이 원래대로 돌아온다. 어느 패키지가 소유하는지는 다음으로 확인한다.
rpm -qf /etc/redhat-release /etc/os-release
chattr +i 로 잠그지 않는다. 불변 속성을 걸면 dnf update 가 그 파일을 쓰지 못해 트랜잭션 전체가 실패한다. 설치 중에만 바꿔 두고 끝나면 되돌리는 편이 안전하다. 부득이하게 유지해야 한다면 dnf 의 exclude=rocky-release 같은 방법을 쓰되, 그 패키지가 보안 갱신에서 빠진다는 점을 감수한다.
속지 않는 검사도 있다. 다음은 파일을 고쳐도 통과하지 않는다.
subscription-manager 등록 상태나 엔타이틀먼트 인증서를 확인하는 경우rpm -q redhat-release 처럼 패키지 이름으로 확인하는 경우uname -r 의 .el8_10 뒤 빌드 표기)을 비교하는 경우이런 경우는 위장으로 풀리지 않는다. 벤더에 해당 배포판 지원 여부를 확인하거나 RHEL 구독을 쓴다.