当前位置:文档之家› Linux1 硬盘分区和文件系统

Linux1 硬盘分区和文件系统

Linux1  硬盘分区和文件系统
Linux1  硬盘分区和文件系统

Linux1 硬盘分区和文件系统

在安装Linux操作系统之前,首先应该了解一些关于磁盘分区和文件系统的知识,从而使用户能够尽可能简便、轻松的安装Red Hat Enterprise Linux 5.4操作系统。1.硬盘分区

磁盘是最为重要的硬件设备之一,任何操作系统都应该先按照到磁盘上,然后才能使用,现在大多数的操作系统都要求安装在硬盘上。

硬盘包括IDE和SCSI两种接口。其中,SCSI接口的硬盘读/写速度快但价格昂贵;IDE接口的硬盘读/写速度慢但价格便宜。用户应根据实际需求合理选择,通常,对读/写速度要求较高的服务器应该选择使用SCSI接口的硬盘。

●IDE接口

在主板上包括主次2个IDE接口,其中,主IDE接口一般用“IDE1”来表示,次IDE接口用“IDE2”表示。

Linux对连接到IDE接口的硬盘使用/dev/hdx的方式命名,x的值对应于硬盘安装位置,其值可以是a、b、c、d,如表1-3所示。

表1-3 IDE接口的硬盘命名方式

对于连接到SCSI接口的设备通常使用ID号进行区别,SCSI设备ID号范围是0~15,SCSI主控制器通常占用id号7,所以SCSI最多可以连接15个设备。

Linux对连接到SCSI接口卡的硬盘使用/dev/sdx的方式命名,x的值为a、b等,即ID号为0的SCSI硬盘名为/dev/sda,ID号为1的SCSI硬盘名为/dev/sdb,以此类推。

硬盘使用前要进行分区。它可以分为主分区(Primary Partition)、扩展分区(Extension Partition)和逻辑分区(Logical Partition)3种不同类型。一块硬盘最多可以有4个主分区,其中一个主分区的位置可以用一个扩展分区替换,且一块硬盘只能有一个扩展分区,在这个扩展分区中可以划分多个逻辑分区。

在Linux操作系统中的用户使用设备名来访问设备,硬盘也不例外,如下所示为磁盘设备名称:

系统的第一块IDE接口的硬盘称为/dev/hda。

系统的第二块IDE接口的硬盘称为/dev/hdb。

系统的第一块SCSI接口的硬盘称为/dev/sda。

磁盘和文件系统管理(二)实验报告

制作LVM卷的步骤: 裸设备---分区---PV---VG---LV---格式化---挂载使用 [root@localhost ~]# pvcreate /dev/sdb1 /dev/sdc1 建立pv物理卷 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdc1" successfully created [root@localhost ~]# vgcreate hehe /dev/sdb1 /dev/sdc1 建立vg卷组 Volume group "hehe" successfully created [root@localhost ~]# lvcreate -L 30G -n xixi hehe 建立lv逻辑卷 Logical volume "xixi" created [root@localhost ~]# mkfs.ext3 /dev/hehe/xixi 格式化为ext3的文件系统mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) [root@localhost ~]# mkdir /lvm 创建lvm文件夹 [root@localhost ~]# mount /dev/hehe/xixi /lvm 挂载lvm逻辑卷到lvm文件夹下使用[root@localhost ~]# cd /lvm 切换 [root@localhost lvm]# ls 查看 lost+found [root@localhost lvm]# df -hT 查看磁盘使用情况 文件系统类型容量已用可用已用% 挂载点 /dev/mapper/VolGroup00-LogVol00 ext3 38G 3.1G 33G 9% / /dev/sda1 ext3 99M 11M 83M 12% /boot tmpfs tmpfs 177M 0 177M 0% /dev/shm /dev/mapper/hehe-xixi ext3 30G 173M 28G 1% /lvm [root@localhost lvm]# lvextend -L +3G /dev/hehe/xixi 扩展lvm卷的空间Extending logical volume xixi to 33.00 GB Logical volume xixi successfully resized [root@localhost lvm]# resize2fs /dev/hehe/xixi 重新识别文件系统的大小

Linux 管理磁盘和文件系统

