Como migrar partições e sistemas de arquivos para outro dispositivo

0

Eu tenho um sistema existente com partições, mas quero movê-las para um novo dispositivo. O novo dispositivo pode ser menor e estar conectado ao sistema de maneira diferente do dispositivo existente. Como faço para mover as partições e sistemas de arquivos neles e manter um sistema de inicialização?

    
por jdwolf 28.12.2017 / 20:38

1 resposta

0

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
    
por 28.12.2017 / 20:38