Linux 시스템용 원시 img 파일 생성

Linux 시스템용 원시 img 파일 생성

QEMU에서 시작하고 실행할 수 있는 IMG 파일로 Linux 시스템을 백업하려고 합니다.

노트:저는 Lubuntu와 작은 코어 Linux에서 테스트했습니다.

내가 따르는 과정은 다음과 같습니다.

  • sda하드 드라이브 가 2개 있고sdb
  • 파티션 sdb1및 마운트 sdb1파티션/mnt/sdb
  • ddsda마운트된 디렉터리 sdb에 있는 IMG 파일 크기의 빈 파일입니다 . dd if=/dev/zero of=/mnt/sdb/disk.img bs=x count=1- x의 크기sda
  • 그런 다음 fdiskon을 사용하여 sda디스크 레이아웃을 스크립트 파일로 출력한 다음 이를 disk.img파일 에 로드합니다.
  • 그런 다음 -losetup -P -f disk.img 내용을 마운트하고 복사합니다.
  • 순환 장비 찾기

    예를 들어 /dev/loop36 0 0 0 0 /mnt/sdb/disk.img 0 512

  • 루프 장치의 첫 번째 파티션에 파일 시스템을 생성합니다.mkfs.ext2 /dev/loop36p1

  • 분할된 사이클링 장비 설치 -mount /dev/loop36p1 /mnt/img
  • 그런 다음 부팅 섹터를 복사하십시오.dd if=/dev/sda of=disk.img bs=512 count=1 conv=notrunc
  • 결국 rsync를 사용하여 파일 시스템을 /mnt/img디렉터리에 복사했는데, 이는 다양한 성공을 거두었습니다. 사용:

    $ rsync -aHxv / \
       --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
       /mnt/img 
    

Lubuntu를 사용하여 위에 표시된 정확한 프로세스를 시도했고 rsync명령이 작동했지만 QEMU에서 IMG를 실행하려고 하면 하드 드라이브에서 부팅할 때 중단됩니다.

tcl에서 위 프로세스를 시도하면 rsync명령이 실패하고 QEMU에서 부팅을 시도하면 부팅 가능한 장치가 없다는 메시지가 나타납니다.

누구든지 이것에 대한 제안이 있습니까? 아니면 이전에 비슷한 일을 해본 적이 있고 목표를 달성할 수 있는 더 나은 방법이 있습니까?

답변1

  • 부트 섹터를 복사하면 그 안에 있는 파티션 테이블도 복사됩니다. fdisk 버전과 원본 파일 sda과 이미지 파일을 분할할 때 사용된 정확한 옵션에 따라 파티션 제한은 정확히 동일할 수도 있고 동일하지 않을 수도 있습니다. 그렇지 않은 경우... 루프 마운트는 fdisk생성한 파티션 오프셋을 사용하지만 시작 시 VM은 원본의 파티션 오프셋을 사용합니다 sda.

  • MBR을 복사했지만 dd내용은 다음과 같습니다. MBR에는 다른 부트 로더 구성 요소(또는 GRUB 레거시)의 위치를 ​​식별하는 블록 수준 오프셋이 포함되어 있습니다. 이러한 파일이 ./bootrsync<filesystem>_stage1.5stage2rsync

  • 부트로더의 일부를 완전히 놓쳤을 수도 있습니다. GRUB Legacy는 파티션의 시작 부분, 즉 영역에 자신의 일부를 포함할 수 있습니다.파일 시스템 외부GRUB2는 거의 항상 MBR 이후의 디스크 블록에 대부분의 코어 이미지를 기록하지만첫 번째 파티션이 시작되기 전에. 디스크의 처음 512바이트만 복사하면 기존 MBR만 얻을 수 있지만 내용은 손실됩니다. 나는 이것이 당신의 스타트업이 실패한 가장 큰 이유라고 생각합니다.

계획한 가상화 방법에 따라 아마도 다음과 같은 것을 사용한 다음 mount --bind /dev /mnt/img/dev이미지 /proc환경 으로 이동하여 이를 사용하여 올바른 블록 오프셋이 있는 이미지 파일에 부트로더를 올바르게 다시 작성해야 합니다./syschrootgrub-install

또 다른 가능한 접근 방식은 단일 사용자 모드에서 원본 시스템을 시작하거나 원본 시스템에서 가능한 한 많은 데몬을 중지(즉, 시스템 정지)한 다음 dd전체 시스템 디스크를 단일 작업으로 이미지에 넣는 것입니다. 이 방법을 fsck사용하면 처음 부팅할 때 결과 이미지를 실행해야 하지만 MBR 및 부트로더의 모든 복잡성을 피할 수 있습니다.

관련 정보