부팅 가능한 USB 스틱을 다른 크기의 스틱에 복제


11

하드웨어 : 2 개의 8GB USB 플래시 드라이브
DISTRO : Mint 9 Xfce 영구 라이브 CD

하나의 USB 플래시 드라이브에는 두 개의 파티션이 있습니다 :
1) FAT32 700MB Mint 9 파티션
2) ext3 7.3GB casper-rw파티션

목표 :
처음부터 다시 설치하고 구성하는 과정을 거치고 싶지 않기 때문에 USB 플래시 드라이브를 복제하고 싶습니다.

경험 :
1) dd플래시 드라이브 중 하나의 크기가 1MB가 다르고 때로는 사본이 손상되기 때문에이 작업에서 작동하지 않는 것으로 나타났습니다 .

2) 나는 gparted첫 번째 드라이브와 같은 두 번째 드라이브 를 사용 하고 사전 포맷 한 다음 rsync어떤 이유로 일부 파일이 복사되지 않고 드라이브를 부팅 할 수 없기 때문에 각 파티션을 개별적으로 작동하지 않는다는 것을 알았습니다.

작업 스틱을 유지하고 사본을 만들어 친구를 위해 스틱을 구성하고 싶습니다. 이 방법으로 다른 스틱을 올리면 항상베이스 스틱을 기다리게됩니다.


어떤 부트 로더를 사용하십니까 (syslinux?). 게시물에서 해당 rant를 제거하는 것이 좋습니다. 질문에 아무런 가치가 없습니다.
— Mat

나는 민트 라이브 USB 설치 프로그램을 사용했기 때문에 모두 자동이었습니다. 복제 프로세스가 부트 로더 작업을 피하고 현재 부트 로더 conf를 복사하기를 바라고 있습니다.
— Joshua Robison

답변:


5

소개

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(또는 스틱을 뽑았다가 다시 넣어) 파티션 테이블을 다시 읽으십시오.

그런 다음 원하는 경우 복제본을 확대 할 수 있습니다. 이 순서대로 :

  1. 파티션을 확대하십시오. 불행히도, 나는 이것을 간단한 방법으로하는 법을 모른다. 명령 (not , 파일 시스템의 크기를 조정)으로 parted이를 수행 할 수 있지만 반올림 오류를 피 하려면 올바른 인수를 찾아야합니다 (섹터로 전환 ( )).moveresizeunit s
  2. 파일 시스템을 확대하십시오. 그 부분은 쉽습니다. 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

흠. head를 사용하여 첫 번째 300MB 정도의 두 번째 파티션을 img 파일로 복사 할 수 없습니까? 파일 끝에 빈 공간 / 빈 블록을 모두 잘라 내지 않습니까?
— Joshua Robison

1
@Joshua : 아니요. 모든 파일 데이터가 처음 300MB에있을 이유가 없기 때문에 파일 시스템의 일부라도 그렇게 할 수는 없습니다. 올바른 크기의 유효한 파일 시스템을 만들어야합니다. 또한 올바른 크기의 파티션이 있어야합니다. 파티션의 크기는 부팅 섹터에 저장됩니다. 최소 크기의 이미지에서 시작하여 원하는 경우 이미지를 확대하려는 경우 내 대답에 해당 방법을 추가했습니다.
— Gilles 'SO- 악의

흠. 전에 파일을 복사하려고 시도했지만 어떤 이유로 든 모든 것이 복사되지 않았습니다. 나는 sudo로 rsync도 시도했다. 그리고 나는 su root를 시도하고 그것을 너무 생각했다. 어쨌든 드라이브가 마운트되지 않았다고 확신합니다. 드라이브를 gparted로 축소 한 다음 img 파일을 만들어 더 작은 디스크로 복원하기로 결정했습니다. gparted의 사전 축소는 내가 찾을 수있는 유일한 간단한 솔루션이었습니다. 그래도 도움을 주셔서 감사합니다.
— Joshua Robison

당신의 대답은 아마도 정확하고 아마도 내가 요구하는 것을 할 것입니다. 나에게는 너무 복잡하다. 그래서 gparted pre shrink 방법을 사용했습니다.
— Joshua Robison

이 줄에 오타가 head -c 512 </dev/sdb >/bev/sdc있습니까?
— 안토니오

3

~ $ : sudo apt-get 설치 gddrescue ddrescue

~ $ : ddrescue / dev / sda / dev / sdb -v

;

구문 : utility / source / drive / destination / drive --verbose

설명 : 진행률 및 오류 검사를 표시하므로 허용 가능한지 또는 어딘가에 있는지 알 수 있습니다. 원하는 크기 블록 에 b =를 추가 할 수도 있습니다 . "gddrescue"는 "ddrescue"의 GUI 기반 버전이지만 문제없이 작동하므로 위에서 설명한 ddrescue 만 사용합니다.


2
올바른 형식입니다 ddrescue -v /dev/sda /dev/sdb(옵션은 장치 / 파일 이름보다 먼저옵니다). 이 도구를 지적 해 주셔서 감사합니다! 사용하는 것보다 훨씬 쉽습니다 dd!
— xmnboy

0

최근에 16GB에서 64GB 3.0 USB로 Kali 라이브 암호화 지속성을 복제했습니다. 내 호스트 OS는 Windows 10 pro입니다. 나는 리눅스 배포판을 사용하여 복제하려고 시도하지 않았다. 나는 위의 답변이 당신이 필요로하는 것이라고 확신하지만 모든 Windows 사용자에게; AOMEI 디스크 파티션 도우미를 사용했습니다. 사용이 매우 간단하여 SSD를 Ubuntu에 맞게 파티션하는 데 사용되었지만 난처합니다.

복제하려는 USB가 이미 라이브 부팅 용으로 포맷되어 있는지 확인해야했습니다. USB를 모두 연결하고 8GB 드라이브를 마우스 오른쪽 버튼으로 클릭하십시오. 를 클릭 한 copy다음 64GB 드라이브를 선택하면 "이 드라이브가 올바른 드라이브인지 확인하고 모든 것이 지워질 것"과 같은 많은 재즈를 묻습니다. 그냥 읽어보고 모든 것이 올바른지 확인하십시오. 실제로 많은 일을 할 필요가 없습니다.

프로세스가 완료 될 때까지 기다리면 모든 준비가 완료됩니다. USB를 테스트 한 결과 모든 것이 작동했습니다!

나는 이것이 USB에서 USB로 라이브 배포판을 복제하는 것이 가장 쉬운 방법이라는 것을 알았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.