管理磁盘和文件存储 一、实验目的 实验案例一:迁移/home分区并设置磁盘配额 实验案例二:创建并使用lvm逻辑卷 二、实验环境 迁移/home分区并设置磁盘配额 公司原来安装的RHEL5服务器采用了自动分区的方案,随着使用服务器的系统用户数量不断增多,根分区经常面临磁盘空间耗尽的情况,偶尔有几次还导致系统无法启动。为了解决这些问题,现需要为服务器新增加一块SCSI硬盘,并将用户“/home”中的数据迁移到该硬盘中,不能影响原有系统用户帐号的使用,并需要对指定用户启用磁盘配额。 创建并使用lvm逻辑卷 公司准备在internet中搭建邮件服务器(RHEL5系统平台),面向全国各地的员工及部分VIP客户提供电子邮箱空间。由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到“/mailbox”目录下)专门用于存放邮件数据。 三、需求描述 迁移/home分区并设置磁盘配额 在虚拟中添加一块SCSI磁盘 在新硬盘中建立一个20G的分区,用于存放所有普通用户的宿主目录 新建的分区仍然挂载到“/home”目录下,需要导入系统中原有用户的数据 配置服务器在开机后自动挂载该分区,并支持用户、组磁盘配额 在“/home”文件系统中设置磁盘配额,限制用户jerry最多只能使用500M 磁盘空间,accp组的用户合计最多只能使用4G磁盘空间 创建并使用lvm逻辑卷 在虚拟机环境中,新添加两块SCSI硬盘设备,完成硬盘检测及分区,创建逻辑卷并基本于该逻辑卷建立EXT3文件系统,挂载到“/mailbox”目录下 四、实验步骤 迁移/home分区并设置磁盘 Step1关机后添加新硬盘,重新开机进入RHEL5系统 Step2分区格式化 (1)使用fdisk命令对硬盘进行分区,建立一个20G的主分区(“/dev/sdb1”)

磁盘管理和文件系统管理

实验三磁盘管理和文件系统管理 一、 掌握Windows Server 2003系统中的磁盘管理和文件系统管理,包括基本磁盘中分区的创建,动态磁盘中各种动态卷的创建及DFS的配置。 二、实验环境: Pentium 550Hz以上的CPU。 建议至少256MB的内存 建议硬盘至少2GB,并有1GB空闲空间。 三、实验内容: 磁盘的管理。 文件系统的管理。 四、实验步骤: 1.在虚拟机中再添加两块磁盘,如图1-1。 图1-1 2.使用磁盘管理控制台,在基本磁盘中新建主磁盘分区、扩展磁盘分区和逻辑驱动器,并对已经创建好的分区做格式化、更改磁盘驱动器号及路径等几个操作,如图1-2。 创建主磁盘分区的步骤如下: (1)启动【磁盘管理】。 (2)选取一块未指派的磁盘空间,如下图所示,这里我们选择“磁盘1”。 (3)用鼠标右击该空间,在弹出的菜单中选择【创建磁盘分区】,在出现“欢迎使用创建磁盘分区向导”对话框时,单击【下一步】按钮。

图1-2 (4)【选择分区类型】对话框中,选择【主磁盘分区】,单击【下一步】按钮。 (5)在【指定分区大小】对话框中,输入该主磁盘分区的容量,此例中输入“500MB”。 完成后单击【下一步】按钮。 (6)下图所示的对话框中,完成其中的单选框选择,单击【下一步】按钮,出现格式化分区对话框。设置驱动器号为“H”。 (7)在【格式化分区】对话框中,可以选择是否格式化该分区;格式化该分区的方式 设置,如设置①使用的文件系统为NTFS;②分配单位大小:为默认值;③卷标为默认值; ④执行快速格式化⑤不启动文件及文件夹压缩功能。 (8)完成以上内容设置,系统进入【完成】对话框,并列出用户所设置的所有参数。 单击【完成】按钮,开始格式化该分区。

SD卡文件系统

SD卡的体系结构将在这里叙述。它定义了数据区域的逻辑结构。对于如分割数据区域的区别,第一分区有主启动记录和分区表。SD卡文件系统使用FAT文件系统(ISO/IEC 9293)并支持FAT12和FAT16文件系统格式。 39 40 主启动记录和分区表 0到445 主启动记录 此间内容不被叙述。 446到461 分区表(第一部分) 这个部分叙述了第一分区在体系中的信息。这个分区意味着使用者可以没有相互的证明使用普通区域。 462到477 分区表(第二部分) 如果体系只有一个分区,此间内容为0。 478到493 分区表(第三部分) 如果体系只有一个分区,此间内容为0。 494到509 分区表(第四部分)

