U盘开发
- 格式:docx
- 大小:22.96 KB
- 文档页数:6
教你怎么用ultraiso制作另类的深度隐藏万能U+V2启动U盘当前,PE制作已经从光盘基本转型到U盘,U盘启动PE已经成为装机主流。
大容量U盘价格变成白菜价,多引导U盘启动技术也日益成熟。
目前U盘主要的启动方式有USB-HDD,USB-ZIP和usb-cdrom 等三种。
而U盘启动PE,从部署原理来,又可以分为量产、UD、U+和B+等方式。
详见后附资料。
现在流行于市面上的五花八流的万能启动U盘,基本都是采用UD启动方式,即fbinst+grub。
GRUB是一种功能强大灵活性强兼容性好的多引导启动方式。
fbinst启动,把PE文件放于U盘隐藏区(UD区)中,可以防病毒,可以防误删除及识格式化,智能识别各种类型主板的U盘启动,兼容性特别强;用UD格式化U盘,以后再更新数据,不会破坏非UD区数据,这点上也比量产强。
fbinst+grub强强联合,创造了PE史上的一个神话,UD启动良好的兼容性经过无数些实践证明,真不愧为万能启动U盘。
而本文介绍的,不是大家熟悉的UD启动盘,而是用ultraiso来制作另一种类型的隐藏万能启动U盘。
另类,是指它不采用网上流行的UD启动盘技术,而是采有最新版UltraISO把ISO版PE写入U盘,即大家常说的U+V2。
下面大家一起来体验U+V2制作的隐藏万能启动U盘技术吧。
一、什么是U+和U+技术的发展(一)什么是U+大家可能感到奇怪,UltraISO不是一款光盘工具吗?它也能制作启动U盘?其实,自UltraISO V9.12起,UltraISO已经包含制作启动U盘的功能。
此后版本功能不断增强。
它可以简单易行的把ISO格式PE写入U盘启动。
记得当年U+第一代出来,我按照网上的方法,把老毛桃扬州版U+到自己U盘上,第一次成功实现了U盘启动,让我对第一代U+印象深刻。
在此之前,用毛桃大师的U盘制作工具,及其它制作工具,从没有让U盘在自己电脑上成功启动。
(二)U+技术的发展自UltraISO V9.12起,UltraISO已经包含制作启动U盘的功能。
追溯U盘发展的历史,U盘应该是在2000年首次面市,当时全球共有5家企业拥有自有闪存盘品牌的销售,这5家主要是以色列的M-system、新加坡Track、朗科优盘、鲁文易盘和韩国FlashDriver。
但这五家推出的产品是有区别的,M-system、track、优盘以及Flashdriver的第一代闪存盘在各种操作系统下都必须要安装驱动程序才可使用,这并没有实现闪存盘真正的“移动存储”的特点,而且当时这些厂家推出的闪存盘价格非常高,朗科优盘的16M 产品就卖到了1000左右。
鲁文推出的第一代闪存盘———易盘就具有“无驱”功能。
无驱是指用户除了在Windows98/SE操作系统外,其他的win dows2000、windowsxp等操作系统下都无需驱动程序,易盘可即插即用,让用户真正地实现移动存储。
随着无驱型易盘面市,其他品牌也紧接其后,朗科的第二代优盘也推出了无驱功能。
随着消费者对闪存盘的认知度提高,消费者对闪存盘功能的需求也日益增多。
鲁文公司在2002年初就推出了具有“无驱、启动、硬加密”功能三项功能于一体的“三合一”型易盘。
此三合一易盘是指易盘除了具有无驱功能,还具有启动系统功能,可将易盘做为系统启动盘来启动系统,这项功能使得软盘没有存在的意义了;值得一提的是“硬加密”功能,此功能使得易盘具有私密性,用户必须键入正确的密码方可使用易盘,这样可以防止用户私密性的资料被其他人窃取。
易盘已不仅仅具有存储功能,而具有了更多的个性化特色。
闪存万舸争流的时代已经到来,迅速扩张的闪存市场需求和一拥而上瓜分市场份额的厂商群雄割据,新产品和技术层出不穷。
今年7月份,鲁文存储推出了集“无驱、启动、硬加密、写保护、随身邮、PC 锁、压缩存储、保密碟、双重杀毒”9项功能于一体的“九合一”易盘。
闪存盘在中国的历史不过区区两年,她所走过的历程是一个挖掘、引领用户需求的道路。
最初的研究开发人员,是怀着为用户提供一个能存储更大容量工具的初衷,这才有了闪盘的出现;现在,闪盘的功能越来越丰富,价格也开始贴近个人用户,今后闪盘将向着个性化方向迈进。
U盘启动安装系统的制作方法大全(详细图解)-CAL-FENGHAI.-(YICAI)-Company One1U盘启动安装系统的制作● 装系统前的准备准备一个4G左右的U盘一个能启动电脑的U盘和一个系统的光盘镜像,在安装系统前,需要准备好一些东西。
一个是操作系统的镜像,另一个就是能启动的U盘。
下面我们就来讲解怎么利用U盘启动安装Ghost xp版的XP系统。
注:读懂本文需要了解安装操作系统的一些基础知识。
● 首先是制作一个能启动电脑的带WindowsPE的启动U盘。
先到网上去下载一个叫“老毛桃WinPE”的工具到硬盘里,或者在下面下载一个“GHOST的XP或win7”用WINRAR解压出来,在目录中“WINPE安装”中的的文件就是“老毛桃WinPE”工具,再把U盘接在电脑上,然后按下面的步骤一步步来就可以制作一个能启动的U盘了。
迅雷快速下载地址请打开迅雷,新建一个下载任务,并将下面的地址复制到"网址(URL)"一栏中,点击确定即可)GhostXP_sp3电脑公司快速装机版V13点击“WINPE安装”中的“安装.EXE”进入以下环节,按以下图示操作。
切记小心操作,不要误操作造成硬盘数据丢失。
选第4项,然后回车输入U盘的盘符,然后回车来到格式化步骤,按默认的设置,点“开始”就行顺利格式化引导部分这里要说明一下,在“设备”里有两个选项,一个是电脑的硬盘,一个是要制作的U盘。
这里一定要选对U盘而别选错硬盘,从大小就能分出来哪个是U盘。
笔者的U盘是2G的,所以应该选择(hd1)[1898M]。
下面的“选项”部分可以不用管,默认不勾选任何参数就行。
确认好以上步骤后,点“安装”然后进行下一步。
写入引导完毕,按任意键继续要给启动U盘设个密码本来笔者不想设置启动U盘的密码,但这个步骤不能跳过,所以没办法只好设了一个密码。
设置完后,一定要牢记你设好的密码,否则启动U盘会无法使用。
制作完毕当你完成以上步骤后,恭喜,一个具有启动功能的U盘已经来到你的身边。
C#开发USB通讯程序程序实现效果:当把U盘放插入,然后程序自动将U盘的内容复制到本地硬盘程序代码:using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace U盘更新{public partial class Form1 : Form{public const int WM_DEVICECHANGE = 0x219;public const int DBT_DEVICEARRIVAL = 0x8000;public const int DBT_CONFIGCHANGECANCELED = 0x0019;public const int DBT_CONFIGCHANGED = 0x0018;public const int DBT_CUSTOMEVENT = 0x8006;public const int DBT_DEVICEQUERYREMOVE = 0x8001;public const int DBT_DEVICEQUERYREMOVEFAILED = 0x8002;public const int DBT_DEVICEREMOVECOMPLETE = 0x8004;public const int DBT_DEVICEREMOVEPENDING = 0x8003;public const int DBT_DEVICETYPESPECIFIC = 0x8005;public const int DBT_DEVNODES_CHANGED = 0x0007;public const int DBT_QUERYCHANGECONFIG = 0x0017;public const int DBT_USERDEFINED = 0xFFFF;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}protected override void WndProc(ref Message m){try{if (m.Msg == WM_DEVICECHANGE){switch (m.WParam.ToInt32()){case WM_DEVICECHANGE:break;case DBT_DEVICEARRIVAL://U盘插入DriveInfo[] s = DriveInfo.GetDrives();foreach (DriveInfo drive in s){if (drive.DriveType == DriveType.Removable){listBox1.Items.Add("U盘已插入,盘符为:" + .ToString()); break;}}break;case DBT_CONFIGCHANGECANCELED:break;case DBT_CONFIGCHANGED:break;case DBT_CUSTOMEVENT:break;case DBT_DEVICEQUERYREMOVE:break;case DBT_DEVICEQUERYREMOVEFAILED:break;case DBT_DEVICEREMOVECOMPLETE: //U盘卸载break;case DBT_DEVICEREMOVEPENDING:break;case DBT_DEVICETYPESPECIFIC:break;case DBT_DEVNODES_CHANGED:break;case DBT_QUERYCHANGECONFIG:break;case DBT_USERDEFINED:break;default:break;}}}catch (Exception ex){MessageBox.Show(ex.Message);}base.WndProc(ref m);}VolumeDeviceClass volumeDeviceClass = new VolumeDeviceClass(); foreach (Volume device in volumeDeviceClass.Devices){// is this volume on USB disks?if (!device.IsUsb)continue;// is this volume a logical disk?if ((device.LogicalDrive == null) || (device.LogicalDrive.Length == 0)) continue;device.Eject(true); // allow Windows to display any relevant UI}。
USB Mass Storage学习笔记-STM32+FLASH实现U盘USB Mass Storage学习笔记-STM32+FLASH实现U盘一、内容概述采用STM32内部自带USB控制器外加大页NAND FLASH K9F1G08U0A实现一个128M的U盘。
1、STM32的USB控制器STM32F103的MCU自带USB从控制器,符合USB规范的通信连接;P C主机和微控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的,该数据缓冲区能被USB外设直接访问。
这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分组大小所决定,每个端点最大可使用512字节缓冲区,最多可用于16个单向或8个双向端点。
USB模块同PC主机通信,根据USB规范实现令牌分组的检测,数据发送/接收的处理,和握手分组的处理。
整个传输的格式由硬件完成,其中包括CRC的生成和校验。
每个端点都有一个缓冲区描述块,描述该端点使用的缓冲区地址、大小和需要传输的字节数。
当USB模块识别出一个有效的功能/端点的令牌分组时,(如果需要传输数据并且端点已配置)随之发生相关的数据传输。
USB模块通过一个内部的16位寄存器实现端口与专用缓冲区的数据交换。
在所有的数据传输完成后,如果需要,则根据传输的方向,发送或接收适当的握手分组。
在数据传输结束时,USB模块将触发与端点相关的中断,通过读状态寄存器和/或者利用不同的中断来处理。
USB的中断映射单元:将可能产生中断的USB事件映射到三个不同的NVI C请求线上:(1)USB低优先级中断(通道20):可由所有USB事件触发(正确传输,USB复位等)。
固件在处理中断前应当首先确定中断源。
(2)USB高优先级中断(通道19):仅能由同步和双缓冲批量传输的正确传输事件触发,目的是保证最大的传输速率。
(3)USB唤醒中断(通道42):由USB挂起模式的唤醒事件触发。
图 1、USB设备框图2、大页NAND K9F1G08Nand flash 以页为单位读写数据,而以块为单位擦除数据。
playbook很怪异,不能直接识别U盘模式,很挑电脑,当你到手的Playbook发现不能直接像安卓一样拷贝文件时候,千万别大惊小怪。
但是没关系,可以这样进入U盘模式:(不然拷贝动作片太慢了,裤子都脱了半天撸不起来)
分为两种:①wifi分享传输模式②U盘本地访问模式。
一、打开wifi分享模式:
再打开开发模式:
(development 模式)这个是PB安装软件和后续混刷、连接电脑必备的过程。
然后,你的桌面上就会出现小人图标:(记得打开wifi)
点击那个小人标志,就会出现两个不同的IP,通常情况下,一个是:169.254.0.1 还一个是192.168.1.1XX
这两个IP 一个是设备的本地IP地址,一个是wifi访问地址。
在我的电脑菜单,运行界面,输入:
则Playbook将进入本地U盘模式。
在我的电脑菜单,运行界面,输入:
则进入wifi访问模式。
如果还是太复杂????
只要连接了黑莓助手,如下图点击,同样可以进入分享模式:。
gd32 u盘枚举过程GD32系列芯片是中国自主研发的一款高性能ARM Cortex-M 微控制器,支持USB设备接口功能。
当使用GD32系列芯片来进行USB传输时,需要进行U盘枚举过程,以便主机能够识别并与GD32芯片通信。
下面是GD32 U盘枚举过程的相关参考内容。
1. USB硬件连接准备:在进行U盘枚举之前,首先需要确认GD32芯片的相关硬件连接准备情况,包括连接到主机的USB接口,以及连接到U 盘存储器的SPI或SDIO接口。
确认连接正确无误后,接下来进行软件配置。
2. USB引脚配置:GD32芯片上有一些引脚是用于USB功能的,需要进行相应的引脚配置。
例如,设置引脚为USB全速模式、开启USB时钟、配置USB寄存器等。
这些操作可以通过GD32提供的软件库函数来完成。
3. USB初始化:在进行U盘枚举之前,需要对USB进行初始化,包括设定USB的传输速度、设置USB的工作模式等。
例如,可以通过调用GD32库函数usb_init函数来初始化USB。
4. 设备描述符设置:设备描述符是GD32芯片在U盘枚举过程中与主机进行通信所需的重要信息,包括设备的厂商ID、产品ID、设备类、接口等。
可以使用GD32库函数usb_set_device_descriptor函数来设置设备描述符的相关参数。
5. 配置描述符设置:配置描述符中包含了GD32芯片的配置信息,用于告知主机设备的配置和功能。
可以通过调用GD32库函数usb_set_configuration_descriptor函数来设置配置描述符的参数。
6. 接口描述符设置:接口描述符包含了GD32芯片的接口信息,用于告知主机设备的接口设置和功能。
可以使用GD32库函数usb_set_interface_descriptor函数来设置接口描述符的相关参数。
7. 端点描述符设置:端点描述符用于告知主机设备的数据传输设置和通信方式。
可以使用GD32库函数usb_set_endpoint_descriptor函数来设置端点描述符的参数。
U盘系统,就是随身系统,直接把U盘插入电脑的usb接口,只要电脑的主板支持usb启动,那么就可以把引导方式设置为由此启动,随后进入系统。
这里主要是针对Linux一类的U盘系统的制作,像是Windows一类的U盘系统也是有很多的,最简单的是我们修复系统用的Win-pe,也有人把XP装进了U盘,使用起来功能更为强大。
LinuxU盘系统分类:一使用ubuntu的livecd功能ubuntu的livecd可以在不安装在电脑硬盘的情况下使用,也可以算是一个随身系统,并且官方发布的ubuntuLinux已经附带了一些列的常用软件,对于平时的上网,办公来说功能足矣。
由于版权或者其他的问题其中的多媒体播放器(包括视频与音频)的解码并不多,一般来说不能直接播放电脑上的多媒体文件,需要在线升级安装解码程序。
在此我推荐利用一些国内定制的ubuntu版本,比如雨林木风的YlmfOS或者深度的Deepin或者新氧ubuntu,使用这些定制版的iso文件制作随身系统实际上是利用了ubuntu的livecd功能。
这里笔者只利用雨林木风与新氧的iso制作过随身系统,在此推荐使用ylmfos,推荐他的原因是因为它的livecd功能与官方原版所提供的功能相差无几,功能上强于新氧的livecd而且集成了中文语言的支持(其他中文定制版也提供了中文支持)这样可以直接使用,不必在线升级。
对于其中的细节,可以自己去google一下。
制作方法:方法1:U盘量产。
对于量产这个词语不明白的同学可以自己去网上搜索。
简言之,就是将iso文件烧录到U盘空间上制作成一个usb的可以为电脑识别的光驱。
当你将U盘连接电脑的时候,你会发现电脑上多了一个光驱,并且光驱内已经有的文件就是量产时候设置的。
利用量产得到的光驱我们可以使用livecd功能,那么在次可以使用系统所提供的各种功能。
量产的功能算是十分强大,但是在此不推荐使用,因为我们有更好的方法。
再次提示:量产有风险,使用请谨慎,对于好奇心足够强大而且有足够多的U盘的同学可以百度一下U盘量产的教程。
一、简介芯片支持FAT、FAT32文件系统,其他文件系统都不支持。
所以很轻易的读取设备的内容。
这里我们支持U 盘、TF 卡、SPIFLASH 这三种设备。
TF 卡和U 盘最大支持128G 的容量。
当然兼容性是非常非常好的,基本所有的都支持。
选择的设备的时候,如果不需要很大的容量,可以选择spiflash 作为存储设备。
使用U 盘的时候,请注意,U 盘的供电电压,很多需要4.2V 以上。
TF 卡则不需要,3.3V 就足够了供电电压3.2V--5.2V 适用场景:1、文件记录器,支持FAT 或者FAT322、支持TXT 或者CSV。
或者自定义文件后缀名3、支持最大128G 的U 盘或者TF 卡,最大16M 字节的spiflash [W25Q128]。
三个设备任选一个。
U 盘优先【但是有的U 盘上电特别慢,也会是个问题】4、支持方案级芯片出货5、可定制各种特设的功能,前提是要有量电流10mA [无设备插入状态下]产品类型QYFAT 读写U 盘、TF 卡、SPIFLASH 设备型号KT1025A 尺寸32*20【mm】重量20g 接口串口uart[默认115200bps]波特率串口AT 指令可设产品特点说明:1、单芯片集成U 盘读写、TF 卡读写、spiflash 读写。
并且集成FAT、FAT32文件系统2、单芯片支持USB 连接电脑,充当读卡器使用。
可以连接电脑读TF 卡和SPIFLASH 3、超低的成本,超简单的外围元件4、芯片内置3.3V 的LDO 。
超宽的供电电压范围5、芯片的GPIO 电压,都是3.3V 的TTL 电平6、当开启写文件功能之后,芯片就处于默认透传模式,即串口收到的数据,追击写入指定的文件中7、串口波特率可修改,AT 指令即可。
当然芯片可以定制各种各样的功能新增程序升级功能,将“updata.bfu”拷贝至TF 卡或者U 盘,然后插入到模块中双击“PP”按键,就进入升级模式,升级完成灯熄灭,模块自动复位然后将设备中的“updata.bfu”文件删除,避免重复升级---定制型的客户用得到二、详细说明2.0硬件说明1、Microusb接口,只能供电。
下是我做U盘开发过程中的几个相关步骤:保证USB 芯片正常工作,用其他USB成功项目验证硬件连接及固件的正确性按Mass Storage协议 Bulk-Only 模式提供描述符,使PC 机控制面板上设备类型出现Mass Storage Device响应SCSI指令集中Inquiry 命令,可以出现盘符实现FAT16文件系统处理SCSI命令集中READ命令及其他UFI命令,可以访问盘符处理SCSI命令集中WRITE命令U盘开发成功开发U盘有三个工具软件应该必备:USBVIEW 察看设备描述符,端点测试等;BUSHOUND 截取USB总线数据,可分析UFI命令及U盘返回的数据流;串口助手可实时了解U盘所收命令流及程序流程由于每个人知识面不同,我想实现上面的几个步骤遇到的问题也不一样。
对我最大的困惑是实现FAT16文件系统,直到在微软网站找到它的白皮书才算解惑。
这里简介一下方便大家有的放矢。
USB 组织定义了海量存储设备类(Mass Storage Class)的规范,这个类规范包括四个独立的子类规范,即:USB Mass Storage Class Control/Bulk/Interrupt (CBI) TransportUSBMass Storage Class Bulk-Only TransportUSB Mass Storage Class ATA Command BlockUSB Mass Storage Class UFI Command Specification。
前两个子规范定义了数据/命令/状态在USB 上的传输方法。
Bulk-Only 传输规范仅仅使用Bulk 端点传送数据/命令/状态,CBI 传输规范则使用Control/Bulk/Interrupt三种类型的端点进行数据/命令/状态传送。
后两个子规范则定义了存储介质的操作命令。
ATA 命令规范用于硬盘,UFI 命令规范是针对USB 移动存储。
Windows95 OSR2和Windows 98开始支持FAT32 文件系统,它是对早期DOS的FAT16文件系统的增强,由于文件系统的核心--文件分配表FAT由16位扩充为32位,所以称为FAT32文件系统。
在一逻辑盘(硬盘的一分区)超过 512 兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,一般还会使程序运行加快,使用的计算机系统资源更少,因此是使用大容量硬盘存储文件的极有效的系统。
本人对Windows 98下的FAT32 文件系统做了分析实验,总体上与FAT16文件系统变化不大,现将有关变化部分简介如下:(一)FAT32 文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT 区)、文件分配表区(FAT区)、数据区(DATA区)。
引导区和文件分配表区又合称为系统区。
(二)引导区从第一扇区开始,使用了三个扇区,保存了该逻辑盘每扇区字节数,每簇对应的扇区数等等重要参数和引导记录。
之后还留有若干保留扇区。
而FAT16文件系统的引导区只占用一个扇区,没有保留扇区。
(三)文件分配表区共保存了两个相同的文件分配表,因为文件所占用的存储空间(簇链)及空闲空间的管理都是通过FAT实现的,FAT如此重要,保存两个以便第一个损坏时,还有第二个可用。
文件系统对数据区的存储空间是按簇进行划分和管理的,簇是空间分配和回收的基本单位,即,一个文件总是占用若干个整簇,文件所使用的最后一簇剩余的空间就不再使用,而是浪费掉了。
从统计学上讲,平均每个文件浪费0.5簇的空间,簇越大,存储文件时空间浪费越多,利用率越低。
因此,簇的大小决定了该盘数据区的利用率。
FAT16系统簇号用16位二进制数表示,从0002H到FFEFH个可用簇号(FFF0H到FFFFH另有定义,用来表示坏簇,文件结束簇等),允许每一逻辑盘的数据区最多不超过FFEDH(65518)个簇。
FAT32系统簇号改用32位二进制数表示,大致从00000002H到FFFFFEFFH个可用簇号。
FAT表按顺序依次记录了该盘各簇的使用情况,是一种位示图法。
每簇的使用情况用32位二进制填写,未被分配的簇相应位置写零;坏簇相应位置填入特定值;已分配的簇相应位置填入非零值,具体为:如果该簇是文件的最后一簇,填入的值为FFFFFF0FH,如果该簇不是文件的最后一簇,填入的值为该文件占用的下一个簇的簇号,这样,正好将文件占用的各簇构成一个簇链,保存在FAT表中。
0000000H、00000001H两簇号不使用,其对应的两个DWORD位置(FAT表开头的8个字节)用来存放该盘介质类型编号。
FAT表的大小就由该逻辑盘数据区共有多少簇所决定,取整数个扇区。
(四)FAT32系统一簇对应8个逻辑相邻的扇区,理论上,这种用法所能管理的逻辑盘容量上限为16TB(16384GB),容量大于16TB时,可以用一簇对应16个扇区,依此类推。
FAT16系统在逻辑盘容量介于128MB到256MB时,一簇对应8个扇区,容量介于256MB到512MB时,一簇对应16个扇区,容量介于512MB到1GB时,一簇对应32个扇区,容量介于1GB到2GB时,一簇对应32个扇区,超出2GB的部分无法使用。
显然,对于容量大于512MB的逻辑盘,采用FAT32的簇比采用FAT16的簇小很多,大大减少了空间的浪费。
但是,对于容量小于512MB的盘,采用FAT32虽然一簇8个扇区,比使用FAT16一簇16个扇区,簇有所减小,但FAT32的FAT表较大,占用空间较多,总数据区被减少,两者相抵,实际并不能增加有效存储空间,所以微软建议对小于512M的逻辑盘不使用FAT32。
另外,对于使用FAT16文件系统的用户提一建议,硬盘分区时,不要将分区(逻辑盘)容量正好设为某一区间的下限,例:将一逻辑盘容量设为1100M(稍大于1024M),则使用时其有效存储容量比分区为950M的一般还少,因其簇大一倍,浪费的空间较多。
还有,使用FDISK等对分区指定容量时,由于对1MB的定义不一样(标准的二进制的1MB为1048576B,有的系统将1MB理解为1000000B,1000KB等),及每个分区需从新磁道开始等因素,实际分配的容量可能稍大于指定的容量,亦需注意掌握。
(五)根目录区(ROOT区)不再是固定区域、固定大小,可看作是数据区的一部分。
因为根目录已改为根目录文件,采用与子目录文件相同的管理方式,一般情况下从第二簇开始使用,大小视需要增加,因此根目录下的文件数目不再受最多512的限制。
FAT16文件系统的根目录区(ROOT区)是固定区域、固定大小的,是从FAT区之后紧接着的32个扇区,最多保存512个目录项,作为系统区的一部分。
(六)目录区中的目录项变化较多,一个目录项仍占32字节,可以是文件目录项、子目录项、卷标项(仅跟目录有)、已删除目录项、长文件名目录项等。
目录项中原来在DOS下保留未用的10个字节都有了新的定义,全部32字节的定义如下:(1) 0-- 7字节文件正名。
(2) 8--10字节文件扩展名。
(3) 11字节文件属性,按二进制位定义,最高两位保留未用,0至5位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位。
(4) 12--13字节仅长文件名目录项用,用来存储其对应的短文件名目录项的文件名字节校验和等。
(5) 14--15字节 24位二进制的文件建立时间,其中的高5位为小时,次6位为分钟。
(6) 16--17字节 16位二进制的文件建立日期,其中的高7位为相对于1980年的年份值,次4位为月份,后5位为月内日期。
(7) 18--19字节 16位二进制的文件最新访问日期,定义同(6)。
(8) 20--21字节起始簇号的高16位。
(9) 22--23字节 16位二进制的文件最新修改时间,其中的高5位为小时,次6位为分钟,后5位的二倍为秒数。
(10)24--25字节 16位二进制的文件最新修改日期,定义同(6)。
(11)26--27字节起始簇号的低16位。
(12)28--31字节 32位的文件字节长度。
其中第(4)至(8)项为以后陆续定义的。
对于子目录项,其(12)为零;已删除目录项的首字节值为E5H。
在可以使用长文件名的FAT32系统中,文件目录项保存该文件的短文件名,长文件名用若干个长文件名目录项保存,长文件名目录项倒序排在文件短目录项前面,全部是采用双字节内码保存的,每一项最多保存十三个字符内码,首字节指明是长文件名的第几项,11字节一般为0FH,12字节指明类型,13字节为校验和,26--27字节为零。
(七)以前版本的 Windows 和DOS与 FAT32 不兼容,不能识别FAT32分区,有些程序也依赖于 FAT16文件系统,不能和 FAT32 驱动器一道工作。
将硬盘转换为FAT32,就不能再用双引导运行以前版本的Windows(Windows 95 [Version4.00.950]、Windows NT 3.x、Windows NT 4.0 和 Windows 3.x)。
磁盘结构综述1.硬盘结构硬盘的内部是由圆形金属片堆叠起来的,每个盘片的两面都有一个磁头(Head)负责读写这个磁面(Side),在每个磁面上划分了一圈一圈的同心圆,叫做柱面(Cylinder)对于软盘通常称之为磁道,在每个柱面中又划分了若干段,称之为扇区(Sector)。
由于技术的发展,硬盘的密度越来越大,使得硬盘的实际盘片数越来越少,对磁盘操作的柱面、磁头、扇区被硬盘控制器内部转换,已经不是实际的柱面、磁头、扇区了。
由于最早时磁盘存取系统估计不足,传输数据时只给扇区留了6位,柱面留了10位,磁头留了8位。
也就是说,柱面最大只能为1023。
但是大硬盘的柱面远大于这个数,所以后来就采用将柱面数减少,将磁头数增加的方式来满足磁盘寻址的要求,对于实际地址的转换在BIOS中进行,这叫逻辑块寻址方式(Logical Block Addressing,LBA)硬盘中有关柱面、磁头、扇区的数据都是以此为基准的。
2.分区结构众多的文件数据存放在磁盘上,需要有组织,这就形成了文件系统。
但是各个操作系统的文件系统都不尽相同,为了划分管理文件系统,在现在的PC机上都采用通用的分区结构。
分区机构是这样的:硬盘的以一个扇区(就是0柱面0磁头1扇区)叫主引导扇区(Main Boot Record,MBR),存放着引导程序和主分区表(Main Partition Table)和结束标志“55AA”。
一般称的分区表即是主分区表。
一个分区表最多可包含四个分区表项,每个分区表项中标示着一个分区信息或一个扩展分区表的位置,而扩展分区表中可能还有扩展分区表,这就形成了一个链状结构,可以记录很多个分区。