본문 바로가기
RaspberryPi

[Raspberry Pi] 작업한 이미지 복제하기

by TYB 2024. 2. 2.
반응형

윈도우에 연결된 USB를 우분투에서 연결하고 싶기 떄문에.

df를 치면 현재 device를 쭉 보여준다.

sdb가 usb 메모리 장치임. sd a,b,c,d,e 이런식으로 쭉 나옴.

rootfs bootfs가 있으면 sd카드임.

만약에 라즈베리파이에서 설정 파일을 뭔가 잘못해서 부팅이 안된다 할때 이런 방식으로 환경 파일에 접근해서 수정이 가능함.

 

$ sudo apt install gparted pv dcfldd

 

장치를 언마운트

 

파티션 번호를 뺀 장치 전체를 백업받고 싶기 때문에 명령어를 칠때 sdb 뒤에 숫자를 안친다.

 

ubuntu@ubuntu8:~$ sudo dd if=/dev/sdb of=sdimage_wcm.img status=progress

dd는 블록 단위로 파일을 복사하거나 파일 변환을 할 수 있는 명령어 input file은 dev의 sdb 파티션 구분없이 전부 & output file은 sdbimage.img 이고 status는 progress로 해주고 실행 

 

용량에 따라 시간은 꽤 걸림. 수십분에서 한시간 까지도 걸림.

 

ubuntu@ubuntu8:~$ sudo dd if=/dev/sdb of=sdimage.img status=progress
405127680 bytes (405 MB, 386 MiB) copied, 28 s, 14.5 MB/s
dd: error reading '/dev/sdb': Input/output error
802272+0 records in
802272+0 records out
410763264 bytes (411 MB, 392 MiB) copied, 54.8896 s, 7.5 MB/s

이런거 뜨면 다시해야됨. 용량보다 작게 되도 다시해야됨.ㅠㅠ

 

계속 안되서 결국 다른 컴퓨터의 가상환경으로 다시 진행하였음.

 

파일 시스템 문제인걸로..

 

 

 

sync 명령으로 sd카드를 안전하게 제거하고

메모리 buffer에 있는 내용을 harddisk에 동기화 시키는 명령어임.

sudo sync

 

 

image 파일이 root 권한으로 생성되었으므로, 파일 소유자로 권한을 변경해준다.

ubuntu@ubuntu8:~$ ls -l
total 31167060
-rw-r--r-- 1 ubuntu ubuntu 31914983424  2월  2 15:02 sdimage_wcm.img

ubuntu@ubuntu8:~$ sudo chown ubuntu:ubuntu sdimage_wcm.img
ubuntu@ubuntu8:~$ ls -l
total 31167060

-rw-r--r-- 1 ubuntu ubuntu 31914983424  2월  2 15:02 sdimage_wcm.img

 

ubuntu@ubuntu8:~$ sudo fdisk -l sdimage_wcm.img
Disk sdimage_wcm.img: 29.74 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x921b283c

Device           Boot   Start      End  Sectors  Size Id Type
sdimage_wcm.img1         8192  1056767  1048576  512M  c W95 FAT32 (LBA)
sdimage_wcm.img2      1056768 62333951 61277184 29.2G 83 Linux

 

 

 

ubuntu@ubuntu8:~$ df
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             4023340        0   4023340   0% /dev
tmpfs             812812     2968    809844   1% /run
/dev/sda5      153188848 50490196  94844316  35% /
tmpfs            4064052        0   4064052   0% /dev/shm
tmpfs               5120        4      5116   1% /run/lock
tmpfs            4064052        0   4064052   0% /sys/fs/cgroup
/dev/loop0         64896    64896         0 100% /snap/core20/1828
/dev/loop2        354688   354688         0 100% /snap/gnome-3-38-2004/119
/dev/loop3        508928   508928         0 100% /snap/gnome-42-2204/141
/dev/loop1           128      128         0 100% /snap/bare/5
/dev/loop4        358144   358144         0 100% /snap/gnome-3-38-2004/143
/dev/loop5         75904    75904         0 100% /snap/core22/1033
/dev/loop7         51072    51072         0 100% /snap/snapd/18357
/dev/loop6         47104    47104         0 100% /snap/snap-store/638
/dev/loop8         93952    93952         0 100% /snap/gtk-common-themes/1535
/dev/loop9         12672    12672         0 100% /snap/snap-store/959
/dev/sda1         523248        4    523244   1% /boot/efi
tmpfs             812808       36    812772   1% /run/user/1000
/dev/loop10        41472    41472         0 100% /snap/snapd/20671
/dev/loop11        65536    65536         0 100% /snap/core20/2105

여기서 안쓰고 있는 번호를 쓰면 됨. 12번 쓰겠음.

 

