Migre los datos de la tarjeta de memoria (incluidos el registro de arranque y la partición del sistema) que no se utilizan por completo a una tarjeta de memoria con menor capacidad (manteniendo la función del disco del sistema)

Migre los datos de la tarjeta de memoria (incluidos el registro de arranque y la partición del sistema) que no se utilizan por completo a una tarjeta de memoria con menor capacidad (manteniendo la función del disco del sistema)

Recientemente, me encontré con una demanda como el título. Hay una tarjeta microSD del sistema de 64 GB (tarjeta TF) de NVIDIA Jetson Nano, que contiene 14 particiones GPT, 13 de las cuales son muy pequeñas y todas menos de 1 MB, y una partición tiene una gran capacidad, con una capacidad total de aproximadamente 32 GB. Al usar el comando dd en Linux para hacer una copia de seguridad del archivo de imagen obtenido por la tarjeta TF anterior para crear un nuevo disco del sistema de la tarjeta TF, se encuentra que:

1. Es imposible que la nueva tarjeta TF sea de 32 GB, porque el archivo de imagen tiene 64 GB, aunque no hay una partición en la segunda mitad, pero porque la tabla de particiones de respaldo GPT (Encabezado secundario) existe en el último sector de la tarjeta TF original de 64 GB (último sector) es el final del archivo de imagen, la tabla de partición de copia de seguridad GPT se perderá, por lo que fallará la creación del nuevo disco del sistema;

2. Incluso si usa una nueva tarjeta TF de 64 GB, a veces ocurrirá el mismo problema que el anterior porque la capacidad de la nueva tarjeta es ligeramente menor que la capacidad de la tarjeta original;

3. Tuvimos que usar una nueva tarjeta TF de 128 GB para crear un nuevo disco de sistema basado en la imagen de copia de seguridad.

Para poder usar una tarjeta TF de 64 GB para crear un nuevo disco del sistema, mi método consiste aproximadamente en crear la misma tabla de particiones que la tarjeta TF de 64 GB original en una tarjeta TF de 32 GB y dividir la partición de la tarjeta de 64 GB original por partición Copie el contenido de la tarjeta de 32 GB a la tarjeta de 32 GB y use la imagen de copia de seguridad obtenida de la tarjeta de 32 GB como fuente para crear un nuevo disco del sistema. Todo el proceso se divide en 5 pasos, que se describen en detalle a continuación.

1. Use fdisk para ver la información de la tarjeta de 32 GB y la tarjeta original de 64 GB

Conecte ambas tarjetas TF a la PC con Linux y ejecute en la terminal

sudo fdisk -l

Puede enumerar la información de todos los discos conectados al sistema y determinar los archivos de descripción del dispositivo de ambos según la capacidad. En este ejemplo, el archivo de descripción del dispositivo de la tarjeta TF de 32 GB es /dev/sdb y el de la tarjeta TF de 64 GB es /dev/sdc. implementar

sudo fdisk -l /dev/sdb

Solo vea la información de la tarjeta TF de 32 GB, como se muestra en la figura a continuación.

1Se puede ver que esta es una tarjeta vacía. implementar

sudo fdisk -l /dev/sdc

Solo verifique la información de la tarjeta TF de 64 GB, como se muestra en la figura a continuación

2Se puede ver que contiene 14 particiones GPT, de las cuales solo /dev/sdc1 es una partición de gran capacidad.

2. Use gparted para reducir la partición más grande en la tarjeta original de 64 GB

En el paso anterior, sabemos que la capacidad de /dev/sdc1 es de 29,7 GiB, lo que supera la capacidad total de algunas tarjetas TF de 32 GB, aunque la capacidad de las tarjetas TF de 32 GB en este ejemplo es de 29,8 GiB es lo suficientemente grande, pero para lectores La partición /dev/sdc1 en la tarjeta TF de 32 GB de capacidad insuficiente o la tarjeta original de 64 GB es más grande (por ejemplo, 48 GiB, y el espacio ocupado por todos los archivos es aún inferior a 29 GiB). Aquí uso gparted para reducir la partición /dev /sdc1 a 29 GiB. implementar

