Update-Grub이 모든 드라이브를 검색하지 못하게하는 방법은 무엇입니까? 드라이브는 회전하여 유휴 상태가됩니다.

매번 update-grub모든 하드 드라이브를 검사합니다. 대기 상태 인 각 드라이브는 회전하여 유휴 상태가됩니다. 이것은 에너지 낭비입니다. 우리는 update-grub 버전 1.98을 사용합니다 :

# update-grub -v
grub-mkconfig (GRUB) 1.98+20100804-14+squeeze1

회귀

  1. 있다 GRUB_DISABLE_OS_PROBER=true의 옵션 /etc/default/grub파일. 그러나 그것은 버전 2 이상에서만 작동하는 것 같습니다. 적어도 버전 1.98의 모든 드라이브 검색을 중지하지는 않습니다.

  2. /etc/grub.d/20_linux_xenupdate-grub의 일부로 실행될 수 있는 스크립트가 있습니다. chmod a-x /etc/grub.d/20_linux_xen모든 드라이브를 가진 모든 사용자에 대한 실행 권한을 제거한 후에도 여전히 스핀 업됩니다.

update-grub각 하드 드라이브 스캔 을 중지하는 방법은 무엇입니까?



답변

/etc/grub.d/30_os-prober 파일 에서

OSPROBED="`os-prober | tr ' ' '^' | paste -s -d ' '`"

모든 드라이브를 회전시킵니다 (대기-> 유휴). Os-prober 는 부팅 드라이브 이외의 드라이브에서 Linux 설치를 찾는 유틸리티입니다. 그것은이다 os-prober요구가 비활성화 된 것이다.

  1. 한 가지 방법은하는 것입니다 패키지를 제거 : apt-get --purge remove os-prober.
  2. 또 다른 방법은 os-prober에 대한 실행 권한제거하는 것입니다 . 먼저을 사용하여 os-prober의 위치를 ​​찾으십시오 $ which os-prober. 출력은 다음과 같습니다 /usr/bin/os-prober.. 해당 파일의 모든 사용자에 대한 실행 권한을 제거하십시오.# chmod a-x /usr/bin/os-prober
  3. 다른 방법은 30_os-prober에 대한 실행 권한제거하는 것입니다 . 을 사용하여 30_os-prober의 위치를 ​​찾으십시오 $ locate /30_os-prober. 출력은 다음과 같습니다 /etc/grub.d/30_os-prober.. 해당 파일의 모든 사용자에 대한 실행 권한을 제거하십시오.# chmod a-x /etc/grub.d/30_os-prober
  4. 또 다른 방법은 의 실행건너 뛰는 것 입니다 /etc/grub.d/30_os-prober. 예를 들어, GRUB_DISABLE_OS_PROBER=truegrub 버전 1.98에서 옵션 을 사용하면 됩니다. /etc/grub.d/30_os-prober행 아래에 코드 를 파일에 삽입 하면됩니다 set -e.

if [ "x${GRUB_DISABLE_OS_PROBER}" = "xtrue" ]; then
  exit 0
fi


답변

그것이 정말로 노력할만한 가치가 있는지 궁금해하는 사람들에게는 그렇습니다. 아마도 에너지 절약은 아니지만 오늘은 / dev / sda (내 하드 디스크)와 / dev / sdc (USB 스틱)를 모두 조사하기 위해 update-grub에 문제가 발생했습니다. 후자가 랩톱에 삽입되지 않으면 USB 스틱에 실제로 OS가 설치되어 있지 않거나이 스틱에서 부팅하지 않아도 update-grub이 중단됩니다. USB 스틱이 최근 고장이 났을 때 업데이트 그루브가 없어도 계속 사용할 수있는 방법이 필요했습니다. 다행스럽게도 GRUB_DISABLE_OS_PROBER=true방금 트릭을 수행했습니다. 🙂


답변

(이것은 정말로 고칠 시간과 노력의 가치가 있습니까?)

당신이 언급했듯이, 조사는 아마도 grub-mkconfig전화 할 때 발생 합니다 grub-probe. grub-mkconfig단순히 grub-probe호출 결과를 하드 코딩하여 수정할 수 있습니다 . 그것은 채우는 데 사용되는 GRUB_DEVICE, GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT, GRUB_DEVICE_BOOT_UUID,와 GRUB_FS.


답변

작은 파티션으로 어떤 파티션을 검사할지 선택적으로 비활성화하려면 내 솔루션을 참조하십시오 .os-proberpatch

의 구성 GRUB_OS_PROBER_SKIP_LIST="UUID@device_path"에서 /etc/default/grub:

  • ${OSPROBED}사용되는 장치 수를 줄입니다./etc/grub.d/30_os-prober

  • 검사를 중지합니다 ${grub_probe} --target=fs_uuid --device


답변

나는 이것이 오래된 게시물이라는 것을 알고 있지만 스크립트를 변경하지 않는 다른 방법을 찾았습니다. 에서 /etc/grub.d/파일 이름 30_os-prober.30_os-prober(마침표로 시작)으로 바꾸 었으며을 ls사용하는 경우 동일한 위치에 표시되지만 업데이트 중에 건너 뜁니다 -a.


답변