Dracut은 initramfs 빌드 중에 새로운 사용자 정의 dracut 모듈을 건너뜁니다.

Dracut은 initramfs 빌드 중에 새로운 사용자 정의 dracut 모듈을 건너뜁니다.

좋습니다. RHEL 6 서버를 실행하는 시스템이 있는데 하드웨어 제한으로 인해 RHEL 6이 제가 사용할 수 있는 최신 버전입니다. 둘째, pxe 작업을 위한 라이브 네트워크 부팅 가능 initramfs를 만들려고 했습니다. 최신 시스템 RHEL 7/8에서는 dmsquash-live-root 및 livenet dracut 모듈을 포함하여 initramfs 파일에 원격 루트 및 라이브 부팅 기능을 제공합니다. 내 RHEL 6 서버에는 라이브넷이 없고 dmsquash-live-root만 있습니다. 따라서 아래 이미지와 같이 새 시스템에서 90livenet 디렉토리를 복사하여 /usr/share/dracut/modules.d/ 디렉토리에 배치했습니다.여기에 이미지 설명을 입력하세요.

그러면 내 RHEL 7 시스템과 동일한 내용이 표시되고 포함됩니다. 그러나 아래 conf 파일을 사용하여 다음 dracut 명령을 실행하면 dracut은 모듈이 존재하지 않는 것처럼 모듈을 건너뜁니다. 존재하지 않는 모듈을 지정하면 dracut 명령이 불평하고 일반적으로 실패하기 때문에 이것은 나에게 이상합니다. 그러나 이 경우 라이브넷 포함에 대해 불평하지 않고 단순히 탐색하는 것처럼 보입니다.

dracut -v -f -c dracut.conf initramfs-3.10.0-693.72.1.rt56.672.el6rt.x86_64.img 3.10.0-693.72.1.rt56.672.el6rt.x86_64 > output.txt
                                             #Dracut.conf 
# Dracut modules to add to the default
add_dracutmodules+="nfs network dmsquash-live livenet"

# additional kernel modules to the default
add_drivers+="nfs nfs4"

omit_dracutmodules+="biosdevname"

제 질문은 누구든지 내 명령이나 conf 사용법에 문제가 있는지 지적할 수 있거나 모듈 디렉토리와 내용을 module.d 디렉토리에 포함하는 것 외에 제가 수행해야 할 추가 단계를 설명할 수 있다는 것입니다. (ps dracut 명령을 사용하기 전에 해당 설치 스크립트를 실행해야 하는지 확인하기 위해 /module-setup.sh도 시도했습니다. 일부 모듈에는 install이라는 스크립트가 있으므로 필요한지 확실하지 않지만 설치 스크립트는 다음과 같습니다. 다른 작업자 모듈의 설치 스크립트와 매우 유사)

해당 구성 파일의 다른 모든 항목을 grep할 수 있으며, 내가 삽입한 라이브넷 모듈을 제외한 모든 항목이 있습니다.

답변1

RHEL 6은 2010년에 출시되었으므로 해당 버전이 dracut지원되지 않을 수 있습니다 module-setup.sh.그것이는 2011-02-02에 출시된 버전 008에 도입된 것으로 보입니다.

module-setup.sh별도의 스크립트로 변환해 보세요 . 각 check, depends, install, installkernel함수는 동일한 이름( .sh접미사 없음)을 가진 자체 스크립트여야 합니다. 함수 내부( {및 사이의 텍스트)만 복사해야 합니다. }안전을 위해 shebang( #! /bin/bash)을 포함하고 스크립트를 실행 가능하게 만드십시오( chmod +x check depends install installkernel).

예를 들어 /usr/lib/dracut/modules.d/90livenet/module-setup.sh다음과 같은 경우:

#! /bin/bash

check () {
A
}

depends () {
B
}

install () {
C
}

installkernel () {
D
}

다음 파일로 바꿔야 합니다.

/usr/lib/dracut/modules.d/90livenet/check:

#! /bin/bash

A

/usr/lib/dracut/modules.d/90livenet/depends:

#! /bin/bash

B

/usr/lib/dracut/modules.d/90livenet/install:

#! /bin/bash

C

/usr/lib/dracut/modules.d/90livenet/installkernel:

#! /bin/bash

D

관련 정보