¿Alguna forma de hacer que las herramientas de partición vean los dispositivos creados por kpartx?

¿Alguna forma de hacer que las herramientas de partición vean los dispositivos creados por kpartx?

Tengo un ddarchivo de imagen de disco editado conmigo.

Puedo usar una herramienta como kpartxpara crear un dispositivo asignador de dispositivos a partir de este archivo de imagen de disco.

¡Pero los programas de partición como gpartedy fdiskno incluyen mi dispositivo mapeado!

¿Hay alguna forma de hacer gparted(o un programa equivalente, gráfico o de consola) una lista de mi dispositivo mapeado y sus particiones constituyentes e información detallada sobre estas particiones?

PD: ¿Es este un caso de característica faltante en estas herramientas, o es que proporcionar esta característica es fundamentalmente imposible?

Respuesta1

Es posible, pero no estoy seguro de que tenga sentido.

Las herramientas de partición sólo se preocupan por el dispositivo de disco completo, porque leen la tabla de particiones directamente desde los sectores de disco relevantes. No necesitan que existan dispositivos por partición. Esto significa que un dispositivo de bucle básico hecho con losetupes suficiente, y si una herramienta no lo ve, puedes ejecutarlo manualmente fdisk /dev/loop0o algo así.

(Si unel disco enterodispositivo está en /dev/mapper/, no es difícil hacer que esas herramientas lo vean, aunque generalmente implica editar algunas líneas del código fuente... ejecutarlo fdisk /dev/mapper/blehsuele ser más fácil).


También tenga en cuenta que la compatibilidad con kernels recientes losetup --partscanelimina la necesidad de utilizar el mapeador de dispositivos para esto.

Respuesta2

Simplemente cree un enlace duro temporaldespues de correr kpartx -a ...:

sudo ln /dev/loop0 /dev/mapper/loop0

Y luego ejecute gparted como de costumbre (funcionará correctamente /dev/mapper/loop0p*):

sudo gparted /dev/mapper/loop0

No olvides eliminar el enlace cuando ya no sea necesario.

Respuesta3

Después de 3,5 años tengo otra solución al respecto :)

Si no le preocupa el uso de kpartx y estoy en lo cierto al sugerir que su objetivo es operar particiones en una imagen de disco representada como un archivo normal, aquí hay un flujo de trabajo alternativo sin kpartx y enlaces simbólicos (es por eso que se publica como una respuesta separada):

  1. sudo losetup --find --show ./somedrive.img

    Adjunte un dispositivo de bucle para todo el archivo ./somedrive.img; --findes pedir losetupbuscar dispositivo libre automáticamente; y --showes para imprimir el dispositivo que se ha utilizado. Por ejemplo, considere que el dispositivo elegido es /dev/loop5.

  2. sudo partx --update /dev/loop5

    Dígale al kernel de Linux que vuelva a escanear las particiones internas /dev/loop5. En caso de éxito, no producirá ningún resultado, así que verifique ls -al /dev/loop5*qué aparece.

  3. Haz lo que necesites, comosudo gparted /dev/loop5

    En este punto debería poder operar correctamente /dev/loop5p*.

  4. sudo partx --delete /dev/loop5

    Libere las asignaciones de particiones.

  5. sudo losetup --detach /dev/loop5

    Finalmente, suelte el dispositivo de bucle.

PDSi es el Proud Owner™ de util-linuxun paquete con la versión v2.21 o superior, puede solicitar tanto la conexión del dispositivo de bucle como una nueva exploración de la partición de una sola vez: sudo losetup --find --show --partscan ./somedrive.imgy no debería encontrar ningún problema con las utilidades tipo gparted.

información relacionada