如果体系只有一个分区,此间内容为0。 510到511 信号字(Signature W ord) 此处记录了0x55(BP 510) 和 0xaa。 如果以SD卡作为启动(盘),记录0x80,否则记录0x00。 BP1 启始磁头 此处叙述分区的起始磁头。 BP2和3 启始柱面和扇区 此处将叙述分区的启始柱面和扇区。6个位 (在BP2中0到5位) ,将作为启始扇区。10个位(在 BP 2 中的6和7位,在BP3中的0到7的)将作为启始柱面。 BP4 系统ID号 此处叙述文件系统类型。如果分区大小是少于32680个扇区,它将被记录0x01。如果少于65536个扇区,它将被记录0x04。否则,它将被记录0x06。 BP5 终止磁头 此处记录终止磁头。 BP6和7 终止柱面和扇区 此处记录终止柱面和扇区。6个位(在BP6中的0到位5位)作为结束扇区。10个位(在BP6中的位6和7位,在BP7中的0到7位)作为结束柱面。 BP8到11 Relative Sector 此处叙述这此分区的起始扇区之前存在的数目。 BP12到15总扇区 此处记录总扇区数量。 申请分配表 (FAT) FAT将包含一个格式ID号和一些项目,每个使用者区域的指示群集。这些项目连续的将是有限的出发由于 2 而且项目数目将和~相等对应的群集群集数目。每个项目在FAT 中将指示对应的群集状态。 FAT 项目将用来识别被分派到每个文件的群集组。

Linux文件系统和分区

1.Ubuntu文件结构 /bin bin是Binary的缩写。存放系统中最常用的可执行文件(二进制)。 /boot 这里存放的是linux内核和系统启动文件,包括Grub、lilo启动器程序。 /dev dev是Device(设备)的缩写。该目录存放的是Linux的外部设备,如硬盘、分区、键盘、鼠标、usb等。 /etc 这个目录用来存放所有的系统管理所需要的配置文件和子目录,如passwd、hostname等。 /lib 存放共享的库文件,包含许多被/bin和/sbin中程序使用的库文件。 /lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些零散文件。 /media ubuntu系统自动挂载的光驱、usb设备,存放临时读入的文件。 /mnt 作为被挂载的文件系统的挂载点。 /opt 作为可选文件和程序的存放目录,主要被第三方开发者用来简易安装和卸载他们的软件。 /proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这里存放所有标志为文件的进程, 比较cpuinfo存放cpu当前工作状态的数据。 /sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序,如系统管理、目录查询等关键命令文件。 / srv 存放系统所提供的服务数据。 /sys 组自豪系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。 /tmp 这个目录是用来存放一些临时文件的,所有用户对此目录都有读写权限。 /usr 存放与系统用户有关的文件和目录。 /usr/X11R6 存放X-Windows的目录; /usr/bin 用户和管理员的标准命令; /usr/sbin 存放root超级用户使用的管理程序;

各种文件系统大小

各种文件系统大小 A.FAT16(最大分区2GB,最大文件2GB,最大容量) 在说明FAT16文件系统之前,我们必须清楚FAT是什么?FAT(File Allocation Table)是"文件分配表"的意思。顾名思义,就是用来记录文件所在位置的表格,它对于硬盘的使用是非常重要的,假若丢失文件分配表,那么硬盘上的数据就会因无法定位而不能使用了。不同的操作系统所使用的文件系统不尽相同,在个人计算机上常用的操作系统中,MS-DOS 6.x及以下版本使用FAT16;OS/2使用HPFS;Windows NT则使用NTFS;而MS-DOS 7.10及ROM-DOS 7.10同时提供了FAT16及FAT32供用户选用。其中我们接触最多的是FAT16、FAT32文件系统。 A、FAT16文件系统 FAT16使用了16位的空间来表示每个扇区(Sector)配置文件的情形,故称之为FAT16。 FAT16由于受到先天的限制,因此每超过一定容量的分区之后,它所使用的簇(Cluster)大小就必须扩增,以适应更大的磁盘空间。所谓簇就是磁盘空间的配置单位,就象图书馆内一格一格的书架一样。每个要存到磁盘的文件都必须配置足够数量的簇,才能存放到磁盘中。FAT16各分区与簇大小的关系如下表: .u$Q1i R+n0分区大小FAT16簇大小 16MB-127MB 2KB 128MB-255MB 4KB 256MB-511MB 8KB 512MB-1023MB 16KB 1024MB-2047MB 32KB 如果你在一个1000MB的分区中存放50KB的文件,由于该分区簇的大小为16KB,因此它要用到4个簇才行。而如果是一个1KB的文件,它也必须使用一个簇来存放。那么每个簇中剩下的空间可否拿来使用呢?答案是不行的,所以在使用磁盘时,无形中都会或多或少损失一些磁盘空间。

