initramfs를 기존 커널에 포함

initramfs를 기존 커널에 포함

전체를 다시 컴파일하지 않고도 initramfs 이미지를 기존 커널에 포함시킬 수 있습니까? 나는 그것을 할 자원이 없습니다.

답변1

initramfs는 빌드 시 커널에 내장될 수 있습니다(물론 이는 rootfs 트리를 선택하는 menuconfig에서 허용됩니다). 그리고 특정 상황에서는 유용할 수 있습니다. 일단 포함되면 최종 바이너리의 모든 속성 rootfs 도구가 GPL을 위반할 수 있다는 점만 참고하세요. 그러나 initramfs에 비지박스 항목이 포함될 때까지는 아무런 문제가 없어야 합니다.

답변2

일반적으로 아무도 initramfs 이미지를 커널에 통합하지 않을 것입니다. 내가 아는 한 그것은 (개념에 대해 코드를 다시 작성하지 않고) 적어도 의도되지 않은 것입니다.

initrd는 항상 부팅을 돕기 위해 커널과 함께 로드되는 분리된 데이터 스트림(파일)입니다. 선택 사항이지만 최신 gnu/linux 배포판에는 거의 항상 포함됩니다.

따라서 삽입하는 방법이 아니라 변경하는 방법에 대해 스스로에게 질문할 필요가 없습니다. 따라서 부트로더 구성을 살펴보세요. 일반적으로 3가지를 식별해야 합니다(대부분 이 순서로).

  • 커널 이미지(부트로더를 커널 이미지(대부분 파일)로 안내하여 RAM에 로드하는 것)
  • 명령줄(커널이 액세스하고 사용할 수 있도록 램에도 작성된 문자열(예: OS 내에서 매개변수를 제공하지만 작성 및 호출 외부(어셈블러 코드)))) (대부분의 경우 루트=/ dev/xy ro 어떤 옵션이든
  • initrd 이미지(커널 이후 램에 로드되는 초기 램디스크의 선택적 이미지, 커널은 이를 루트 이전에 부팅을 지원하는 데 주로 사용되는 가상 디스크로 사용합니다(예를 들어 그 안에서 완전히 실행되는 라이브 시스템이 있음). fs를 찾아서 마운트합니다(예: 디스크가 느리고 유동적임(디스크 순서, scsi 항목, 네트워크에서 부팅, 파일 시스템 암호화, fsck 실패 시 응급 쉘 복구 등))

따라서 귀하의 질문에 대답하려면, 부트로더가 initrd를 직접 사용할 수 없고 대체할 수 없다면 다른 부트로더를 로드하면 됩니다(예를 들어 매우 오래된 것들은 여전히 ​​grub을 커널로 로드할 수 있는 것처럼). 그렇지 않으면 업데이트하면 됩니다. 부트로더 구성에 있는 별도의 initrd 파일 경로입니다.

그런데 grub2를 사용하는 경우 구성을 직접 편집하지 마십시오. /etc/default/grub 및 /etc/default/grub.d/ 내의 데이터를 사용하여 update-grub에 의해 생성됩니다. grub 레거시에서는 여전히 menu.lst를 직접 편집합니다. 부팅 파티션이 필요하지만 grub2는 이를 위해 훨씬 복잡합니다. 여전히 직접 편집할 수 있지만 나중에 덮어쓸 가능성이 높으므로 좋은 생각이 아닙니다...

관련 정보