FreeBSD 설치를 더 작은 HDD로 옮기기

FreeBSD 설치를 더 작은 HDD로 옮기기

안녕히 가세요!

다음 파티션에 FreeBSD를 설치했습니다: 마운트 및 df 출력 여기에 이미지 설명을 입력하세요.

FreeBSD는 이제 500GB 하드 드라이브에 설치됩니다. 250GB 하드 드라이브로 옮기고 싶습니다. 가장 안전하고 올바른 방법은 무엇입니까? 나는 두렵다:

  • dd대상 드라이브가 더 작기 때문에 복제가 실패합니다.
  • 유틸리티를 사용하여 cp모든 파일을 복사하면 파일 권한이 중단됩니다.

설명 해주십시오. 나는 모든 것을 한 단계로 수행하기 위해 하나의 프로그램을 사용하는 것을 선호합니다. PS 그런 것을 찾았지만 지금은 내 질문에 답할 수 없습니다.

답변1

ad0을 부팅 가능하게 만들고 싶다면 필요하지 않습니다.콘텐츠 /dev 및 /proc 파일 시스템. 이러한 파일 시스템을 마운트하고 액세스하면 커널에 의해 동적으로 생성됩니다.

ad6(복제 소스 드라이브)에 사용된 디스크 공간이 복제 대상의 크기보다 작은 경우 다음 방법 중 하나를 사용하여 소스 파일을 복사할 수 있습니다.

* tar
* dump & restore
* cpio

언급한 /dev 및 /proc와 같은 특수 파일 시스템을 복사하지 않도록 주의해야 합니다. "소스" 디스크에서 부팅하는 대신 Live CD-ROM과 같은 것을 사용하여 부팅하는 경우 특수 /dev 및 /proc 파일 시스템이 단지시작하다장치(이 경우 CD-ROM)이므로 하드 디스크 파티션에는 /dev, /proc 및 기타 특수 위치에 대한 "잠재적 마운트 지점"으로 빈 디렉토리만 포함됩니다.

FWIW, 기존 노트북 설치를 새 하드 드라이브에 복제했을 때 수행한 단계는 다음과 같습니다. 보증을 위반하게 되므로 노트북을 열고 싶지 않습니다. 그래서 "대상" 디스크를 ad0으로 남겨두고 2.5" 하드 드라이브용 USB 연결 인클로저를 사용하여 원래 "소스" 디스크(이전 노트북의)를 연결했습니다.

[1] FreeSBIE 설치를 사용하여 CD-ROM(*)에서 부팅합니다.

(*) 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] /mnt/source 및 /mnt/target 디렉터리를 만듭니다.

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

[3] 소스 루트 파티션을 마운트한 다음 소스 트리 아래의 기존 마운트 지점을 사용하여 대상 파티션을 마운트합니다.

    # 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] 대상 디스크(노트북 내부의 ad0 디스크)를 파티션하고 마운트합니다. 여기서는 Live CD-ROM에서 부팅하는 것이 많은 도움이 됩니다. 디스크의 분할되지 않은 부분을 "크기 조정"하거나 "유지"하기 위해 특별한 작업을 수행할 필요가 없기 때문입니다. 나는 사용할 수 있다가득한신규 설치용 디스크.

    # 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] 대상 파티션을 포맷합니다:

    # 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] `/mnt/target' 아래에 대상 파티션을 마운트합니다. 이번에는 마운트를 읽고 쓸 수 있습니다.

    # 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] 모든 것을 복사하려면 BSD tar(1)을 사용하십시오:

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

/etc/mtree'. This restores any special flags like[8] 마지막 단계는 새로운 "대상" 시스템으로 chroot하고 noschg 또는 "/var/" 등의 mtree(8) 사양을 사용하여 올바른 데몬 작업에 필요한 특수 디렉토리 권한을 수정하는 것입니다.

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] 마지막으로 새 "/etc/fstab" 파일을 검사하여 문제가 없는지 확인했습니다(제 경우에는 파티션 이름이나 순서가 바뀌지 않았기 때문에 이미 괜찮았습니다. 단지 조심했을 뿐입니다).

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

답변2

시도해 보셨나요 dd?

그러면 다음이 제공됩니다.dd if=/dev/sdb1 of=/dev/sda2 bs=1M

관련 정보