initrd에 모듈을로드하는 방법?


13

netconsoleinitrd 단계 /etc/modules에서 기본 시스템 시작 절차 와 마찬가지로 모듈을 명시 적으로로드하고 싶습니다 (예 :) .

먼저 시스템의 initrd에 원하는 모듈이 있는지 확인했습니다 (부록 참조).

나는 /initrd.img(압축 cpio 아카이브이므로 빨리 살펴보기 위해을 사용하여 그 zcat /initrd.img > initrd.cpio안에 들어갔다 mc.) modprobe스크립트 중 호출이 무엇인지 찾아 보았고 /conf/modules( /initrd의 루트 임)에 나열된 모듈이 ( 에 의해 호출 됨 ) load_modules()함수에 의해 자동으로로드 된다는 것을 알았습니다 ./scripts/functions/init

그러나 우분투 시스템 /conf/modules에서 initrd 를 업데이트하는 표준 도구는 무엇입니까?

(BTW, 우분투의 initrd를의 코드 내 연구 기간 동안, 나는 몇 가지 특별 지원이 있음을 발견 netconsole에서 /init내 요구에 작동하지 않을 수도 있습니다 스크립트, 어쨌든, 내 질문은 다른 사용자 정의 모듈에 관한 더 일반적이다 .)

부록

위에서 말했듯이 : 먼저 시스템의 initrd에 원하는 모듈 (즉, netconsole) 이 포함되어 있는지 확인했습니다 . 방법은 다음과 같습니다.

# zcat /initrd.img | cpio --extract --verbose --list  | fgrep netconsole
-rw-r--r--   1 root     root        25372 Aug 31 20:59 lib/modules/3.19.0-28-generic/kernel/drivers/net/netconsole.ko
109504 blocks
# 

또한 필요한 네트워크 드라이버가 이미 포함되어 있는지 확인했습니다.

# ls -ld /sys/class/net/eth0/device/driver
lrwxrwxrwx 1 root root 0 Sep 21 15:34 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/sky2
# zcat /initrd.img | cpio --extract --verbose --list  | fgrep sky2
-rw-r--r--   1 root     root        92948 Aug 31 20:49 lib/modules/3.19.0-28-generic/kernel/drivers/net/ethernet/marvell/sky2.ko
109504 blocks
# 

3
미래 참고로, lsinitramfs에 포함 initramfs-tools같은 대해 수행 zcat /initrd.img ..여기에 설명 명령.
timss

답변:


14

우분투 14.04에서 initrd에 모듈을 추가하는 방법을 발견했습니다. 모듈 이름을 / etc / initramfs-tools / modules에 추가했습니다. 이것은 모듈을 initrd 파일에 추가했습니다. / etc / initramfs-tools / modules를 변경 한 후 initrd 파일 (update-initramfs -u)을 업데이트하는 것을 잊지 마십시오.


모듈 이름을 어떻게 정의합니까? 이제 ahci.ko 모듈을 추가해야합니까? 그 파일에 무엇이 포함되어야합니까?
sandun dhammika

@sandundhammikaahci
켄 샤프

3

우분투는 initramfs-tools (소개는 man initramfs-tools 참조)를 사용하여 initrd 생성을 처리합니다.

모듈 netconsole을 initrd에 추가하고 강제로로드하려면 / etc / initramfs-tools / hooks (예 : / etc / initramfs-tools / hooks / netconsole)에 파일을 생성합니다 :

#! / bin / sh
PREREQ = ""
전제 조건 ()
{
   에코 "$ PREREQ"
}

사례 $ 1
전제 조건)
   전제 조건
   출구 0
   ;;
esac

. / usr / share / initramfs-tools / hook-functions

force_load netconsole

그리고 그것을 실행 가능하게 만드십시오. 그런 다음 다음을 실행하십시오.

update-initramfs -u

최신 커널의 initrd를 업데이트합니다.


1
그러나 모듈 이름을 추가하는 간단한 방법이 /conf/modules없습니까? 사용하려면 어디에 두어야 update-initramfs -u합니까?
imz-Ivan Zakharyaschev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.