소개
PC 파티션이있는 드라이브 (대부분의 USB 스틱에서 찾을 수있는 드라이브)의 경우 부트 로더는 드라이브의 시작 부분 (드라이브의 부트 섹터에서 1 단계 부트 로더)과 작은 부분으로 구성됩니다. 다른 부분 (파일의 2 단계 부트 로더). 1 단계 데이터에는 2 단계의 실제 위치가 포함됩니다. 전체 장치를 복사 한 경우 (시도한 항목 dd
) 1 단계 부분은 동일한 실제 위치에 있고 스틱은 작동하지만 새 스틱은 최소한 다음과 같아야합니다. 원본보다 큽니다. 파티션을 다시 만들고 파일을 복사하면 파일이 아니기 때문에 1 단계가 누락 된 것입니다.
2 단계가 첫 번째 (FAT32) 파티션에 있다고 생각합니다 (그러나 확인하지는 않았습니다). 그렇다면 해당 파티션 도매를 복사하고 부트 섹터도 복사 한 다음 두 번째 파티션이 남은 공간을 정확히 차지하도록 파티션 테이블을 편집하고 두 번째 파티션의 파일을 복사하십시오. 부팅 섹터와 첫 번째 파티션의 원시 이미지를 하드 디스크의 파일에 보관할 수도 있지만 USB 스틱에서도 복제 할 수 있습니다.
다른 크기의 복제본 만들기
아래에서는 원래 스틱이 /dev/sdb
포함 된 장치와 클론이 포함 된 장치를 호출합니다 /dev/sdc
. 필요에 따라 대체 이름. 필요한 경우 마운트 지점을 작성하십시오. FAT32 파티션 (디스크 시작 부분)의 번호는 1이고 ext3 파티션의 번호는 2라고 가정합니다. 필요한 경우 다른 숫자로 대체하십시오.
스틱에서 복제하는 경우 첫 번째 부분 :
head -c 512 </dev/sdb >/dev/sdc
partprobe /dev/sdc
cat </dev/sdb1 >/dev/sdc1
먼저 이미지 파일에서 복제하는 경우 :
cat boot_sector.img >/dev/sdc
partprobe /dev/sdc
cat first_partition.img >/dev/sdc1
통화가하기 partprobe
때문에 필요가 커널 다시로드 디스크 (이 부트 섹터에, 그리고 부트 섹터 수정 위의 두 시나리오의 첫 번째 명령)에서 파티션 테이블. 생략하면 오류가 발생하거나 커널이 자동으로 스틱에 쓰레기를 씁니다.
이미지 파일을 만들려면
head -c 512 </dev/sdb >boot_sector.img
cat /dev/sdb1 >first_partition.img
부팅 섹터와 첫 번째 파티션을 얻은 후에는 파티션 테이블을 다시 편집하여 두 번째 파티션의 크기를 조정해야합니다. 올바른 입력을에 공급하여 자동으로 수행 할 수 있습니다 fdisk
. 경고, 이것은 매우 오류가 발생하기 쉽기 때문에 테스트하지 않았습니다. 이 부분에 익숙하지 않다면 손으로 해보십시오.
sed -e 's/ *#.*//' <<EOF | tr -s ' ' '\n' | tr -d _ | fdisk /dev/sdc
d 2 # delete partition 2
n p 2 # new primary partition 2...
_ _ # ... using all available space
w q # write and quit
EOF
마지막으로 파티션 테이블을 다시로드하고 ext3 파일 시스템을 생성 한 다음 파일을 복사하십시오.
partprobe /dev/sdc
mke2fs -j /dev/sdc2
mount /dev/sdc2 /media/sdc2
cp -a /media/sdb2/ /media/sdc2/
umount /media/sdc2
더 큰 클론을 만드는 단순화 된 방법
원하는 경우 전체 스틱의 이미지를 저장할 수 있습니다. 최소한 큰 스틱에서 해당 이미지를 직접 사용할 수 있습니다.를 사용하여 이미지를 새 스틱에 복사 cat <whole.img >/dev/sdc
한 다음 실행하여 partprobe /dev/sdc
(또는 스틱을 뽑았다가 다시 넣어) 파티션 테이블을 다시 읽으십시오.
그런 다음 원하는 경우 복제본을 확대 할 수 있습니다. 이 순서대로 :
- 파티션을 확대하십시오. 불행히도, 나는 이것을 간단한 방법으로하는 법을 모른다. 명령 (not , 파일 시스템의 크기를 조정)으로
parted
이를 수행 할 수 있지만 반올림 오류를 피 하려면 올바른 인수를 찾아야합니다 (섹터로 전환 ( )).move
resize
unit s
- 파일 시스템을 확대하십시오. 그 부분은 쉽습니다.
resize2fs /dev/sdc2
파일 시스템이 전체 파티션 크기를 사용하도록 실행 하십시오.
필요 이상으로 큰 스틱에서 시작하는 경우 위의 단계를 역순으로 수행하여 축소 할 수 있습니다 (먼저로 파일 시스템 resize2fs
을 축소 한 다음로 파티션을 축소 parted
).
또는 먼저 스틱을 이미지 파일로 복사 한 다음 해당 이미지 파일로 작업 할 수 있습니다. 파티션에 액세스하려면 루프 장치를 사용하십시오 . 특히 파일의 일부를 디스크에 연결하십시오 . 다음은 이미지를 축소하려는 경우 단계에 대한 스케치입니다 (경고, 테스트되지 않음, 신중하게 진행하고 수학을 다시 확인).
fdisk -lu whole.img # note starting sector of partition 2: $S
losetup -fs -o $(($S * 512)) whole.img
# Let $D be the desired size of partition 2, in kB
resize2fs /dev/loop0 $ # replace /dev/loop0 by whatever losetup prints
losetup -d /dev/loop0
parted whole.img
# Use parted to resize the second partition
dd if=/dev/null of=/file/to/truncate seek=1 bs=$(($S/2+$D+1))k