MBR分区和FAT32文件系统详细介绍

通过使用DiskEditor对硬盘的分析,现对硬盘的MBR区及FA T32文件系统做一个详细的介绍。 新硬盘->低格后变化:所有扇区中的字节数据填充为0x00 低格后->分区后变化:写硬盘的MBR(主引导扇区)区 分区后->格式华变化:写硬盘的FA T(文件分配表)区 MBR区介绍: 起始位置:0柱面0磁头1扇区(硬盘的第一个扇区) 结束位置:0柱面0磁头1扇区 大小:512(硬盘每个扇区的所占用的字节数)个字节 000 ~ 1bd (446字节)executable code(我们不使用,固定填写0x00) 1be ~ 1cd (16字节)1st partition entry(参数解释见下面) 1ce ~ 1dd (16字节)2st partition entry(同第一个分区) 1de ~ 1ed (16字节)3st partition entry(同第一个分区) 1ee ~ 1fd (16字节)4st partition entry(同第一个分区) 1fe ~ 1ff (2字节)boot record signature(固定值:55 aa) 现以第一个分区的入口参数为例: 80 分区状态(80H表示为激活分区,00H表示为非激活分区) 01 分区的开始磁头 01 00 分区的开始柱面和扇区(0 ~ 5位为扇区号、8 ~ 15位为柱面号的低8位,6 ~ 7 位为柱面号的高两位) 0c 分区的类型(0c表示为FA T32,用LBA方式) ff 分区的结束磁头 ff fe 分区的结束柱面和扇区(表示同开始磁头) 3f 00 00 00 从MBR到第一个分区扇区的扇区个数(一般为硬盘扇区的最大值) fc 8a 38 01 分区的总扇区数(可以计算扇区的总大小)

硬盘分区结构及windows文件系统结构

硬盘分区结构及windows文件系统结构 1.关于硬盘分区: IDE接口硬盘中,不管什么操作系统,都有如下结构: MBR和基本分区表共用硬盘的第一个扇区(即0面0道1扇区,以后简称第一扇区MBR),分区表位于扇区的最后66字节,除了最后的2字节55AA外,为4条分区记录,每条分区记录16字节。 各字段含义如下: (注意:C/H/S的编址从0/0/1开始) 可以看出,使用C/H/S三维地址时,磁盘的寻址空间最多只有224个扇区,即8GB的容量,当磁盘容量大 于8GB时,C/H/S就无法寻址了。 于是采用LBA(logic block address)线性地址来寻址。在LBA方式下系统把所以的物理扇区都按某种方式或规则看做是一线性编号的扇区,即从0到某个最大值方式排列。 C/H/S到LBA: LBA=(C-c)*PH*PS+(H-h)*PS+(S-s) 一般情况下c=0,h=0,s=1,PS=63,PH=255,PS表示每磁道多少扇区,PH表示每柱面多少磁道。

LBA到C/H/S: C=LBA/(PH*PS)+c H=(LBA/PS)MOD PH +h S=LBA MOD PS + s 由于MBR只能记录4个分区的信息,windows通过扩展分区来记录多于4个分区的记录,称做虚拟MBR。 做法是: 让主MBR在定义分区时,将多余容量定义为扩展分区,指定该分区的起始位置,根据起始位置指向硬盘的某一扇区,作为下一个分区表,在该扇区继续定义分区。如果只有一个分区,就定义该分区,然后结束;如果不止一个分区,就定义一个基本分区和一个扩展分区,扩展分区再指向下一个分区表,在下一个分区表中继续定义分区,直至结束。这样就形成一个分区链,可以描述所有的分区。 一个分区表的例子:

Linux的文件系统及其硬盘分区挂载原理

