[질문]파일시스템의 메타데이터 읽어들이기

you의 이미지

원본적인 질문을 드리겠습니다.

만약 hda1 : root(ext2) , hda5 : swap , hda6 : home(ext2) , hda7
이렇게 파티션을 나눴다고 가정하고
hda7에 mkfs를 해서 ext2 FS를 포맷했다면
이 디스크 파티션상의 맨 첫번째 블록은 부트영역인가요?
아님 첫번째 블록그룹에서의 수퍼블록인가요?(책에서는 당근 부트블록이다만...제 생각엔 root 파티션에만 부트블락이 있으면 충분할 것 같아서...)

만약 4096bytes/block이라면
전자의 경우 한섹터(512bytes)만 부트영역일까요?아님 한블록이?
후자라면 한 블록이 수퍼블록이겠죠...

후자라면
fd=open("/dev/hda7", O_RDONLY);
read(fd, buf, 4096);
한다면
수퍼블록 한블록을 읽어들이는게 맞나요?

그렇다면 ext2이므로
4bytes total number of inodes
4bytes filesystem size in blocks
4bytes number of reserved blocks
4bytes free blocks counter
4bytes free inodes counter
등등...
이런 순서로 각 필드값이 buf에 저장되었겠지요?

그러면
위의 buf에 저장된 데이터를 어떤 파일에 저장한 뒤에
그 파일로부터 4bytes씩(어떤 필드는 2bytes 또는 1byte씩)읽어서
그것을 10진수로 출력해주면 해당 필드값이 되지 않을까요?

그리고 hda6에도 hda7처럼 FS정보가 잡히겠죠?
첫번째 블록이 부트영역일지? 수퍼블락일지?

부탁드립니다.
감사합니다.

you의 이미지

답변좀 해주셔요...ㅠㅠ
부탁드립니다.

Necromancer의 이미지

각 디스크 대응 장치파일에 open()으로 직접 접근해서

read(), write(), seek() 하고 close()로 끝내면 됩니다.

fopen(), fread() 같은 라이브러리함수 써도 되고요.

그리고 대부분 디스크에서는 첫번째 섹터의 경우 부트블록이 오는 게 관례화

되어 있습니다(부트디스크 아닐때는 쓰레기 값이나 딴걸로 채워져 있죠)

슈퍼블록 찾는 방법은 파일시스템 포맷과 관련된 문서를 찾아보셔야

할겁니다.

Written By the Black Knight of Destruction

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.