dd를 이용한 디스크 복사중 발생한 오류 질문입니다.

익명 사용자의 이미지

안녕하세요.
리눅스 시스템상에서 임베디드 시스템의 펌웨어 디스크의 복사를 시도했습니다.
디스크를 연결하고(fdisk로 /dev/sda에 마운트된 것 확인), dd로 덤프파일을 떴습니다.
dd if=/dev/sda of=/diskdump.bak bs=1M
덤프 파일이 생성된것을 확인하고, 디스크를 분리했습니다.
복사시킬 디스크를 연결하고(/dev/sda 마운트 확인), dd를 시행했습니다.
dd if=/diskdump.bak of=/dev/sda bs=1M

작업이 완료된 후 복사한 디스크를 임베디드 시스템에 연결해, 정상적으로 부팅되는것을 확인했습니다.
이후 몇개의 디스크에 더 복사했습니다.
그런데 추가로 복사한 디스크는 임베디드 시스템상에서 부팅이 되지 않았습니다.(바이오스에서 Verifying dmi pool data...에서 진행불가)
복사를 시도한 디스크의 용량, 모델명이 모두 같고 파일 시스템 또한 미리 맞춰놨었습니다.(윈도우 노트북에 연결해 맞춰줬습니다. )

나름대로 이유를 고민해보니,
부팅 성공한 첫번째 복사 디스크는 윈도우에서 디스크 관리->단순 볼륨 만들기 마법사로 파일시스템을 맞췄습니다.
부팅 실패한 여러 디스크는 그냥 오른쪽 클릭하고 포맷만 시행했습니다.(파일 시스템은 설정은 동일했습니다)

첫번째 질문: 단순 볼륨 만들기 마법사와 디스크 포맷 기능에 어떤 차이가 있나요?
두번째 질문: dd를 이용해 디스크를 덮어씌울때, 덮어씌우기 전의 파일 시스템의 미묘한 차이(제가 놓치고있는)가 문제가 되나요?

좋은하루 되세요. 감사합니다.

furmuwon의 이미지

단순볼륨 만들기를 해본적이 없어서 잘 모르겠는데
윈도우 디스크 포맷은 정확하게 disk format 보단 첫번째 partition에 파일시스템 재설정으로 보면 됩니다.
또 흔히 아는 SD Memory Card Formatter 프로그램은 는 MBR 과 partition 다시 만들고 파일시스템에 맞게 생성합니다.
근데 이미 dd로 인해서 /dev/sda Disk 에 쓰기 때문에 과거의 일은 상관없습니다.
/dev/sda[n] Partition 에 쓰지 않았다면요..

사용하시는 Disk layout 을 좀 설명해 주셨으면 좀더 추측이 가능 할텐데..
ex>
0 sector부터
Image1
Image2
Image3
EXT4FS

그냥 질문 내용으로 보면 전혀 문제 될 것이 없어 보입니다.

억지로 가정해 본다면 같은 제조사 같은 디스크 라도
전체 sector 크기는 다릅니다.
적게 또는 크게 차이 날 수 있습니다.(SD 내부 NAND BAD Block 때문에)

예를 들면 dump 뜬 disk는 전체 1024 sector 이고, diskdump.bak 에 1024 sector 만큼 저장 했습니다.
copy 할 disk 는 전체 1023 sector 이고 diskdump.bak 를 저장하려고 했지만 기존 disk 의 1 sector 는 저장 못하게 되죠.
(전체 섹터 개수 확인은 여러가지 방법이 있을텐데.... 아마 fdisk 로 한번 확인해 보면 나올 것 같아요)
(구글 검색 ㄱㄱ)

그런데 맨 마지막 sector 라서 EXT4FS mount 상에서 문제가 발생할 수 있지만
부팅이 안되는 현상은....

보통은 raw Image 및 FS 이후의 영역은 부팅이후에 User 영역으로 잡기 때문에 위에 가정을 통째로
모순시킵니다 (그래서 layout 을 설명해 주면 좀 더 추측이 가능 할 것이라 한 것)

그리고 혹시 Target에서 1번이라도 부팅 시킨 dirty 된 disk 를 diskdump.bak 로 생성하신건 아니겠죠?

작성자의 이미지

늦은시간에 감사드립니다.
임베디드 시스템의 원본 디스크를 dump 했었습니다.
Disk layout 이란 어떤것을 말씀하시는 건가요?
디스크는 단순히 하나의 FAT32 파티션을 갖고 있습니다.
DD로 덤프파일을 덮어씌워 부팅성공한 디스크(본문의 첫 부팅성공디스크)와 덮어씌웠는데 부팅 실패한 디스크의 fdisk -i 정보를 기술해 드립니다.

부팅 성공 디스크 정보
Partition 1
Device : /dev/sdc1
Boot : *
Start : 63
End : 15647309
Sectors : 15647247
Cylinders : 974
Size : 7.5G
Id : b
Type : W95 FAT32
Start-C/H/S : 0/1/1
End-C/H/S : 973/254/63
Attrs : 80

부탕 실패 디스크 정보
Partition 1
Device : /dev/sdc1
Boot : *
Start : 63
End : 15647309
Sectors : 15647247
Cylinders : 974
Size : 7.5G
Id : b
Type : W95 FAT32
Start-C/H/S : 0/1/1
End-C/H/S : 973/254/63
Attrs : 80

사실상 모든정보가 같네요.....

furmuwon의 이미지

두 디스크 모두 동일하고 embedded 장치 말고 win, linux 모두 다 mount 가 정상적으로 된다면
결국에는 disk에 아무 문제가 없다는 말로 보입니다.
target 에서 부팅 안되는 원인을 찾으셔야 하시겠습니다.
(애초 질문에 embedded 장치라고 하시는데 바이오스라는 말이 등장하는게 이상하긴 합니다만...)

/dev/sdc 와 /dev/sdc1 의 차이점은
sdc 는 disk 전체를 의미하고, sdc1 은 disk 전체에서 partition 1을 의미합니다.
위에 dump는 sdc1 로 떠 주신것은 질문자님께서 MBR 및 partition 에 대한 이해가
약간 부족하신 상태에서, 제가 애초에 답변한 것도 제대로 이해했다고 어려워 보입니다.
(요약하면 fdisk -l /dev/sdc 로 해서 보여주셨어야 한다는 의미...)

MBR 및 partiton 에 대한 이해는 그렇게 어렵지 않으므로 몇시간 투자 하셔서 한번
살펴보는 것도 괜찮아 보입니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.