Mover a instalação do FreeBSD para um HDD menor [duplicado]

1

Bom dia!

Eu tenho a instalação do FreeBSD nas próximas partições:

Agora o FreeBSD está instalado em um disco rígido de 500GB. Eu quero movê-lo para 250GB de disco rígido. Qual é a maneira mais segura e correta de fazer isso? Temo que:

  • clone com dd falhará porque a unidade de destino é menor;
  • se eu copiar todos os arquivos com cp utility, arruinarei os direitos de arquivo.

Por favor explique. Eu prefiro a maneira de usar um programa que fará tudo em uma etapa. P.S. Eu encontrei um tal, mas agora não posso responder minha própria pergunta.

    
por George Gaál 01.04.2016 / 13:11

2 respostas

3

Se tudo o que você quer é tornar o ad0 inicializável, você não precisa do conteúdo dos sistemas de arquivos / dev e / proc. Eles são gerados dinamicamente por o kernel quando você monta esses sistemas de arquivos e os acessa.

Se o espaço em disco usado em ad6 (a unidade de origem do clone) for menor que o tamanho do destino clone, deve ser possível copiar os arquivos de origem usando qualquer um de:

* tar
* dump & restore
* cpio

Algum cuidado deve ser tomado para evitar a cópia de sistemas de arquivos especiais, como / dev e / proc que você mencionou. Se você usar algo como um Live CD-ROM para inicializar, em vez de inicializar a partir do disco 'source', isso deve ser fácil, porque os sistemas de arquivos especiais / dev e / proc serão montados apenas para o dispositivo boot (o CD-ROM neste caso), então as partições do disco rígido irá simplesmente incluir diretórios vazios como 'potenciais pontos de montagem' para o / dev, / proc e outros lugares especiais.

FWIW, os passos que eu segui ao clonar minha antiga instalação de laptop em um novo disco rígido são os mostrados abaixo. Eu não queria abrir o laptop, porque isso violaria seus termos de garantia. Então eu mantive o disco 'target' como ad0 e usou um gabinete conectado por USB para disco rígido de 2,5 " discos para anexar o disco original 'fonte' (retirado do meu antigo, morto laptop).

[1] Inicialize a partir do CD-ROM usando uma instalação FreeSBIE (*).

(*) Many thanks to the FreeSBIE folks, for making such an easy to
use Live CD-ROM.  I have found it very useful far too many times to
mention all of them in an email post!

[2] Crie um diretório / mnt / source e / mnt / target.

    # mkdir -p /mnt/source
    # mkdir -p /mnt/target

[3] Monte a partição raiz de origem e use a montagem existente     pontos sob essa árvore de origem para montar as partições de destino:

    # mount -o ro /dev/da0s1a /mnt/source
    # mount -o ro /dev/da0s1e /mnt/source/home

Note that, for extra safety, I mounted the source partitions as
read-only.  This way I would at least get a warning if I botched the
copying process, and avoid messing my original 'source' data.

[4] Particione e monte o disco de destino (o disco ad0 interno do     computador portátil). É aí que a inicialização de um Live CD-ROM ajudou muito,     porque não precisei fazer nada especial para "redimensionar" ou "manter"     partes do disco não particionadas. Eu poderia usar o disco full para     a nova instalação.

    # fdisk -BI /dev/ad0
    # bsdlabel -w -B /dev/ad0s1
    # bsdlabel -e /dev/ad0s1

When I had configured the new ad0s1a and ad0s1e partitions, I saved
the label and exited bsdlabel's editor.

[5] Formate as partições de destino:

    # newfs -L MYROOT /dev/ad0s1a
    # newfs -L MYHOME -U /dev/ad0s1e

The -L labels are entirely optional, and, as you can see, I only
enabled softupdates on the new /home partition.

[6] Monte as partições de destino em '/ mnt / target'. As montarias eram     read-write desta vez:

    # mount /dev/ad0s1a /mnt/target
    # mkdir /mnt/target/home
    # mount /dev/ad0s1e /mnt/target/home

Note that the second command is not optional.  The new root file
system was brand new, so it appears completely empty after being
mounted.

[7] Copie tudo usando o tar do BSD (1):

    # tar -C /mnt/source -cf - . | tar -C /mnt/target xvf -

[8] O passo final foi entrar em contato com o novo sistema "alvo", e     consertar qualquer permissão de diretório especial, usando o mtree (8)     especificações de /etc/mtree'. This restores any special flags like noschg 'ou as permissões necessárias para o daemon adequado     operação em '/ var / run' e assim por diante.

To avoid side-effects from the runtime environment of the shell I
was using 'outside' of the chroot, I cleared all environment
variables, and manually set only the bare minimum of stuff I needed
'inside' the chroot:

    # env -i USER='root' SHELL='/bin/csh' HOME='/root' \
          PATH='/bin:/sbin:/usr/bin:/usr/sbin' \
          chroot /mnt/chroot /bin/csh
    freesbie# set prompt = 'chroot# '

Then I run the '/etc/mtree/BSD.*.dist' files through mtree inside
the chroot:

    chroot# cd / ; mtree -deU -f /etc/mtree/BSD.root.dist
    chroot# cd /usr ; mtree -deU -f /etc/mtree/BSD.usr.dist
    chroot# cd /usr/include ; mtree -deU -f /etc/mtree/BSD.include.dist
    chroot# cd /var ; mtree -deU -f /etc/BSD.var.dist

[9] Finalmente, eu verifiquei o novo arquivo '/ etc / fstab' para ter certeza que estava ok     (no meu caso as partições não mudaram de nome ou ordem, então eu já     tudo estava bem; Eu estava apenas sendo cuidadoso).

Then I exited from the chroot, unmounted all partitions, and
rebooted the laptop.  The internal ad0 disk was a 'copy' of my old
disk, so I expected it to boot normally into FreeBSD... which, much
to my amusement (since this was one of the few times I had to move
_everything_ to a new disk), it promptly did :)
    
por 01.04.2016 / 13:45
2

Você já tentou com dd ?

Isso daria: dd if=/dev/sdb1 of=/dev/sda2 bs=1M

    
por 01.04.2016 / 13:14