Com um conjunto padrão de ferramentas, as unidades podem ser copiadas junto com o sistema operacional Linux. Existem algumas considerações a serem tomadas com distribuições, mas na maioria das vezes isso funciona em qualquer distribuição. Em nosso exemplo, passaremos de um HDD para um SSD que também seja menor que o HDD.
Reúna informações sobre as partições e sistemas de arquivos.
Layout do dispositivo de partição / bloco:
lsblk -o NAME,VENDOR,SERIAL,FSTYPE,MODEL,SIZE,TYPE,MOUNTPOINT
Determine as partições em que você estará trabalhando e o disco de recebimento.
ls /dev/disk/by-id/
Com base nas informações do lsblk, anote um conjunto de caminhos / dev / disk em suas partições existentes e no disco de recebimento. Observando que VENDOR de lsblk é na verdade o nome do barramento.
/dev/disk/by-id/[busname]-[model]_[serial]-partX
Por exemplo:
/dev/disk/by-id/usb-hdd1000_1234-part1
/dev/disk/by-id/usb-hdd1000_1234-part2
/dev/disk/by-id/usb-hdd1000_1234-part3
/dev/disk/by-id/usb-hdd1000_1234-part4
/dev/disk/by-id/usb-hdd1000_1234-part5
E o disco de origem e de recebimento:
/dev/disk/by-id/usb-hdd1000_1234
/dev/disk/by-id/ata-ssd1000_1234
Confirme que estes são os dispositivos que você espera com ls -la:
ls -la /dev/disk/by-id/usb-hdd1000_1234
/dev/disk/by-id/usb-hdd1000_1234 -> ../../sda
ls -la /dev/disk/by-id/ata-ssd1000_1234
/dev/disk/by-id/ata-ssd1000_1234 -> ../../sdb
Decida sobre um layout de partição desejável
Por exemplo
Device size: 256GiB
1 EFI 256MiB
2 Linux 20GiB
3 Windows 80GiB
4 Data 139.75GiB
5 Swap 16GiB
Refira-se a outras perguntas sobre quais tipos de partições você precisa ou deveria ter para o seu sistema específico. No entanto, certifique-se de que todas as suas partições estejam alinhadas com os setores de 4K, especialmente se você estiver migrando para um SSD. Para isso, ajuste o tamanho de cada partição para que seja divisível por 4KiB.
Criar novas partições
Podemos usar o fdisk ou dividir entre outros. Nós vamos cobrir apenas estes e apenas GPT por enquanto. Usando o layout de partição de exemplo:
fdisk /dev/disk/by-id/ata-ssd1000_1234
g For new GPT partition table
n For new partition
ENTER For default partition number.
ENTER For default start sector.
+256M For a 256MiB (M) ahead of the start sector (+).
t 1
1
For EFI System fs type.
Códigos de tipo incluem:
1 EFI System - Needed on EFI systems for booting
4 BIOS Boot - Used for executable data on BIOS mode GPT disks
11 Microsoft Basic Data - Used for most Windows data partitions including NTFS
20 Linux file system - Used for all Linux based file systems except swap. Other types exist for special volume types like RAID (29) and LVM (31).
19 Linux swap - for swap partitions
Repita para as outras partições.
OU com parted:
parted
> select /dev/disk/by-id/ata-ssd1000_1234
> mktable gpt
> mkpart ESP fat32 1MiB 513MiB
> set 1 boot on
> mkpart primary ext4 513MiB 20737MiB
> mkpart primary ntfs 20737MiB 102657MiB
> mkpart primary ext4 102657MiB 245761MiB
> mkpart primary linux-swap 245761MiB 262145MiB
Determine se algum sistema de arquivos precisa ser redimensionado
Se o disco receptor é menor ou algumas partições menores são desejadas, então os sistemas de arquivos existentes precisam ser reduzidos.
Utilização do sistema de arquivos:
dh -h
Determine se o sistema de arquivos tem espaço livre suficiente para fazer isso. Se o sistema de arquivos for NTFS, considere o uso do Gerenciamento de disco no Windows.
Por exemplo, vamos redimensionar a partição Linux, que /dev/disk/by-id/usb-hdd1000_1234-part2
e2fsck -f /dev/disk/by-id/usb-hdd1000_1234-part2
resize2fs /dev/disk/by-id/usb-hdd1000_1234-part2 20G
Se você não tiver certeza do tamanho exato, apenas falsifique o tamanho para algo obviamente menor do que o tamanho esperado da nova partição. O sistema de arquivos pode ser expandido para o tamanho exato depois.
resize2fs /dev/disk/by-id/usb-hdd1000_1234-part2 19G
OU Obter dentro de cerca de 500 MiB 19 GiB = 19456MiB + 500MiB = 19956 MiB
resize2fs /dev/disk/by-id/usb-hdd1000_1234-part2 19956M
Clonar sistemas de arquivos para novas partições
Clonar sistemas de arquivos copiando somente o espaço alocado:
Você provavelmente desejará fazer isso no modo de usuário único ou em um CD ao vivo.
partclone.fat32 -b -s /dev/disk/by-id/usb-hdd1000_1234-part1 -o /dev/disk/by-id/ata-ssd1000_1234-part1
partclone.ext4 -b -s /dev/disk/by-id/usb-hdd1000_1234-part2 -o /dev/disk/by-id/ata-ssd1000_1234-part2
partclone.ntfs -b -s /dev/disk/by-id/usb-hdd1000_1234-part3 -o /dev/disk/by-id/ata-ssd1000_1234-part3
partclone.ext4 -b -s /dev/disk/by-id/usb-hdd1000_1234-part4 -o /dev/disk/by-id/ata-ssd1000_1234-part4
refaça a troca
mkswap /dev/disk/by-id/usb-hdd1000_1234-part5
Porque reduzimos o tamanho do sistema de arquivos em / dev / disk / by-id / usb-hdd1000_1234-part2, que agora é copiado para / dev / disk / by-id / ata-ssd1000_1234-part2, pode ser necessário ser ampliado. Se os tamanhos foram copiados exatamente isso não é necessário.
resize2fs /dev/disk/by-id/ata-ssd1000_1234-part2
Tornar o sistema inicializável com o novo disco
Agora que os sistemas de arquivos e as partições são movidos para o UEFI, o carregador de inicialização e o Linux precisam estar cientes das novas partições. Outra abordagem é a reutilização de UUIDs ou ordenação de partições, mas essa abordagem provavelmente precisará de ajustes e ajustes de qualquer maneira, portanto, basta atualizar conforme necessário.
Linux:
Dependendo da sua distribuição, as partições de troca serão automaticamente detectadas e usadas ou talvez precisem ser incluídas no fstab.
Atualize o fstab para as partições necessárias para inicializar. Isso incluirá partições para
/
/boot
/boot/efi
/home
No nosso exemplo, temos apenas / e o / boot / efi para atualizar.
Use a saída dos UUIDs do lsblk no fstab.
edite o / etc / fstab
Primeiro para o sistema EFI
lsblk -no UUID /dev/disk/by-id/ata-ssd1000_1234-part1
Use a saída para alterar a linha no fstab com / boot / efi onde o UUID = deve ser alterado para a saída do UUID de lsblk
Faça o mesmo com o sistema de arquivos do Linux. lsblk -no UUID / dev / disk / by-id / ata-ssd1000_1234-part2
UEFI:
Alternativamente, você pode querer apenas começar com uma partição de sistema EFI formatada que também exigiria que o Windows tenha seu gerenciador de inicialização fixo. Caso contrário, pule esta etapa.
mkfs.vfat -F32 /dev/disk/by-id/ata-ssd1000_1234-part1
Você pode adicionar entradas manualmente ao UEFI usando o efibootmgr, mas usaremos a funcionalidade incorporada no GRUB.
GRUB:
Vamos apenas cobrir o bootloader do GRUB por enquanto.
mount /dev/disk/by-id/ata-ssd1000_1234-part2 /mnt
mount /dev/disk/by-id/ata-ssd1000_1234-part1 /mnt/boot/efi
grub-install --target=x86_64-efi --boot-directory=/mnt/boot --efi-directory==/mnt/boot/efi --bootloader-id="NewLinux"
grub-mkconfig -o /mnt/boot/grub/grub.cfg
Defina o parâmetro bootloader-id para a entrada que você deseja que apareça em seu UEFI. Você quer que isso seja diferente da sua configuração atual.
Note que o grub-mkconfig usa seus scripts de sistemas em execução para gerar as entradas. Se você estiver usando seu disco existente, isso incluirá entradas para si mesmo e, em seguida, o os-prober incluirá o outro disco. Você terá que selecionar isso, pois não será padrão ao inicializar. Se você estiver usando um live cd, ambas as instalações serão detectadas pelo os-prober. Uma vez no novo sistema, execute novamente o grub-mkconfig para as entradas a serem geradas pelo novo sistema.
Finalmente desmonte os sistemas de arquivos e reinicie
umount /mnt/*
reboot
Certifique-se de selecionar o novo disco no grub a partir das entradas do osprober e, em seguida, gerar novamente após inicializar no novo disco.
grub-mkconfig -o /boot/grub/grub.cfg