sudo apt install gparted
sudo umount /dev/sdc1
sudo gparted

Instale gparted, desmonte la partición /dev/sdc1 (de lo contrario, solo se puede ampliar pero no reducir) e inicie gparted. gparted es un programa GUI, en el que la operación intuitiva, el resultado es el siguiente

3
gparted realiza principalmente dos pasos:
1. Llamar a resize2fs para ajustar el tamaño del sistema de archivos de 29,71 GiB a 29,00 GiB
2. Ajustar la capacidad de la partición a 29,00 GiB. El primer paso es cambiar la tabla de asignación de archivos y puede ajustar la distribución de algunos archivos en la partición, es decir, mover el contenido entre 29,00 GiB y 29,71 GiB hacia adelante. El segundo paso es manipular la tabla de particiones para establecer la capacidad de /dev/sdc1 en 29,00 GiB. Este paso se puede realizar manualmente en fdisk o gdisk (se describe en el siguiente paso).

4
La figura anterior usa fdisk para enumerar las particiones de la tarjeta de 64 GB después de que se haya reducido la capacidad de la partición En comparación con la Figura 2, se puede ver que el tamaño de /dev/sdc1 sí ha cambiado.

3. Use gdisk para crear la misma tabla de particiones en la tarjeta de 32 GB que en la tarjeta original de 64 GB

instalar gdisk

sudo apt-get install gdisk

Ejecutar después de instalar gdisk

sudo gdisk /dev/sdc

Ejecute gdisk de forma interactiva en /dev/sdc, el proceso de operación es como se muestra a continuación (¡Precaución! El encabezado secundario se colocó más allá de los límites del disco. ¡Mover el encabezado, pero pueden ocurrir otros problemas! en la figura indica que la ubicación de la partición de copia de seguridad GPT la tabla ha cambiado de Los 64 GB al final de la tarjeta original se ajustan a los 32 GB al final de la nueva tarjeta).

5
Realice un reinicio después del proceso anterior

sudo reboot

para que el sistema operativo reconozca la nueva tabla de particiones. Luego usamos fdisk para ver /dev/sdb nuevamente y compararlo con la Figura 4. Se puede ver que la misma tabla de particiones GPT se establece en la tarjeta de 32 GB /dev/sdb como en la tarjeta de 64 GB /dev/sdc después la capacidad de la partición se reduce, como se muestra en la siguiente figura

6

4. Use dd para copiar el contenido de la tarjeta original de 64 GB a la tarjeta de 32 GB partición por partición

Ejecute los siguientes 14 comandos para hacer una copia de seguridad de todas las particiones en la tarjeta original de 64 GB en archivos por partición

sudo dd if=/dev/sdc1 status=progress | gzip -c > 1.img.gz
…
sudo dd if=/dev/sdc14 status=progress | gzip -c > 14.img.gz

El proceso de operación es el siguiente

7Luego ejecute los siguientes 14 comandos para restaurar los datos del archivo de respaldo a la partición correspondiente en la tarjeta de 32 GB

gunzip -c 1.img.gz | sudo dd of=/dev/sdb1 status=progress
…
gunzip -c 1.img.gz | sudo dd of=/dev/sdb1 status=progress

El proceso de operación es el siguiente

8Luego ejecute partprobe o reinicie. Así que hemos creado un nuevo disco de sistema Jetson Nano de 32 GB

5. Obtenga la imagen de copia de seguridad basada en la tarjeta de 32 GB y utilícela para crear un nuevo disco del sistema

A continuación podemos ejecutar

sudo dd if=/dev/sdb status=progress | gzip -c > nano_backup.img.gz

Haga una copia de seguridad del disco del sistema de 32 GB en el archivo nano_backup.img.gz y luego ejecute

gunzip -c nano_backup.img.gz | sudo dd of=/dev/sdd status=progress

Restaure desde archivos de copia de seguridad a futuras tarjetas TF para crear más discos de sistema. En este punto podemos usar una tarjeta TF de 64 GB en lugar de tener que usar una tarjeta TF de 128 GB.

Supongo que te gusta

Origin blog.csdn.net/weixin_44355653/article/details/131847187
Recomendado
Clasificación