Linux的文件系统及其硬盘分区挂载原理 时间:2008-02-28 19:26来源:中国网管联盟bitsCN编辑字体:[大中小] 如果您是一位新手,也许您还不知道如何把文件从Windows拷贝到Linux上吧?下面,我们将说明Unix文件系统以及mount的工作过程,然后再比较详细地讨论。 mount的使用和有关选项。如果您已经了解Unix文件系统是如何工作的,那么可以跳过下面一节。否则,您最好继续接着学习"mount"的含义。 什么是mount? 在一些操作系统(如Windows)中,计算机通过设备名来识别设备,例如,大多数PC机系统都包括"A:drive"(软盘)、"C:drive"(硬盘)和"D:drive"(一般是只读光盘)。 出于各种各样的理由,Linux系统一般不采用这种方式指示存储设备。Linux系统采用单一的目录树(类似于Windows上用户的"C:drive"目录树结构),通过mount到目录树的分支上来查找存储设备的内容。 在这台特定的计算机上,总共有4个硬盘驱动器,它们全都被文件系统管理。例如,假设我们沿用Windows系统的方法,给这4个硬盘驱动器分别命名为C、D、E和F,那么它们的Linux路径名和Windows的等价名如表1所示。 磁盘号Linux路径等价的Windows文件名 1/C:\ 1 /var C:\VAR 1 /var/adm C:\VAR\ADM 1 /var/spool C:\VAR\SPOOL 1 /home C:\HOME 1 /home C:\HOMEJACKON 2 /usr D:\

2 /usr/lib D:\USR\LIB 3 /usr/X11R6 E:\ 4 /home F:\ 通过维护系统中的设备列表,以及设备被mount的情况,Linux系统知道到哪里去寻找包含在每个路径表上的数据,而不管数据具体存放在哪个设备上。因为数据映射的操作是自动完成的,所以用户不需要记住数据在哪个硬盘驱动器上。 例如,对匿名ftp用户,只需要记住/home/ftp是在"home"目录上,而不需要记住所有的ftp文件都在"F:\"或第4个硬盘驱动器上,这样 显然直观多了。同样地,记住面向用户的库程序全在/usr/lib上,比必须记住面向用户的库程序全部在第2个硬盘驱动器的"LIB"目录上也直观得多。 设备标识 为了记住每个设备被mount到哪里,Linux系统需要有一种惟一的方法标识各个设备。对于人来讲,通过在/dev目录上找到设备名就完成了任务。但 是,这个目录包含了大量的特殊文件,每个文件都指示不同类型的设备,或现有设备上的分区。例如,/dev/hda设备指示系统的第一个硬盘驱动器; /dev/hda1指示第一个硬盘驱动器的第1分区,而/dev/hda2是第2个硬盘驱动器的第2分区。表2展示了一些常用的设备文件和相应的设备。 特殊文件设备 /dev/fdo 第1软盘驱动器 /dev/fdl 第2软盘驱动器 /dev/cdrom CD-ROM驱动器 /dev/hda[1-16] 第1硬盘驱动器(IDE1,1)和分区1-16

Linux1 硬盘分区和文件系统

Linux1 硬盘分区和文件系统 在安装Linux操作系统之前,首先应该了解一些关于磁盘分区和文件系统的知识,从而使用户能够尽可能简便、轻松的安装Red Hat Enterprise Linux 5.4操作系统。1.硬盘分区 磁盘是最为重要的硬件设备之一,任何操作系统都应该先按照到磁盘上,然后才能使用,现在大多数的操作系统都要求安装在硬盘上。 硬盘包括IDE和SCSI两种接口。其中,SCSI接口的硬盘读/写速度快但价格昂贵;IDE接口的硬盘读/写速度慢但价格便宜。用户应根据实际需求合理选择,通常,对读/写速度要求较高的服务器应该选择使用SCSI接口的硬盘。 ●IDE接口 在主板上包括主次2个IDE接口,其中,主IDE接口一般用“IDE1”来表示,次IDE接口用“IDE2”表示。 Linux对连接到IDE接口的硬盘使用/dev/hdx的方式命名,x的值对应于硬盘安装位置,其值可以是a、b、c、d,如表1-3所示。 表1-3 IDE接口的硬盘命名方式 对于连接到SCSI接口的设备通常使用ID号进行区别,SCSI设备ID号范围是0~15,SCSI主控制器通常占用id号7,所以SCSI最多可以连接15个设备。 Linux对连接到SCSI接口卡的硬盘使用/dev/sdx的方式命名,x的值为a、b等,即ID号为0的SCSI硬盘名为/dev/sda,ID号为1的SCSI硬盘名为/dev/sdb,以此类推。 硬盘使用前要进行分区。它可以分为主分区(Primary Partition)、扩展分区(Extension Partition)和逻辑分区(Logical Partition)3种不同类型。一块硬盘最多可以有4个主分区,其中一个主分区的位置可以用一个扩展分区替换,且一块硬盘只能有一个扩展分区,在这个扩展分区中可以划分多个逻辑分区。 在Linux操作系统中的用户使用设备名来访问设备,硬盘也不例外,如下所示为磁盘设备名称: 系统的第一块IDE接口的硬盘称为/dev/hda。 系统的第二块IDE接口的硬盘称为/dev/hdb。 系统的第一块SCSI接口的硬盘称为/dev/sda。

