파티션이 있는 기존 시스템이 있지만 이를 새 장치로 이동하고 싶습니다. 새 장치는 더 작을 수 있으며 기존 장치와 다르게 연결될 수 있습니다. 파티션과 파일 시스템을 이동하고 부팅 시스템을 유지하려면 어떻게 해야 합니까?
답변1
표준 도구 세트를 사용하여 Linux 운영 체제와 함께 드라이브를 복사할 수 있습니다. 배포판에는 몇 가지 주의 사항이 있지만 대부분의 경우 이는 모든 배포판에 적용됩니다. 이 예에서는 HDD에서 HDD보다 작은 SSD로 마이그레이션하겠습니다.
파티션 및 파일 시스템에 대한 정보를 수집합니다.
파티션/블록 장치 레이아웃:
lsblk -o NAME,VENDOR,SERIAL,FSTYPE,MODEL,SIZE,TYPE,MOUNTPOINT
작업할 파티션과 수신 디스크를 결정합니다.
ls /dev/disk/by-id/
lsblk의 정보를 기반으로 기존 파티션 및 수신 디스크에 /dev/disk 경로 세트를 작성합니다. lsblk의 VENDOR는 실제로 버스 이름입니다.
/dev/disk/by-id/[busname]-[model]_[serial]-partX
예를 들어:
/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
그리고 소스 디스크와 싱크 디스크:
/dev/disk/by-id/usb-hdd1000_1234
/dev/disk/by-id/ata-ssd1000_1234
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
이상적인 파티션 레이아웃 결정
예를 들어
Device size: 256GiB
1 EFI 256MiB
2 Linux 20GiB
3 Windows 80GiB
4 Data 139.75GiB
5 Swap 16GiB
특정 시스템에 어떤 유형의 파티션이 필요하거나 있어야 하는지 알아보려면 다른 질문을 참조하세요. 하지만 특히 SSD로 마이그레이션할 때 모든 파티션이 4K 섹터에 맞춰져 있는지 확인하세요. 이렇게 하려면 각 파티션의 크기를 4KiB로 나눌 수 있도록 조정하세요.
새 파티션 생성
fdisk나 parted 등을 사용할 수 있습니다. 지금은 GPT만 소개하겠습니다. 샘플 파티션 레이아웃 사용:
fdisk /dev/disk/by-id/ata-ssd1000_1234
g 새 GPT 파티션 테이블의 경우
n 새 파티션의 경우
기본 파티션 번호를 보려면 Enter를 누르세요.
기본 시작 섹터를 보려면 ENTER를 누르세요.
시작 섹터(+) 전 256MiB(M)의 경우 +256M입니다.
t 1
1
EFI 시스템의 경우 fs 유형입니다.
유형 코드는 다음과 같습니다.
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
다른 파티션에 대해서도 이 작업을 반복합니다.
또는 다음과 분리:
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
크기를 조정해야 하는 파일 시스템이 있는지 확인
수신 디스크가 더 작거나 더 작은 파티션이 필요한 경우 기존 파일 시스템을 축소해야 합니다.
파일 시스템 활용도:
dh -h
파일 시스템에 이 작업을 수행할 수 있는 충분한 여유 공간이 있는지 확인하십시오. 파일 시스템이 NTFS인 경우 Windows에서 디스크 관리를 사용하는 것이 좋습니다.
예를 들어 Linux 파티션의 크기를 조정하겠습니다./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
정확한 크기가 확실하지 않은 경우 예상되는 새 파티션 크기보다 훨씬 작은 크기로 크기를 조정하십시오. 파일 시스템은 나중에 정확한 크기로 확장될 수 있습니다.
resize2fs /dev/disk/by-id/usb-hdd1000_1234-part2 19G
또는 대략 500MiB 19 GiB = 19456MiB + 500MiB = 19956MiB
resize2fs /dev/disk/by-id/usb-hdd1000_1234-part2 19956M
파일 시스템을 새 파티션으로 복제
할당된 공간만 복사하여 파일 시스템을 복제합니다.
단일 사용자 모드나 Live CD에서 이 작업을 수행할 수 있습니다.
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
재교환
mkswap /dev/disk/by-id/usb-hdd1000_1234-part5
/dev/disk/by-id/usb-hdd1000_1234-part2에서 파일 시스템의 크기를 축소하고 이제 /dev/disk/by-id/ata-ssd1000_1234-part2에 복사하므로 확장해야 할 수도 있습니다. . 치수가 정확하게 복사된 경우에는 이 작업이 필요하지 않습니다.
resize2fs /dev/disk/by-id/ata-ssd1000_1234-part2
새 디스크를 사용하여 시스템을 부팅 가능하게 만듭니다.
이제 파일 시스템과 파티션이 UEFI로 이동되었으므로 부트로더와 Linux는 새 파티션을 이해해야 합니다. 또 다른 접근 방식은 UUID 또는 파티션 순서를 재사용하는 것이지만 이 접근 방식에는 조정 및 수정이 필요할 수 있으므로 필요에 따라 업데이트하겠습니다.
리눅스:
배포판에 따라 스왑 파티션이 자동으로 감지되어 사용되거나 fstab에 포함되어야 할 수도 있습니다.
부팅에 필요한 파티션의 fstab을 업데이트합니다. 여기에는 파티션이 포함됩니다.
/
/boot
/boot/efi
/home
이 예에서는 업데이트할 / 및 /boot/efi만 있습니다.
fstab에서 lsblk의 UUID 출력을 사용합니다.
/etc/fstab 편집
최초의 EFI 시스템
lsblk -no UUID /dev/disk/by-id/ata-ssd1000_1234-part1
출력을 사용하여 /boot/efi를 사용하여 fstab의 줄을 변경합니다. 여기서 UUID=는 lsblk의 UUID 출력으로 변경되어야 합니다.
Linux 파일 시스템에도 동일한 작업을 수행합니다. lsblk -UUID 없음 /dev/disk/by-id/ata-ssd1000_1234-part2
UEFI:
또는 Windows에서 부트 로더를 복구해야 하는 포맷된 EFI 시스템 파티션으로 시작할 수도 있습니다. 그렇지 않으면 이 단계를 건너뜁니다.
mkfs.vfat -F32 /dev/disk/by-id/ata-ssd1000_1234-part1
efibootmgr을 사용하여 UEFI에 항목을 수동으로 추가할 수 있지만 GRUB에 내장된 기능을 사용하겠습니다.
애벌레:
이제 GRUB 부트로더만 소개하겠습니다.
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
UEFI에 표시하려는 항목으로 bootloader-id 매개변수를 설정합니다. 현재 설정과 다르기를 원합니다.
grub-mkconfig는 실행 중인 시스템 스크립트를 사용하여 항목을 생성합니다. 기존 디스크를 사용하는 경우 여기에는 자체 항목이 포함되고 os-prober는 다른 디스크를 포함합니다. 시작 시 기본값이 아니므로 이를 선택해야 합니다. 라이브 CD를 사용하는 경우 os-prober는 두 설치를 모두 감지합니다. 새 시스템에 들어간 후 grub-mkconfig를 다시 실행하여 새 시스템에서 생성된 항목을 가져옵니다.
마지막으로 파일 시스템을 마운트 해제하고 재부팅합니다.
umount /mnt/*
reboot
osprober 항목의 grub에서 새 디스크를 선택한 다음 새 디스크로 부팅한 후 다시 빌드하십시오.
grub-mkconfig -o /boot/grub/grub.cfg