부팅시 커널 모듈 건너 뛰기


답변:


1

이전 답변에서 언급 한대로 모듈을 블랙리스트에 올리는 것이 커널 모듈을 완전히 피하는 가장 좋은 방법입니다. 블랙리스트 이외에, 모듈을 비활성화하는 일반적인 방법은 없습니다.

일부 Linux 배포판은 이와 같은 작업을 수행하기 위해 커널 부팅 매개 변수를 제공합니다.

  • Arch Linux 에서 load_modules=offudev가 자동 로딩을 건너 뛰도록합니다. 이렇게하면 모듈을로드하지 않고 부팅하고 문제를 일으키는 모듈을 블랙리스트에 추가하고 문제가있는 모듈을로드하지 않고 정상적으로 재부팅 할 수 있습니다.
  • Knoppix에는 추가 부팅 매개 변수 (일명 "치트 코드") 목록이 있습니다 . 이들은 일반적인 커널 부팅 매개 변수와 Knoppix 관련 추가 기능이 혼합되어 있습니다.

자세한 내용은 커널 매개 변수 설명서를 참조하십시오 . 특정 서브 시스템을 비활성화하기위한 매개 변수가 있습니다. 예를 들면 다음과 같습니다.

  • nousb 커널 USB 지원 비활성화
  • cgroup_disable=[name]특정 컨트롤러를 비활성화합니다. 그러나 "메모리"는 특별히 지원되는 유일한 예입니다.
  • libata.noacpilibata (SATA 컨트롤러)에서 ACPI 사용을 비활성화합니다. 이것은 커널을 통해 모듈 매개 변수를 전달하는 예제입니다

7

특정 모듈을 비활성화하면 입니다 부트 로더에서 가능하지만, 외모 배포판에 의존처럼 참.

한편으로, Linux Kernel Parameters 문서는 2016 년 8 월 현재 상태를 나타냅니다.

module_blacklist= [KNL] 쉼표로 구분 된 모듈 목록을로드하지 마십시오. 문제 모듈을 디버깅하는 데 유용합니다.

다른 한편으로, openSUSE 42.1 (Linux 4.1.31)에서 나를 위해 일한 옵션은 Arch Kernel modules wiki에 설명되어 있습니다  .

부트 로더에서 모듈을 블랙리스트에 올릴 수도 있습니다. 간단히 추가

modprobe.blacklist=modname1,modname2,modname3

커널 매개 변수에 설명 된대로 부트 로더의 커널 라인에 둘 이상의 모듈을 블랙리스트에 올릴 때는 쉼표로만 구분됩니다. 공백이나 다른 것들은 아마도 구문을 깨뜨릴 수 있습니다.

(unix.SE의 @gertvdijk 에게 감사드립니다  .)

또한 언급 할 가치가 있는 방법은 다음과 같습니다 .

grub 명령 줄을 사용하여 커널이 특정 모듈을로드하지 못하도록하려면 아래 구문을 사용하여 커널 모듈에 매개 변수로 모듈을 전달해야합니다.

$module_name.blacklist=yes

나는 그들이 어디에서 그것을 얻었는지 전혀 모른다. 그러나 다른 모든 방법이 실패하더라도 다른 방법을 시도하는 것이 확실히 아프지 않을 것이다.


"$ module_name.blacklist = yes"가 왜 작동하는지에 대해 같은 질문이 있으며 커널 코드의이 부분과 관련이 있다고 생각합니다 : git.kernel.org/pub/scm/linux/kernel/git/stable/linux- stable.git /…
Johnlcf

1

/etc/modprobe.d/blacklist 또는 블랙리스트 'modulename'에 추가 할 수 있어야합니다.


이것은 작동하지만 다른 커널 (사용 가능한 경우) 또는 LiveCD 시스템으로 부팅해야합니다.
quack quixote
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.