深入理解文件系统

一、通过格式化命令-看磁盘文件系统的建立过程 1、添加format命令,单步调试 所有的底层驱动函数都已经准备好。添加格式化命令format后,编译下载。 Format命令的执行主要是调用f_mkfs()函数,下面进行单步调试。 以下主要列出函数的主要执行步骤: res=f_mkfs( 0, 1, 4096 ); //1表示不需要引导扇区。4096是8个扇区。 进入f_mkfs()函数,这里只列出主要执行步骤: if (disk_ioctl(drv, GET_SECTOR_COUNT, &n_part) != RES_OK || n_part < MIN_SECTOR) return FR_MKFS_ABORTED;这个函数调用后,n_part=0x000F,3400 = 996 352,这是SD的总块数。allocsize /= SS(fs); 等于8/*Number of sectors per cluster */ n_clst = n_part / allocsize; //等于0x1E680 = 124 544 簇。 if (n_clst >= 0xFFF5) fmt = FS_FAT32; 所以文件系统确定为FAT32类型。 n_fat = ((n_clst * 4) + 8 + SS(fs) - 1) / SS(fs); 等于0x3CE = 974,表示FAT要占据974个扇区。 n_rsv = 33 - partition; 保留扇区32个。 n_dir = 0; b_fat = b_part + n_rsv; /* FA Ts start sector 32扇区*/ b_dir = b_fat + n_fat * N_FATS; /* Directory start sector 0x3EE =1006,由于FAT表个数设为1个,所以目录区=FA T起始+FAT占用扇区数*/ b_data = b_dir + n_dir; /* Data start sector */ 以上三项确定FA T区域、根目录区、数据区的起始扇区。 disk_ioctl(drv, GET_BLOCK_SIZE, &n) != RES_OK,这个函数调用没有正确返回可擦出扇区的总数。接下来程序会出错,因此退出,修改disk_ioctl()函数后,再次分析。把这个函数返回值直接改为32。并且把FA T表的个数定义为2. N_FA TS改为2后,根目录区、数据区的起始扇区的起始扇区变为0x7BC=1980扇区。继续往下执行。 n = (b_data + n - 1) & ~(n - 1); n_fat += (n - b_data) / N_FATS;这两句话对fat所占扇区数进行了修正,保证擦除时,以32个扇区为一个单位。 n_clst = (n_part - n_rsv - n_fat * N_FA TS - n_dir) / allocsize; =0x1E588。 tbl = fs->win; /* Clear buffer */ mem_set(tbl, 0, SS(fs)); 清零文件系统缓冲区。 mem_set(tbl, 0, SS(fs)); ST_DWORD(tbl+BS_jmpBoot, 0x90FEEB); /* Boot code (jmp $, nop) */ ST_WORD(tbl+BPB_BytsPerSec, SS(fs)); /* Sector size */ tbl[BPB_SecPerClus] = (BYTE)allocsize; /* Sectors per cluster */ ST_WORD(tbl+BPB_RsvdSecCnt, n_rsv); /* Reserved sectors */ 上面的工作主要是填充引导扇区缓冲区,也就是常说的DBR扇区缓冲,等所有的参数写好,就可以写回磁盘。 ST_WORD(tbl+BS_55AA, 0xAA55); /* Signature */ if (disk_write(drv, tbl, b_part+0, 1) != RES_OK) return FR_DISK_ERR; //这就是在写有效引导标志sec[510]=0x55, sec[511]=0xAA。 if (fmt == FS_FA T32) disk_write(drv, tbl, b_part+6, 1); //FAT32在第六扇区有个备份引导扇区。 for (m = 0; m < N_FATS; m++) { mem_set(tbl, 0, SS(fs)); /* 1st sector of the FA T */ if (fmt != FS_FAT32) { n = (fmt == FS_FAT12) ? 0x00FFFF00 : 0xFFFFFF00; n |= partition; ST_DWORD(tbl, n); /* Reserve cluster #0-1 (FAT12/16) */ } else { ST_DWORD(tbl+0, 0xFFFFFFF8); /* Reserve cluster #0-1 (FAT32) */

相关主题
文本预览
相关文档 最新文档