¿Cómo evitar que update-grub escanee todas las unidades?

19

Cada vez que update-grubse ejecuta, se escanean todos los discos duros. Cada unidad que esté en estado de espera girará para quedar inactiva. Esto es un desperdicio de energía. Utilizamos update-grub versión 1.98:

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

Regresión

  1. Hay una GRUB_DISABLE_OS_PROBER=trueopción en el /etc/default/grubarchivo. Pero eso parece funcionar solo desde la versión 2 y posteriores. Al menos no deja de escanear todas las unidades en nuestra versión 1.98.

  2. Hay un /etc/grub.d/20_linux_xenscript que podría ejecutarse como parte de update-grub. Después de eliminar los derechos de ejecución para todos los usuarios con chmod a-x /etc/grub.d/20_linux_xentodas las unidades, todavía funcionan.

¿Cómo dejar update-grubde escanear todos y cada uno de los discos duros?

Pro Backup
fuente
Es solo un script de shell ... ¿Modificarlo? Solo debería ejecutarse después de las actualizaciones del kernel, lo que no ocurre con mucha frecuencia.
jordanm
Se ejecuta una de las líneas de script /usr/sbin/grub-probe --target=device /. Ese comando también hace que todas las unidades giren. El /usr/sbin/grub-probeno es un script de shell.
Pro Backup el
¿Con qué frecuencia estás corriendo update-grub? Esto solo debería suceder cuando instala un nuevo núcleo, entonces, ¿a quién le importa?
psusi
Sé que todo el picojulio que usa es un desperdicio: si ejecutó update-grub 24/7 durante un mes en 1000 computadoras con 3 HDD cada una, podría agregar un centavo o dos a su factura de electricidad.
tkbx

Respuestas:

14

En el archivo /etc/grub.d/30_os-prober la línea

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

hace girar todas las unidades (en espera -> inactivo). Os-prober es una utilidad para encontrar instalaciones de Linux en unidades que no sean su unidad de arranque. Es lo os-proberque necesita ser deshabilitado.

  1. Una forma de hacerlo es eliminar el paquete : apt-get --purge remove os-prober.
  2. Otra forma es eliminar los derechos ejecutables para os-prober . Primero encuentre la ubicación de os-prober usando $ which os-prober. Resultado sería algo así como: /usr/bin/os-prober. Elimina los derechos ejecutables para todos los usuarios para ese archivo:# chmod a-x /usr/bin/os-prober
  3. Otra forma es eliminar los derechos ejecutables para 30_os-prober . Encuentra la ubicación de 30_os-prober usando $ locate /30_os-prober. Resultado sería algo así como: /etc/grub.d/30_os-prober. Elimina los derechos ejecutables para todos los usuarios para ese archivo:# chmod a-x /etc/grub.d/30_os-prober
  4. Otra forma más es omitir la ejecución de /etc/grub.d/30_os-prober. Por ejemplo, haciendo que la GRUB_DISABLE_OS_PROBER=trueopción funcione en nuestra versión de Grub 1.98. Esto se puede hacer insertando en el archivo /etc/grub.d/30_os-proberel código debajo de la línea set -e:

...

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

Para aquellos que se preguntan si realmente vale la pena el esfuerzo, sí lo es. Quizás no para ahorrar energía, pero hoy encontré un problema con update-grub, ya que quería probar tanto / dev / sda (mi disco duro) como / dev / sdc (un dispositivo USB). Sin este último insertado en mi computadora portátil, update-grub se colgaría, a pesar de que en realidad no hay un sistema operativo instalado en mi dispositivo USB ni arranqué desde este dispositivo. Como la memoria USB se rompió recientemente, necesitaba una forma para que la actualización-grub continuara (viva) sin ella. Afortunadamente, GRUB_DISABLE_OS_PROBER=trueacabo de hacer el truco. :)

PPP
fuente
1
Tuve el problema inverso: error de actualización de grub si había una memoria USB. El dispositivo USB era un poco inusual, ya que tenía instalado Easy2Boot. Pero dado que esto estaba en un quiosco con el comando update-grub emitido desde un script colocado en esa memoria USB, esta solución fue muy bienvenida.
noamik
3

(¿Realmente vale la pena el tiempo y el esfuerzo para arreglarlo?)

Como mencionó, el sondeo probablemente ocurre cuando se realizan grub-mkconfigllamadas grub-probe. Puede modificar grub-mkconfigsimplemente codificando el resultado de las grub-probellamadas. Se utiliza para rellenar GRUB_DEVICE, GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT, GRUB_DEVICE_BOOT_UUID, y GRUB_FS.

Jim Paris
fuente
1

Vea mi solución aquí para desactivar selectivamente qué particiones se verifican os-probercon un pequeño patch.

La configuración de GRUB_OS_PROBER_SKIP_LIST="UUID@device_path"en /etc/default/grub:

  • reduce la cantidad de dispositivos ${OSPROBED}utilizados por/etc/grub.d/30_os-prober

  • que detiene el cheque con ${grub_probe} --target=fs_uuid --device

Stuart Cardall
fuente
0

Sé que esta es una publicación antigua, pero encontré otra forma de lograr esto que no implica hacer cambios en los scripts. en /etc/grub.d/Cambié el nombre del archivo 30_os-probera .30_os-prober(comenzar con un punto) y se omite durante la actualización a pesar de que se muestra en el mismo lugar lssi lo usa -a.

James
fuente