'파일시스템'에 해당되는 글 2건

  1. 2008.06.27 리눅스와 윈도우의 fat 파일쓰기 차이??? 8
  2. 2007.07.27 FAT12과 FAT16의 부트레코드의 구성이 같은모양인가 보다 2

리눅스와 윈도우의 fat 파일쓰기 차이???

<이포스팅은 틀린거 같습니다 일단 무시해주세요>

아주 인기없는거만 골라서 포스팅 ㅋㅋ

근데

왜 접때 만든 fat이미지 만드는거가지고 놀고 있었는데요..

이상하게 윈도에서 플로피에 쓴거랑

리눅스에서 (접때포스팅때 만든 이미지 생성기로) 플로피에 쓴거랑

똑같이 써지는게 아니더군요??

다른건 다 같은데

일단 앞에 썻던것처럼 마운트(또는 삽입) 후 아무 파일인 생성한후

hexedit로 각각 연다음에 확인해보니까

0x200 부분과 0x1400 부분이 다르더군여

리누기에서는 F0 FF FF 00 F0 FF

윈도우에서는 F0 FF FF FF 0F 00

그리고 첫번쨰파일 read하는 위치가 (디스크내)

리누기에서는 0x4400

윈도우에서는 0x4200

아마 윗부분(0x200,0x1400) 이 관장하는것이 첫번째(?)파일의

처음위치와 관련된듯한데.

(저번에 C소스에서는 "이거 뭥미" 라고 적어놨던 부분..좀 이해가 가는군요)

그런데 어째 리눅이랑 윈도우랑 역바이트일까요..

제가 전에 만든거가 틀렸는것도 아닌것 같은것이

파일 쓰는건 운영체제가 알아서 하는거라.. ;음..

일부러 이렇게 만들어놨나 -_- 그냥 윈도우기 시러서?

아닌가?? 내가 어디서 잘못한건가 ㅜ

이건 고정되지 않고, 유동적인값???????????

덧> 사실 제가 "윈도우에서 했다" 라는것 처럼 적어놨는데..

제가 직접해본건 아니고..

책에서 이걸 "윈도우에서 만들기 때문에" 윈도우라고 적은거 뿐입니다
---------------------------------------------------------------
아.. 나는 정말 책의 설명을 보는건지 책을 분석하는건지 -_-...

중간에 이해 안 가는게 있으면 뒤로 진도를 못빼는 스타일 ㅜ

역시 이해력이 딸리면 이렇게 해야 ㅜㅜ

'Programming > Kernel' 카테고리의 다른 글

확실히 다르잖아!!  (4) 2008.04.15
ctags 설정  (4) 2008.03.11
본체 전원키로 시스템 off 시키기  (4) 2007.04.22
운영체제 없이 화면에 A를 찍어보아요...  (6) 2007.04.06
KernelProgramming-printk  (5) 2006.07.24

FAT12과 FAT16의 부트레코드의 구성이 같은모양인가 보다

음.......; 전에 했던거지만
나중에 다시 찾아볼일이 있거나
필요한 사람이 있을까봐 다음을 기록한다

ORG 0x7c00

;Fat12 FileSystem BootRecord
;문자열(String)일 경우에 꼭 최고 바이트를 맞춰야하며,
;적기싫다면 공백으로(space) 채워넣어야만 한다
;그리고 이위에는 (BR을 유지하기 위해) 어떤 코드라도 들어가면 안된다
;(Vmware에서는 상관않는 모양이지만,Qemu에서, 이걸제대로 하지안으면 작동이 안된다.
;필히 밎의 jmp로 따로 만든 레이블로 점프하게 하자

 jmp register_init     ;Jump Boot Code
 db 0x90                ;Jump Boot Code Padding
 db "LolyComp"      ;OEM Name (String,MAX 8Byte)
 dw 512                 ;Bytes Per Sector
 db 1                     ;Sector Per Cluster
 dw 1                    ;Reserved Sector Count
 db 2                     ;Number of FATs
 dw 224                 ;Boot Entry Count
 dw 2880                ;Total Sector 12(16)
 db 0xf0                 ;Media 여기선 Floppy Disk,보통은 HDD면0 ,자세한건 링크를 참조..
 dw 9                    ;Fat Size 12(16)
 dw 18                   ;Sector Per Track
 dw 2                    ;Number of Heads
 dd 0                     ;Hidden Sector
 dd 2280                ;Total Sector
 db 0                     ;Driver Number
 db 0                     ;Reserved1
 db 0x29                ;Boot Signature
 dd 0xffffffff           ;Volume ID
 db "My_os_VOL "  ;Volume Lable (String 11 Byte)
 db "FAT12  "         ;File System Type (String 8 Byte)
 RESB 18               ;Padding (왜 채워주는건진 잘 모르겠다)

register_init:
;...여기서부터 레지스터 초기화 들어갑니다~


 자세한 설명은 다음 링크를 참조하면 답이 나옵니다
 FAT12 bootrecord랑 FAT16 bootrecord의 구조가 같으므로 FAT16을 참고...
 표(?)그림(?)을 보면 단박에 이해가 갈거라고 확신합니다.

http://network.hanb.co.kr/view.php?bi_id=1259


ORG 0x7c00의 정체..
왜 하마터면 0x7c00 인가? 하고 KLDP에 질문한적이 있는데.
그에 따라오는 답변은 아주 간단명료 했다.. 처음에 IBM아저씨들이 그렇게 정했으니까..
랍니다.. 꼭 이값을 쓰는 특별한 목적은 없는건지,아니면 이값자체가 그리 큰 의미가
없나봅니다. 뭐 책에도 나와있긴했지만(책 사기전이였거든요)

파일시스템.
FAT파일 시스템만 대충 봐둔게 좀 도움이 되네요..
문제는 뒤에는 몰라..겠지만... 이거 과연 스터디나 할수 있을지..

prev 1 next