Creé un img
archivo mediante el siguiente comando:
dd if=/dev/zero bs=2M count=200 > binary.img
Es solo un archivo con ceros, pero puedo usarlo fdisk
y crear una tabla de partición:
# fdisk binary.img
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x51707f21.
Command (m for help): p
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x51707f21
y, digamos, una partición:
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-819199, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-819199, default 819199):
Created a new partition 1 of type 'Linux' and of size 399 MiB.
Command (m for help): w
The partition table has been altered.
Syncing disks.
Cuando reviso la tabla de particiones, obtengo el siguiente resultado:
Command (m for help): p
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7f3a8a6a
Device Boot Start End Sectors Size Id Type
binary.img1 2048 819199 817152 399M 83 Linux
Entonces la partición existe. Cuando intento formatear esta partición a través de gparted, aparece el siguiente error:
No sé por qué lo busca binary.img1
, y no tengo idea de cómo formatear la partición desde el comando live.
¿Alguien sabe cómo formatearlo usando el sistema de archivos ext4?
filesystems
partition
disk-image
Mikhail Morfikov
fuente
fuente
Couldn't find valid filesystem superblock.
. Aquí está la foto: i.imgur.com/dl7XAC4.png . ¿ Es algún tipo de error?Respuestas:
Puede acceder a la imagen del disco y sus particiones individuales a través de la función de bucle invertido. Ya ha descubierto que algunas utilidades de disco funcionarán (razonablemente) felizmente en imágenes de disco. Sin embargo,
mkfs
no es uno de ellos (pero extrañamente lomount
es).Aquí está la salida de
fdisk -lu binary.img
:Para acceder a la partición que ha creado, tiene un par de opciones
La ruta explícita
La salida
/dev/loop0
es el nombre del dispositivo de bucle que se ha asignado. El--offset
parámetro es solo el desplazamiento de la partición (Start
) multiplicado por el tamaño del sector (512
). Mientras que--sizelimit
es el tamaño de la partición, y puede calcularlo de la siguiente manera: Fin-Inicio + 1, que es 819199-2048 + 1 = 817152, y ese número también debe multiplicarse por el tamaño del sector.Luego puede usar
/dev/loop0
como referencia a la partición:La ruta implícita
La salida
/dev/loop0
es el nombre del dispositivo de bucle primario que se ha asignado. Además, la--partscan
opción le dice al núcleo que escanee el dispositivo en busca de una tabla de partición y asigne dispositivos de bucle subsidiarios automáticamente. En su caso con la única partición que también obtiene/dev/loop0p1
, que luego puede usar como referencia para la partición:fuente
fdisk
salida.Hay otra forma de hacer esto en general, usando
kpartx
( no relacionado con kde)y ahora debería tener todos los dispositivos de partición definidos
/dev/mapper
como loop0p1 , loop0p2 , ...y entonces
Opcionalmente, cuando haya terminado, puede ejecutar también
deshacerse del loop0p? deivce
fuente
(... y más tarde por
binary.img2
enterrado en el comentario).Esto se debe a que las herramientas esperan que los nombres de los archivos sigan un patrón específico. Ese patrón es el utilizado por los archivos del dispositivo para discos y volúmenes de disco reales en su sistema, a saber:
sda
(o algo más). Esto es lo quefdisk
espera utilizar.sda1
,sda2
,sda3
, y así sucesivamente. Esto es lo que las herramientas, como los quegparted
esperan usar, cuando le dicenmkfs
que haga cosas en volúmenes de discos individuales .Por supuesto, los archivos ordinarios no se superponen de la manera que lo hacen los archivos de los dispositivos de disco. Las discusiones que involucran el sistema de archivos de bucle invertido que has visto son todos acerca de tomar un solo archivo de imagen de todo el disco y el uso de bucle invertido para crear los
1
,2
,3
, y así sucesivamente archivos que reflejan las rebanadas individuales dentro de ella, una vez que la partición deseada se ha escrito a la mesa de partición.fuente
Aunque este tema no está directamente relacionado, menciona mucha información similar y relacionada.
Wiki de Debian | Raspberry Pi y qemu-user-static
Si no puede usar
apt
para instalar algunos de los comandos mencionados en esta publicación, intente usarapt-cache search [package_name]
. Es posible que esto no muestre ningún resultado si el comando proviene de un paquete con un nombre diferente.Por ejemplo,
losetup
anteriormente se podía instalarlosetup
usandoapt install losetup
, pero ahora forma parte delutil-linux
repositorio de Ubuntu. Para saber qué paquete actúa como contenedor de otro paquete, debe utilizar la búsqueda del repositorio en línea para su distribución de Linux. O, si debe instalarlo desde otra fuente, use un motor de búsqueda web.Algunos paquetes que vale la pena ver ...
util-linux genisoimage dosfstools squashfs-tools fsarchiver xfsprogs reiserfsprogs reiser4progs jfsutils ntfsprogs btrfs-tools
Cada distribución de Linux también tiene sus propias páginas de manual en línea. A veces es más fácil usar las páginas de manual que un tutorial. Las páginas del manual también le indicarán todas las opciones de comando y parámetros. Un tutorial generalmente solo se enfocará en los que se usan.
fuente
Ejecutable mínimo
sfdisk
+mke2fs
ejemplo sinsudo
En este ejemplo, crearemos, sin
sudo
osetsuid
, un archivo de imagen que contiene dos particiones ext2, cada una de ellas con archivos de un directorio de host.Luego usaremos
sudo losetup
solo para montar las particiones para probar que el kernel de Linux realmente puede leerlas como se explica en: /programming/1419489/how-to-mount-one-partition-from-an-image -archivo-que-contiene-particiones-múltiples / 39675265 # 39675265Para más detalles, ver:
sfdisk
: trata con la tabla de particiones: /superuser/332252/how-to-create-and-format-a-partition-using-a-bash-script/1132834#1132834mke2fs
: trata con el formato EXT de particiones: /superuser/605196/how-to-create-ext2-image-without-superuser-rights/1366762#1366762El ejemplo:
Probado en Ubuntu 18.04. GitHub aguas arriba .
Ayuda para ajustar un archivo de sistema de archivos sin formato existente en una imagen
Extraído de lo anterior, lo siguiente puede ser útil:
GitHub aguas arriba .
fuente