ubuntu@ubuntu8:~$ sudo losetup /dev/loop12 sdimage_wcm.img

ubuntu@ubuntu8:~$ sudo partprobe /dev/loop12

 

 

그래픽 사용하는 명령어라 putty에서는 안됨. 우분투 가상환경으로 가서 터미널 열고

ubuntu@ubuntu8:~$ sudo gparted /dev/loop12

 

 

p2 부분 우클릭하고 resize/move

노랑부분만 사용중인 부분이니 거기까지 쭉 땡겨준다.

 

 

 

 

32 -> 6GB로 줄어든거임.

이제 Edit -> Apply All Pperations를 눌러 적용한다. Save details를 누르면 세부 사항이 저장된다.

 

 

 

ubuntu@ubuntu8:~$ sudo losetup -d /dev/loop12
ubuntu@ubuntu8:~$ fdisk -l sdimage_wcm.img
Disk sdimage_wcm.img: 29.74 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x921b283c

Device           Boot   Start      End  Sectors  Size Id Type
sdimage_wcm.img1         8192  1056767  1048576  512M  c W95 FAT32 (LBA)
sdimage_wcm.img2      1056768 13836287 12779520  6.1G 83 Linux

7GB 줄어든 걸 확인 할 수 있음. 하지만 파일 사이즈는 아직 32GB를 먹고 있음.

 

그래서 파일 사이즈까지 7GB로 줄여줘야 되는데, 잘못하면 파일 다 날라가니까 조심해야함!!!!

제가 그랬어요...아찔하네요..

 

(sdimage_wcm.img2의 End  주소 +1 )*512 까지 해줘야 됨니다.. sdimage_wcm.img1은 그 앞에 이미 있는거기 때문에 img2의 끝주소를 입력해주면 자동으로 포함됩니다. 

 

 

저처럼 start로 하면 처음부터 다시해야됨미다...

ubuntu@ubuntu8:~$ truncate --size=$[(1056768+1)*512] sdimage_wcm.img
ubuntu@ubuntu8:~$ ls -l
total 528472
drwxrwxr-x 3 ubuntu ubuntu      4096  2월  2 15:58 linuxC
-rwxrwxr-x 1 ubuntu ubuntu     16696  1월 31 15:27 main
-rw-rw-r-- 1 ubuntu ubuntu        18  2월  2 11:46 main.c
-rwxrwxr-x 1 ubuntu ubuntu     16696  1월 31 15:34 pi@10.10.15.158
-rw-r--r-- 1 ubuntu ubuntu 541065728  2월  2 15:59 sdimage_wcm.img
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 공개
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 다운로드
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 문서
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 바탕화면
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 비디오
drwxr-xr-x 2 ubuntu ubuntu      4096  2월  2 15:53 사진
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 음악
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 템플릿

 

 

 

자 다시해줍니다.. 이번엔 끝 주소 확인하고 다시 갑니다..!

ubuntu@ubuntu8:~$ truncate --size=$[(13836287+1)*512] sdimage_wcm.img
ubuntu@ubuntu8:~$ ls -l
total 528472
drwxrwxr-x 3 ubuntu ubuntu      4096  2월  2 15:58 linuxC
-rwxrwxr-x 1 ubuntu ubuntu     16696  1월 31 15:27 main
-rw-rw-r-- 1 ubuntu ubuntu        18  2월  2 11:46 main.c
-rwxrwxr-x 1 ubuntu ubuntu     16696  1월 31 15:34 pi@10.10.15.158
-rw-r--r-- 1 ubuntu ubuntu 541065728  2월  2 15:59 sdimage_wcm.img
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 공개
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 다운로드
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 문서
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 바탕화면
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 비디오
drwxr-xr-x 2 ubuntu ubuntu      4096  2월  2 15:53 사진
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 음악
drwxr-xr-x 2 ubuntu ubuntu      4096  1월 30 16:41 템플릿

 

 

복사된 이미지는 라즈베리파이에서 줄어든 용량 밖에 사용을 못함.

sudo raspi-config

 

여기서 Advanced Options -> A1 Expand Filesystem 을 선택하여 전체 sd카드 용량을 사용하도록 전택한다.

설정을 적용하여 Finish 후 재부팅하면 된다.

재부팅 후 df -h 를 실행하면  32G 용량으로 변경된 것을 확인할 수 있다.

 

 

https://kyubot.tistory.com/132

 

라즈베리파이 SD card 이미지 복제하고 재설치하기

raspberry pi 나 tegra board 같은 임베디드 플랫폼에서 개발하다 보면 대부분의 리눅스 개발 환경이 그렇듯 잘 되다가도 가끔씩 시스템이 꼬여서 화면이 안나오거나, 계속해서 빌드 에러가 발생한다

kyubot.tistory.com

 

 

반응형