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 :)