Update-Grub이 모든 드라이브를 검색하지 못하게하는 방법은 무엇입니까?


19

매번 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각 하드 드라이브 스캔 을 중지하는 방법은 무엇입니까?


그것은 단지 쉘 스크립트입니다 ... 수정 하시겠습니까? 커널 업데이트 후에 만 ​​실행되며 자주 발생하지는 않습니다.
jordanm

스크립트 행 중 하나가 실행 /usr/sbin/grub-probe --target=device /됩니다. 이 명령은 또한 모든 드라이브를 가동시킵니다. 는 /usr/sbin/grub-probe쉘 스크립트가 아닙니다.
프로 백업

얼마나 자주 달리고 update-grub있습니까? 이것은 새로운 커널을 설치할 때만 발생하므로 누가 신경 쓰겠습니까?
psusi

나는 그것이 사용하는 전체 picojoule이 낭비라는 것을 알고 있습니다. 각 3 개의 HDD가있는 1000 대의 컴퓨터에서 한 달 동안 24 시간 업데이트 그루브를 실행하면 전기 요금에 1 ~ 2 달러가 추가 될 수 있습니다.
tkbx

답변:


14

/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

5

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


1
USB 스틱이 있으면 update-grub이 실패하는 반대 문제가 있습니다. USB 스틱에는 Easy2Boot가 설치되어 있기 때문에 약간 특이했습니다. 그러나 이것이 바로 USB 스틱에있는 스크립트에서 update-grub 명령이 실행되는 키오스크이므로이 솔루션은 매우 환영받습니다.
noamik

3

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

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


1

작은 파티션으로 어떤 파티션을 검사할지 선택적으로 비활성화하려면 내 솔루션을 참조하십시오 .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


0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.