Necesito crear un sistema de archivos con solo una partición de la nada (/dev/zero
).
Probé esta secuencia de comandos:
dd if=/dev/zero of=mountedImage.img bs=512 count=131072
fdisk mountedImage.img
n
p
2048
131072
Básicamente, necesito crear un archivo de imagen de 64 MB lleno de ceros. Luego uso fdisk
para agregar una nueva partición para el nuevo sistema de archivos (que finalmente debería ser FAT32), comenzando en el sector 2048
y usando todos los sectores restantes.
losetup /dev/loop1 mountedImage.img
mkfs -t vfat /dev/loop1
Pero aquí estoy teniendo problemas. Si configuro un loop
dispositivo y formatéelo usando mkfs -t vfat
, la tabla de particiones se sobrescribe y el sistema de archivos (FAT32) se coloca en el disco. No necesito que todo el disco esté formateado con FAT32, solo necesito que mi partición principal lo esté.
¿Alguien sabe cómo puedo formatear solo una partición de la imagen de disco sin formato, no la imagen completa?
Respuesta aceptada:
Si está 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).