![initrd 없이 시작](https://linux55.com/image/16488/initrd%20%EC%97%86%EC%9D%B4%20%EC%8B%9C%EC%9E%91.png)
initrd.img 없이 리눅스를 부팅할 수 있나요? 커널 자체의 일부로 기본 드라이버를 추가하고 initrd를 완전히 피할 계획입니다.
로드 가능한 모듈이 아닌 커널의 일부가 되어야 하는 모듈은 무엇입니까?
답변1
루트 볼륨이 LVM, dmcrypt 파티션에 있거나 액세스하기 위해 명령을 실행해야 하는 경우가 아니면 이는 사실입니다.
나는 몇 년 동안 내 서버에서 initrd를 사용하지 않았습니다. 최소한 다음 모듈이 내장되어 있어야 합니다.
- 루트 볼륨 디스크가 있는 모든 컨트롤러용 드라이버
- PCI, PCIe 지원, USB 지원 등과 같은 이러한 기능을 "얻는" 데 필요한 드라이버
파일 시스템이 마운트된 모듈을 실행합니다.
내장 네트워크 카드 드라이버도 매우 좋은 생각입니다.
현재 실행 중인 커널에서 도움을 줄 수 있다는 것을 알았습니다. 그 안에 무엇이 있는지 살펴보고 활성화된 모듈이 있는 위치를 찾기 위해 컴파일하기 전에 make menuconfig 검색 옵션을 사용
lspci
하세요 .lsmod
답변2
기본 드라이버 추가 계획
make defconfig && make
그런 다음 관련 답변에서 간결하게 알 수 있듯이 거기서부터 시작하십시오 . 알았어, 우선 그냥기본(x86_64?) .config
.
이는 현재 9MB의 상당히 큰 코어를 제공합니다. 유일한 모듈은웹 필터그것들.
더 많은 사용자 정의 구성을 사용하면 4.5MB 코어와 더 많은 모듈(특히 i915 모듈)이 생성됩니다.
일부 모듈가지다내장되어 있습니다. 다른 답변을 참조하세요. 10년 후에는 I/O 장치도 명시적으로 추가해야 합니다.USB_HID키보드의 경우,페이스북(프레임 버퍼)는 시스템에 따라 통합 그래픽용입니다.
장치는 전원을 켠 후에도 계속 작동하지 않는 것 같습니다. 그래픽 카드 모듈 및 네트워크 모듈과 일부 버스 도우미가 와트를 5.1에서 3.1로 낮췄습니다. 이는 다소 직관에 어긋납니다. 드라이버는 이를 장치를 올바른 일시 중지 상태로 설정하거나 진정시키는 것으로 해석합니다.
모듈을 제거할 수는 있지만 e1000e
(0.2와트 정도의 전력이 다시 돌아오지 않는 것 같고 네트워크가 종료됩니다) i915
제거하는 것조차 불가능합니다. 따라서 이러한 "모듈"은 매우 다르게 동작합니다.
make defconfig
lsmod
initrd/udevd install/distro 가 설치된 후 make nconfig
청소(또는 일부 항목 추가) 또는 이와 유사한 작업을 시작할 수 있습니다. 작업 Kconfig
.
수정 .config
후 :
make -jx bzImage
이 이미지를 마운트하고(복사하여 KCL: 제공 root=
) 부팅을 테스트할 수 있습니다. 작동하고 다음 모듈도 필요한 경우:
make -jx modules
make INSTALL_MOD_PATH=/maybe/mnt/elseroot modules_install
.config
재구성하기 전에 파일을 저장하고 이름을 지정하는 것을 잊지 마십시오.
일부 모듈(넷필터, 파일 시스템 지원)은 깔끔하게 제거할 수 있습니다. 모듈은 bzImage와 별도로 컴파일되므로 중복될 경우 커널 컴파일 시간이 절약됩니다. 그렇지 않으면 lsmod
출력이 어떻게 보이는지 신경 쓰지 않는 한 차이는 크지 않습니다 .
아, 그리고 systemd
요구 사항과 기대도 있습니다.