GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo crear un archivo de imagen de partición formateado desde cero?

Si en Linux, al cargar el loop módulo, asegúrese de pasar un max_part opción al módulo para que los dispositivos de bucle sean particionables.

Compruebe el valor actual:

cat /sys/module/loop/parameters/max_part

Si es 0:

modprobe -r loop # unload the module
modprobe loop max_part=31

Para que esta configuración sea persistente, agregue la siguiente línea a /etc/modprobe.conf o a un archivo en /etc/modprobe.d si ese directorio existe en su sistema:

options loop max_part=31

Si modprobe -r loop falla porque "el bucle del módulo está integrado", deberá agregar loop.max_part=31 a la línea de comandos de su kernel y reinicie. Si su gestor de arranque es Grub2, añádalo al valor de GRUB_CMDLINE_LINUX en etc/default/grub .

Ahora, puede crear un dispositivo de bucle particionable:

truncate -s64M file # no need to fill it with zeros, just make it sparse
fdisk file # create partitions
losetup /dev/loop0 file
mkfs.vfat /dev/loop0p1 # for the first partition.
mount /dev/loop0p1 /mnt/

(tenga en cuenta que necesita una versión relativamente reciente de Linux).


losetup /dev/loop0 file -o 1048576 --sizelimit limit

El desplazamiento especificado debe estar en bytes (1048576 =2048 sectores * 512 bytes por sector).

mount -o loop,offset=1048576,sizelimit=limit

Para obtener más información, consulte losetup y mount.


Los siguientes procedimientos le permiten montar las particiones de la imagen para modificarlas.

opción losetup 2.21 -P

losetup -P -f --show my.img

Crea uno /dev/loopXpY por partición.

Ventaja:ejecutable preinstalado en muchas distribuciones (paquete util-linux).

Desventaja:opción bastante reciente, no presente en Ubuntu 14.04.

losetup -P automatización

Uso:

$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2

$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there

$ sudo losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                                                      DIO
/dev/loop1         0      0         0  0 /full/path/to/my.img

$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0

Fuente:

los() (
  img="$1"
  dev="$(sudo losetup --show -f -P "$img")"
  echo "$dev"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    echo "$dst"
    sudo mkdir -p "$dst"
    sudo mount "$part" "$dst"
  done
)
losd() (
  dev="/dev/loop$1"
  for part in "$dev"?*; do
    if [ "$part" = "${dev}p*" ]; then
      part="${dev}"
    fi
    dst="/mnt/$(basename "$part")"
    sudo umount "$dst"
  done
  sudo losetup -d "$dev"
)

kpartx

sudo apt-get install kpartx
losetup -fs my.raw
sudo kpartx -a my.img
ls /dev/mapper

Salida:

/dev/mapper/loop0
/dev/mapper/loop0p1

donde loop0p1 es la primera partición, por lo que podemos hacer:

mkdir -p d
sudo mount /dev/mapper/loop0p1 d

Ventaja de este método:funciona en Ubuntu 14.04 sin reiniciar.


Linux
  1. Cómo crear una imagen personalizada desde un contenedor Docker

  2. Cómo instalar un archivo dmg en Mac desde la línea de comandos

  3. ¿Cómo crear un archivo en Linux desde la ventana de terminal?

  4. ¿Cómo puedo crear un archivo con un tamaño específico desde una línea de comando?

  5. ¿Cómo crear un archivo qcow2 que no sea de aprovisionamiento delgado?

Cómo crear un nuevo sistema de archivos Ext4 (partición) en Linux

Cómo crear un archivo en Linux

Cómo crear un archivo Tar Gz

Cree un archivo de copia de seguridad de imagen ISO desde una carpeta en Ubuntu 17.10

Cómo crear directorios desde un archivo de texto en Linux

Cómo crear una imagen de Docker desde un contenedor en ejecución