1.以ROOT身份进入LINUX
2.退出到windows,点击 SETTING菜单下的ENABLE VMWARE TOOLS子菜单,确认安装
3.把光驱改为使用iso镜像,路径为C:Program FilesVMwareVMware WorkstationProgramslinux.iso
4.进入linux运行mount -t iso9660 /dev/cdrom /mnt
加载CDROM设备,这时如果进入 /mnt 目录下,你将会发现多了一个文件:vmware-linux-tools.tar.gz。这就是WMWARE TOOLS的LINUX软件包,也就是我们刚才使用WINISO打开LINUX.ISO文件所看到的。
cp /mnt/vmware-linux-tools.tar.gz /tmp
将该软件包拷贝到LINUX的 TMP目录下。
umount /dev/cdrom
卸载CDROM。
cd /tmp
进入TMP目录
tar zxf vmware-linux-tools.tar.gz
解压缩该软件包,默认解压到vmware-linux-tools目录下(与文件名同名)。
cd vmware-linux-tools
进入解压后的目录
./install.pl 运行安装命令。
这时install提示你是否需要备份以前的配置文件,建议选择"y"。
作者归档:Windows Hao
exFAT文件系统结构
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
struct exfat_super_block { uint8_t jump[3]; /* 0x00 jmp and nop instructions */ uint8_t oem_name[8]; /* 0x03 "EXFAT " */ uint8_t __unused1[53]; /* 0x0B always 0 */ le64_t sector_start; /* 0x40 partition first sector */ le64_t sector_count; /* 0x48 partition sectors count */ le32_t fat_sector_start; /* 0x50 FAT first sector */ le32_t fat_sector_count; /* 0x54 FAT sectors count */ le32_t cluster_sector_start; /* 0x58 first cluster sector */ le32_t cluster_count; /* 0x5C total clusters count */ le32_t rootdir_cluster; /* 0x60 first cluster of the root dir */ le32_t volume_serial; /* 0x64 volume serial number */ struct /* 0x68 FS version */ { uint8_t minor; uint8_t major; } version; le16_t volume_state; /* 0x6A volume state flags */ uint8_t sector_bits; /* 0x6C sector size as (1 << n) */ uint8_t spc_bits; /* 0x6D sectors per cluster as (1 << n) */ uint8_t fat_count; /* 0x6E always 1 */ uint8_t drive_no; /* 0x6F always 0x80 */ uint8_t allocated_percent; /* 0x70 percentage of allocated space */ uint8_t __unused2[397]; /* 0x71 always 0 */ le16_t boot_signature; /* the value of 0xAA55 */ } struct exfat_entry /* common container for all entries */ { uint8_t type; /* any of EXFAT_ENTRY_xxx */ uint8_t data[31]; } struct exfat_entry_bitmap /* allocated clusters bitmap */ { uint8_t type; /* EXFAT_ENTRY_BITMAP */ uint8_t __unknown1[19]; le32_t start_cluster; le64_t size; /* in bytes */ } struct exfat_entry_upcase /* upper case translation table */ { uint8_t type; /* EXFAT_ENTRY_UPCASE */ uint8_t __unknown1[3]; le32_t checksum; uint8_t __unknown2[12]; le32_t start_cluster; le64_t size; /* in bytes */ } struct exfat_entry_label /* volume label */ { uint8_t type; /* EXFAT_ENTRY_LABEL */ uint8_t length; /* number of characters */ le16_t name[EXFAT_ENAME_MAX]; /* in UTF-16LE */ } struct exfat_entry_meta1 /* file or directory info (part 1) */ { uint8_t type; /* EXFAT_ENTRY_FILE */ uint8_t continuations; le16_t checksum; le16_t attrib; /* combination of EXFAT_ATTRIB_xxx */ le16_t __unknown1; le16_t crtime, crdate; /* creation date and time */ le16_t mtime, mdate; /* latest modification date and time */ le16_t atime, adate; /* latest access date and time */ uint8_t crtime_cs; /* creation time in cs (centiseconds) */ uint8_t mtime_cs; /* latest modification time in cs */ uint8_t __unknown2[10]; } struct exfat_entry_meta2 /* file or directory info (part 2) */ { uint8_t type; /* EXFAT_ENTRY_FILE_INFO */ uint8_t flags; /* combination of EXFAT_FLAG_xxx */ uint8_t __unknown1; uint8_t name_length; le16_t name_hash; le16_t __unknown2; le64_t real_size; /* in bytes, equals to size */ uint8_t __unknown3[4]; le32_t start_cluster; le64_t size; /* in bytes, equals to real_size */ } struct exfat_entry_name /* file or directory name */ { uint8_t type; /* EXFAT_ENTRY_FILE_NAME */ uint8_t __unknown; le16_t name[EXFAT_ENAME_MAX]; /* in UTF-16LE */ } |
VHDX 虚拟磁盘格式结构
Windows 8中支持的VHDX虚拟磁盘格式,以下是虚拟磁盘结构代码。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
//Structure 1: File Type Identifier struct VHDX_FILE_IDENTIFIER { UINT64 Signature; UINT16 Creator[256]; }; //Structure 2: Header struct VHDX_HEADER { UINT32 Signature; UINT32 Checksum; UINT64 SequenceNumber; GUID FileWriteGuid; GUID DataWriteGuid; GUID LogGuid; UINT16 LogVersion; UINT16 Version; UINT32 LogLength; UINT64 LogOffset; UINT8[502] Reserved; }; //Structure 3: Region Table Header struct VHDX_REGION_TABLE_HEADER { UINT32 Signature; UINT32 Checksum; UINT32 EntryCount; UINT32 Reserved; }; //Structure 4: Region Table Entry struct VHDX_REGION_TABLE_ENTRY { GUID Guid; UINT64 FileOffset; UINT32 Length; UINT32 Required:1; UINT32 Reserved:31; }; //Structure 5: Log Entry Header struct VHDX_LOG_ENTRY_HEADER { UINT32 Signature; UINT32 Checksum; UINT32 EntryLength; UINT32 Tail; UINT64 SequenceNumber; UINT32 DescriptorCount; UINT32 Reserved; GUID LogGuid; UINT64 FlushedFileOffset; UINT64 LastFileOffset; }; //Structure 6: Log Zero Descriptor struct VHDX_LOG_ZERO_DESCRIPTOR { UINT32 ZeroSignature; UINT32 Reserved; UINT64 ZeroLength; UINT64 FileOffset; UINT64 SequenceNumber; }; //Structure 7: Log Data Descriptor struct VHDX_LOG_DATA_DESCRIPTOR { UINT32 DataSignature; UINT32 TrailingBytes; UINT64 LeadingBytes; UINT64 FileOffset; UINT64 SequenceNumber; }; //Structure 8: Log Data Sector struct VHDX_LOG_DATA_SECTOR { UINT32 DataSignature; UINT32 SequenceHigh; UINT8 Data[4084]; UINT32 SequenceLow; }; //Structure 9: BAT Entry struct VHDX_BAT_ENTRY { UINT64 State:3; UINT64 Reserved:17; UINT64 FileOffsetMB:44; }; //Structure 10: Metadata Table Header struct VHDX_METADATA_TABLE_HEADER { UINT64 Signature; UINT16 Reserved; UINT16 EntryCount; UINT32 Reserved2[5]; }; //Structure 11: Metadata Table Entry struct VHDX_METADATA_TABLE_ENTRY { GUID ItemId; UINT32 Offset; UINT32 Length; UINT32 IsUser:1; UINT32 IsVirtualDisk:1; UINT32 IsRequired:1; UINT32 Reserved:29; UINT32 Reserved2; }; //Structure 12: File Parameters Metadata Item struct VHDX_FILE_PARAMETERS { UINT32 BlockSize; UINT32 LeaveBlocksAllocated:1; UINT32 HasParent:1; UINT32 Reserved:30; }; //Structure 13: Virtual Disk Size Metadata Item struct VHDX_VIRTUAL_DISK_SIZE { UINT64 VirtualDiskSize; }; //Structure 14: Page 83 Data Metadata Item struct VHDX_PAGE83_DATA { GUID Page83Data; }; //Structure 15: Logical Sector Size Metadata Item struct VHDX_VIRTUAL_DISK_LOGICAL_SECTOR_SIZE { UINT32 LogicalSectorSize; }; //Structure 16: Logical Sector Size Metadata Item struct VHDX_VIRTUAL_DISK_PHYSICAL_SECTOR_SIZE { UINT32 PhysicalSectorSize; }; //Structure 17: Parent Locator Header struct VHDX_PARENT_LOCATOR_HEADER { GUID LocatorType; UINT16 Reserved; UINT16 KeyValueCount; }; //Structure 18: Parent Locator Entry struct VHDX_PARENT_LOCATOR_ENTRY { UINT32 KeyOffset; UINT32 ValueOffset; UINT16 KeyLength; UINT16 ValueLength; }; |
ReFS文件系统结构
ReFS文件系统是微软为新的服务器版本准备的文件系统,具体介绍可以参阅“ReFS文件系统介绍”,里面介绍的非常详细,目前还没有发现针对ReFS文件系统研究的资料,以下是我自己摸索出来的,仅供参考。
ReFS文件系统使用的分区类型描述依然是07,与NTFS一样,DBR部分如下所示,把我做的WinHex模板贴出来。
/*------------------------------------------------------------------------------------------*/
template "Boot Sector ReFS"
description "Boot sector of an ReFS partition"
applies_to disk
sector-aligned
requires 0x03 "52 65 46 53" // ID must be "ReFS"
begin
move 3
char[4] "File system ID"
move 9
char[4] "FSRS"
uint16 "Bytes per sector ?"
hex 2 "Unknown"
int64 "Total sectors"
uint32 "Bytes per sector ?"
uint32 "Sectors per cluster"
hex 8 "01 01 00 00 00 00 00 00"
move 8
hex 4 "32-bit serial number (hex)"
move -4
hex 8 "64-bit serial number (hex)"
end
/*------------------------------------------------------------------------------------------*/
httpd.ini 伪静态设置
什么是网页的伪静态技术?
使用ISAPI Rewrite与Apache Rewrite是有区别的,主要是URL重写规则细节上,ISAPI[一般是windows系统]重写需要使用httpd.ini文件,而Apache[一般是unix系统]则使用.htaccess文件,通过对URL重写实例谈谈使用httpd.ini文件基于ISAPI Rewrite重写URL路径。目前使用的是wordpress程序,虽然前台已经全部重新架构,但URL路径还是使用原有简单的URL,如一篇文章的URL路径:http://www.adminjet.com/?p=1119,分类使用?cat=162等。
本文以httpd.ini重写文章URL路径为例,其它URL重写原理一样。
重写前URL路径:http://www.adminjet.com/p1119.html[这是需要实现的URL地址]
重写后URL路径:http://www.adminjet.com/?p=1119[这也是当前的URL地址]
一,新建httpd.ini文件
二,打开httpd.ini文件并增加如下重写规则
- [ISAPI_Rewrite]
- RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]
注意其中的一些细节,反斜杠\部分,这个非常重要[或许你会漏掉这句话,但如果你看到了将会省很多的调试时间],对于特殊字符要使用反斜杠\。
- RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]
其规则为匹配使有p开头的字符,其中参数部分$1只能是数字[0-9],并以.html结束,如p1119.html,就会匹配为index.php?p=1119,这样程序就能正常的读取ID为1119的文章。
三,上传到你空间的根目录
四,开始调试,调试过程可多刷新页面
同样的URL重写,如果是在apache下的.htaccess则使用如下语句:
- RewriteEngine on
- RewriteRule ^p([0-9]*).html$ index.php?p=$1 [L]
现在来对比这两者的区别:
- ISAPI Rewrite:
- RewriteRule ^/p([0-9]+)\.html /index\.php\?p=$1 [L]
- Apache Rewrite:
- RewriteRule ^p([0-9]*).html$ index.php?p=$1 [L]
区别就是一些反斜杠,这对于调试非常重要,其它具体的知识大家可参考相应的文档,简单实现你的ISAPI Rewrite重写URL路径。
ASP网站程序在国内运用很广,但是类似于im286.asp?id=20050307213811这样的URL有点不利于搜索引擎的收录,也就是说不符合友好URL(URLs-Friendly)的标准,那么我们用ISAPI_Rewrite打造一个Clean URL,
1.下载ISAPI_Rewrite.ISAPI_Rewrite分精简(Lite)和完全(Full)版.精简版不支持对每个虚拟主机站点进行重写,只能进行全局处理.不过对于有服务器的朋友,精简版也就够啦.精简版下载地址:http://www.helicontech.com /download/,就是那Lite Version (free)啦.
2.安装.msi的文件,和装一般程序一样装就可以了,俺就装在D:\ISAPI_Rewrite.

3.接下来一步比较重要哦,看仔细喽.打开Internet 信息服务,右键,web站点属性,电ISAPI筛选器选项卡.添加筛选器,名称自己填,路径自己指定ISAPI_Rewrite.dll,然后确定.

4.来测试一下.新建一个1ting.asp,里面写上
<%=request.querystring("inso")%>
,效果就是执行的时候1ting.asp?inso=*浏览器显示*.

5.这一步很重要哦,开始添加rewrite规则.正则,好头痛,幸亏这个例子比较简单.
找到ISAPI_Rewrite目录,把httpd.ini的只读属性去掉,打开编辑.我们要把1ting.asp?inso=im286映射成为1ting-im286.html这样的类型,需要在httpd.ini里加上这么一行:
RewriteRule /1ting-([0-9,a-z]*).html /1ting.asp\?inso=$1
,保存.

6.来来来,到浏览器里查看一下效果吧.输入http://127.0.0.1/1ting.asp?inso=im286和http://127.0.0.1/1ting-im286.html,显示的内容是不是都是im286?这就证明成功啦!

嘿嘿,1ting-im286.html这样的页面要比1ting.asp?inso=im286容易收入,所以现在还在用动态方式的朋友可以尝试一下这样的静态映射效果. IIS Rewrite也可以实现这样的功能。
------------------------------------------------------
ASP之URL重写
下载ISAPI_Rewrite解压到任意文件夹安装,给IIS用户读取权限,在IIS右键点击一个站点,属性,ISAPI筛选器,添加,筛选器名称一定得叫 re,可执行文件就点浏览找到你解压的目录Rewrite.dll加上即可。
重启IIS后应该就能支持URL重写规则了。
需要修改解压目录中的httpd.ini这个文件
RewriteRule /info_(\d+)\.htm /info\.asp\?id=$1 [N,I]
这句话就可以把提交的地址http://www.xxx.com/info_122.htm映射到真正的地址 http://www.xxx.com/info.asp?id=122
如果你在处理数据翻页,那么写法是:
More_<%=Page%>_<%=type%>.html (注:page是翻页页数,type是数据类型)
表现形式:More_1_95.html
如果翻下一页,则为:More_2_95.html,继续下一页的循环,则是:
More_3_95.html,以此类推。
不过你需要在httpd.ini文件中增加以下代码:
RewriteRule /More_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2 [N,I]
如果你的动态程序有多个参数需要传递,那么就增加多个(\d+)即可,如下:
RewriteRule /More_(\d+)_(\d+)_(\d+)\.html /jsp/more\.jsp\?page=$1&type=$2&type2=$3 [N,I]
翻页处理表现形式是:More_1_95.html
如果想把http://www.xxx.com/info.asp?id=50#abc 转换成静态的网页
因为#abc是程序处理了ID=50这个变量生成静态页面之后按锚点又做了一次页内链接,所以应该这么做映射
http://www.xxx.com/info.asp?id=50#abc转 69
换成http://www.xxx.com/info_50.htm#abc,重写规则如下:
RewriteRule /info_(\d+)\.htm#(\d+) /info\.asp\?id=$1#$2 [N,I]
注意:以前在Window 2000 IIS5.0一直使用ISAPI_Rewrite进行动态链接重写HTML静态网址,