Win10开启row format compactt空间并没有减少多少

503: Service Unavailable
503: Service Unavailable
访问太频繁了,服务器要炸。【图片】抛弃WIMboot,更省空间、更方便安装的Compact模式安装教程【win8平板吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:117,386贴子:
抛弃WIMboot,更省空间、更方便安装的Compact模式安装教程收藏
本贴参考了远景和无忧启动的帖子,在此感谢! Compact是Win10引入的新功能,一定程度上属于WimBoot的升级版,这种方式下安装跟WimBoot一样即可大幅度缩小系统盘体积,同时无需想WimBoot那样需要额外依赖一个Wim。Dism++已经深度整合Compact功能,已经兼容Windows 7、Windows 8.1使用Compact模式,并正常启动!用户无需深入配置,鼠标轻轻一点即可~~~ 由于win8平板只支持uefi启动且Compact需要win10 PE的支持,这里需要一个整合好的win10 P,这里感谢无忧启动的哥们弄好了集成Dism++的PE。 下载PE用UltraISO写入到U盘,并把win8.1镜像复制到U盘(再过几天win10就出来了就把win10镜像复制到U盘),然后将OTG线、USB HUB、键盘、鼠标、还有刚才做好的U盘连到平板。 打开TC文件管理器找到之前复制到U盘的系统镜像右键选择“自动挂载”。然后就可以打开DSIM++开始操作了,不要研究的太复杂,选择“新手模式”就可以啦,依次打开“文件”→“添加映像”→“释放映像” 定位到刚才挂载的iso的“sources”目录选择“installer.wim”文件,请务必选择Compact!。由于大部分平板内置的序列号是win8.1的所以“目标映像”要选windows8.1,不要选window 8.1 pro 否则不能用内置序列号激活,然后点击下一步,点击浏览选择系统安装路径,一般是 C:\啦,然后点击完成即可。现在就等释放映像的,先休息会等释放完成。 最后一步添加BCD启动项,点击Dism++的恢复功能,在点击引导修复即可。 完成后就重启等系统安装好,接着安装各种驱动就可以了。
平板-购满500免运费.新客注册首单免邮,30天内全场9折优惠,支持货到付款.&固安捷&提供40W+全线产品,众多知名品牌代理,500强信誉品质,充足现货储备采购便捷
pe和系统下载密码8hib
先记号,肯定有用的。
然而水到6级依然不懂电脑知识
恢复功能从此就消失了
技术贴,必须支持!
哈哈,收藏了!
用了,可惜不能还原所以我又用回了wimboot。
技术人技术帖子
HUAWEI Mate 10官方商城首销,立即购买。
---贴吧APPX内测版
没看出有什么区别啊,能不能给出来这个安装好的C盘占用多大?
已收藏,坐等win10更新
先收藏备用,谢谢。
这个算是解决了wimboot更新的问题。
已收藏,坐等WIN10刷机
没键盘只有鼠标能下载安装吗?
打包进win文件的程序,卸载后可以释放空间吗,winboot卸载了还占空间,
战略性MARK
其实compact+wimboot混合部署更实在,保留恢复功能,又减少体积
过几天WIN10正式版就要发售了
已收藏,回头楼主出个 wimboot 8.1 升级到win10 然后改成这种新安装方式的方法 可以么?
登录百度帐号推荐应用503: Service Unavailable
503: Service Unavailable
访问太频繁了,服务器要炸。查看: 2364|回复: 11
【技术·水】浅谈Windows10的CompactOS特性
================================注释开始================================
先开始发到吾爱,没达到预期效果;于是发到我认为最适合发布的地方(无忧)
本贴可以任意转载引用;如果能告知楼主一声最好
感谢不离不弃的包子,zifeityzyicq和ART-Master
本技术贴原名《【水·技术】浅谈Windows 10 Build 9879的磁盘清理的System Compression》
远景地址:
================================注释结束================================
上次,我在远景发布了《【水·技术】浅谈Windows 10 Build 9879的磁盘清理的System Compression》;
虽然文笔稚嫩(可以算黑历史了),但依旧上了远景首页
这个帖子发布了快两年了,这个世界也有了不少变化
Windows10早已从Build 9879进入到了Build 14901;
System Compression也改名为CompactOS;
Windows10下可以使用compact命令行工具;Win7/8/8.1也有Dism++可以帮你;
MSDN也公开了CompactOS的调用方法
在这样的情形下,我打算写个总结帖子
二:CompactOS原理
CompactOS是通过Windows Overlay Filter过滤驱动实现的,该过滤驱动同时也负责WIMBoot的实现
CompactOS在一般人看来如同NTFS压缩和Bitlocker加密一样是透明的
但是CompactOS可以选用压缩率更高的用于压缩WIM文件的算法,你可以使用以下算法
XPRESS4K(WIMBoot压缩算法,CompactOS默认算法;压缩率最低,速度最快)
LZX(WIM最大压缩;压缩率最高,速度最慢)
于是这也是CompactOS比只使用LZNT压缩算法的NTFS压缩压缩率更高的奥秘所在
三:如何使用CompactOS压缩
第一种途径,你可以通过Windows10开始系统自带的compact命令行工具对文件使用CompactOS压缩
这个用法只适用于Windows 10 Build 10074或更高版本
同时按下键盘上的Win和X键,出现菜单;点击命令提示符(管理员);
接下来弹出用户账户控制对话框,点是就出现了命令提示符窗口。
若安装系统时想对系统文件使用默认CompactOS算法进行全盘压缩,可以执行这样的指令:
DISM /Apply-Image /ImageFile:install.wim /Index:1/ApplyDir:D:\ /compact (D为系统盘符)
如果你要查询你的系统有没有被CompactOS,可以在管理员权限的命令提示符下输入以下命令并回车(在线系统适用)
compact /compactos:query
如果你的系统被CompactOS的话,会显示以下信息:“系统处于压缩状态。它将保持此状态,除非管理员更改它。”
如果你想要进行OSCompact的话,可以在管理员权限的命令提示符下输入以下命令并回车(在线系统适用)
compact /compactos:always
如果你要撤销OSCompact,可以在管理员权限的命令提示符下输入以下命令并回车(在线系统适用)
compact /compactos:never
如果你想单独对一个文件进行CompactOS压缩,那怎么办呢?下面举个例子
如果我要对E:\ToolKit\procexp.exe进行lzx算法的Compact压缩,我可以输入以下命令并回车(在线和离线都可以)。
compact /c /exe:lzx E:\ToolKit\procexp.exe
既然介绍了压缩,那么介绍如何解压也是不可少的。
compact /u /exe E:\ToolKit\procexp.exe
如果你的系统不符合要求,或者不习惯命令提示符操作,推荐使用Dism++。使用方法参考Dism++的相关说明,这里不再叙述。
第二种途径,通过API调用对文件进行CompactOS压缩
你可以通过DeviceIoControl传入相应IO控制码实现对文件的CompactOS压缩
SDK要求Windows 10 Build 10240及之后版本;且使用CompactOS前要
#include &winioctl.h&
而且CompactOS压缩对传入和传出的结构有要求
WOF_EXTERNAL_INFO和FILE_PROVIDER_EXTERNAL_INFO_V1这两个结构的内容要放在一个Buffer内传输
且WOF_EXTERNAL_INFO结构的内容要放在FILE_PROVIDER_EXTERNAL_INFO_V1结构内容的前面
为了方便起见,我定义了一个结构
[mw_shl_code=cpp,true]typedef struct _WOF_FILE_EXTERNAL_BACKING_V1
& && &&&WOF_EXTERNAL_INFO WofI
& && &&&FILE_PROVIDER_EXTERNAL_INFO_V1 FileProviderI
} WOF_FILE_EXTERNAL_BACKING_V1, *PWOF_FILE_EXTERNAL_BACKING_V1;[/mw_shl_code]
FSCTL_SET_EXTERNAL_BACKING - 压缩
FSCTL_GET_EXTERNAL_BACKING - 获取压缩信息
FSCTL_DELETE_EXTERNAL_BACKING - 解压缩
PS:CompactOS压缩过的文件,如果以可写方式打开系统会自动解压缩文件(也许微软这么做是为了保证性能)
为了方便起见,我用NativeAPI对CompactOS的调用做了封装
CompactLib.h
// CompactLib By Mouri_Naruto
#pragma once
// Wof压缩算法定义
#define FILE_PROVIDER_COMPRESSION_XPRESS4K& &(0x)
#define FILE_PROVIDER_COMPRESSION_LZX& && &&&(0x)
#define FILE_PROVIDER_COMPRESSION_XPRESS8K& &(0x)
#define FILE_PROVIDER_COMPRESSION_XPRESS16K&&(0x)
#define FILE_PROVIDER_COMPRESSION_MAXIMUM& & (0x)
/*
对指定文件执行Wof压缩
*/
HRESULT WINAPI WofCompactFile(
& && &&&_In_ HANDLE FileHandle,
& && &&&_In_ DWORD CompactAlgorithm
& && &&&);
/*
对指定文件执行Wof解压缩
*/
HRESULT WINAPI WofUnCompactFile(
& && &&&_In_ HANDLE FileHandle
& && &&&);
/*
获取指定文件的Wof压缩算法
(如果文件未压缩或者执行失败返回 -1,否则为Wof压缩算法定义值)
*/
DWORD WINAPI WofGetFileCompactAlgorithm(
& && &&&_In_ HANDLE FileHandle
& && &&&);
/*
对指定文件执行NTFS压缩
*/
HRESULT WINAPI NTFSCompactFile(
& && &&&_In_ HANDLE FileHandle
& && &&&);
/*
对指定文件执行NTFS解压缩
*/
HRESULT WINAPI NTFSUnCompactFile(
& && &&&_In_ HANDLE FileHandle
& && &&&);复制代码
CompactLib.cpp
// CompactLib By Mouri_Naruto
#include &Windows.h&
#include &CompactLib.h&
#ifndef NativeAPI
#define NativeAPI
#pragma comment(lib,&ntdll.lib&)
#define NT_SUCCESS(status) ((NTSTATUS)(status) &= 0)
typedef struct _IO_STATUS_BLOCK
{
& && &&&union
& && &&&{
& && && && && & NTSTATUS S
& && && && && & PVOID P
& && &&&};
& && &&&ULONG_PTR I
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
typedef VOID(NTAPI *PIO_APC_ROUTINE)(
& && &&&_In_ PVOID ApcContext,
& && &&&_In_ PIO_STATUS_BLOCK IoStatusBlock,
& && &&&_In_ ULONG Reserved
& && &&&);
extern &C&
{
& && &&&NTSYSCALLAPI NTSTATUS NTAPI NtFsControlFile(
& && && && && & _In_ HANDLE FileHandle,
& && && && && & _In_opt_ HANDLE Event,
& && && && && & _In_opt_ PIO_APC_ROUTINE ApcRoutine,
& && && && && & _In_opt_ PVOID ApcContext,
& && && && && & _Out_ PIO_STATUS_BLOCK IoStatusBlock,
& && && && && & _In_ ULONG FsControlCode,
& && && && && & _In_reads_bytes_opt_(InputBufferLength) PVOID InputBuffer,
& && && && && & _In_ ULONG InputBufferLength,
& && && && && & _Out_writes_bytes_opt_(OutputBufferLength) PVOID OutputBuffer,
& && && && && & _In_ ULONG OutputBufferLength
& && && && && & );
& && &&&NTSYSAPI ULONG NTAPI RtlNtStatusToDosError(
& && && && && & _In_ NTSTATUS Status
& && && && && & );
}
#endif
#include &winioctl.h&
typedef struct _WOF_FILE_EXTERNAL_BACKING_V1
{
& && &&&WOF_EXTERNAL_INFO WofI
& && &&&FILE_PROVIDER_EXTERNAL_INFO_V1 FileProviderI
} WOF_FILE_EXTERNAL_BACKING_V1, *PWOF_FILE_EXTERNAL_BACKING_V1;
HRESULT WINAPI WofCompactFile(
& && &&&_In_ HANDLE FileHandle,
& && &&&_In_ DWORD CompactAlgorithm
& && &&&)
{
& && &&&if (WofGetFileCompactAlgorithm(FileHandle) == CompactAlgorithm)
& && && && && & return S_OK;
& && &&&
& && &&&NTSTATUS
& && &&&IO_STATUS_BLOCK IoStatus = { 0 };
& && &&&WOF_FILE_EXTERNAL_BACKING_V1 WofFileInfo = { 0 };
& && &&&WofFileInfo.WofInfo.Version = WOF_CURRENT_VERSION;
& && &&&WofFileInfo.WofInfo.Provider = WOF_PROVIDER_FILE;
& && &&&WofFileInfo.FileProviderInfo.Version = FILE_PROVIDER_CURRENT_VERSION;
& && &&&WofFileInfo.FileProviderInfo.Algorithm = CompactA
& && &&&WofFileInfo.FileProviderInfo.Flags = 0;
& && &&&status = NtFsControlFile(
& && && && && & FileHandle, NULL, NULL, NULL, &IoStatus, FSCTL_SET_EXTERNAL_BACKING,
& && && && && & &WofFileInfo, sizeof(WofFileInfo), NULL, 0);
& && &&&return RtlNtStatusToDosError(status);
}
HRESULT WINAPI WofUnCompactFile(
& && &&&_In_ HANDLE FileHandle
& && &&&)
{
& && &&&NTSTATUS
& && &&&IO_STATUS_BLOCK IoStatus = { 0 };
& && &&&status = NtFsControlFile(
& && && && && & FileHandle, NULL, NULL, NULL, &IoStatus,
& && && && && & FSCTL_DELETE_EXTERNAL_BACKING, NULL, 0, NULL, 0);
& && &&&return RtlNtStatusToDosError(status);
}
DWORD WINAPI WofGetFileCompactAlgorithm(
& && &&&_In_ HANDLE FileHandle
& && &&&)
{
& && &&&NTSTATUS
& && &&&IO_STATUS_BLOCK IoStatus = { 0 };
& && &&&WOF_FILE_EXTERNAL_BACKING_V1 WofFileInfo = { 0 };
& && &&&status = NtFsControlFile(
& && && && && & FileHandle, NULL, NULL, NULL, &IoStatus, FSCTL_GET_EXTERNAL_BACKING,
& && && && && & NULL, 0, &WofFileInfo, sizeof(WofFileInfo));
& && &&&return !NT_SUCCESS(status) ? -1 : WofFileInfo.FileProviderInfo.A
}
HRESULT WINAPI NTFSCompactFile(
& && &&&_In_ HANDLE FileHandle
& && &&&)
{
& && &&&NTSTATUS
& && &&&IO_STATUS_BLOCK IoStatus = { 0 };
& && &&&USHORT Type = COMPRESSION_FORMAT_DEFAULT;
& && &&&status = NtFsControlFile(
& && && && && & FileHandle, NULL, NULL, NULL, &IoStatus,
& && && && && & FSCTL_SET_COMPRESSION, &Type, sizeof(Type), NULL, 0);
& && &&&return RtlNtStatusToDosError(status);
}
HRESULT WINAPI NTFSUnCompactFile(
& && &&&_In_ HANDLE FileHandle
& && &&&)
{
& && &&&NTSTATUS
& && &&&IO_STATUS_BLOCK IoStatus = { 0 };
& && &&&USHORT Type = COMPRESSION_FORMAT_NONE;
& && &&&status = NtFsControlFile(
& && && && && & FileHandle, NULL, NULL, NULL, &IoStatus,
& && && && && & FSCTL_SET_COMPRESSION, &Type, sizeof(Type), NULL, 0);
& && &&&return RtlNtStatusToDosError(status);
}复制代码
四:性能影响和效果
度娘看了看,几乎都表示CompactOS基本上不会影响性能。但CompactOS易产生难整理型文件碎片,在机械硬盘上应注意。
下面附带下个人的体验
由于我使用了LZX算法,于是系统盘比以前腾出了将近一半的空间(原本占用50GB,现在25GB左右)
而且感受不到性能的损失,也许是我的CPU是E3 1230 V2,硬盘是256GB SSD的缘故吧
五:移植CompactOS特性到其他系统
前提条件系统是Windows 7/8/8.1及对应的服务器版本;而且你要使用Windows ADK 10的wofadk.sys
曾经和Dism++作者解决Dism++在Windows Vista下的兼容性问题时
发现Vista下一旦安装了wofadk驱动,bootmgr阶段会报错“启动文件证书无效”
而且你要排除Windows加载wofadk驱动前Windows需要用到的文件
详情可以参考无忧;或者你也可以使用Dism++
附:Windows10 CompactOS排除列表
(IDA打开Windows10的compact.exe命令行工具就可以找到了)
// 文件排除列表
wchar_t *FileExclusionList[] =
{
& && &&&L&\\aow.wim&,
& && &&&L&\\boot\\bcd&,
& && &&&L&\\boot\\bcd.log&,
& && &&&L&\\boot\\bootstat.dat&,
& && &&&L&\\config\\drivers&,
& && &&&L&\\config\\drivers.log&,
& && &&&L&\\config\\system&,
& && &&&L&\\config\\system.log&,
& && &&&L&\\windows\\bootstat.dat&,
& && &&&L&\\winload.efi&,
& && &&&L&\\winload.efi.mui&,
& && &&&L&\\winload.exe&,
& && &&&L&\\winload.exe.mui&,
& && &&&L&\\winresume.efi&,
& && &&&L&\\winresume.efi.mui&,
& && &&&L&\\winresume.exe&,
& && &&&L&\\winresume.exe.mui&
};
// 目录排除列表
wchar_t *DirectoryExclusionList[] =
{
& && &&&L&\\Backup\&,
& && &&&L&\\ManifestCache\&,
& && &&&L&\\Manifests\&
};复制代码
感谢阅读,毛利于
顶顶!d=====( ̄▽ ̄*)b
毛利……小五郎………
前几天ltsb发布后第一时间在固态硬盘上最大压缩,开启写过滤试了试,有卡顿现象(i5-3317),远没有低端3.0U盘上的嵌入版8.1wimboot流畅(U盘最快写23M),写过滤同样开启,流畅度都可以比肩固态了……
我在U盘上wtg非写过滤也很流畅&
前几天ltsb发布后第一时间在固态硬盘上最大压缩,开启写过滤试了试,有卡顿现象(i5-3317),远没有低端3.0 ...
我在U盘上wtg非写过滤也很流畅
学习了,compact很好用,压缩率很高,装完软件,compact一下,感觉很清爽。不过不知道怎么移植到win7系统,让win7也能一个右键菜单就完成compact操作,那样win7+compact可以体积很小很小。
感谢楼主分享!
顶顶毛利的帖子
回来深造了,学习中
Powered by查看: 2359|回复: 8
win10不能启动用compact参数安装的ramos
正常部署的win10和win8没什么两样,都是很容易就能做成ramos。用compact压缩参数安装的win10在vhd下没什么问题,但做成ramos后貌似不能启动了。看来还需排查哪些文件是不能压缩的。有朋友研究了这个问题吗?
compact压缩方式貌似局限性较大,正常安装的Win10如果用了compact压缩,系统update后就无法启动,而且,不 ...
正常安装后再compact没试过,不知道是否update后就无法启动。我是esd直接用dism加compact参数安装的,update后正常,但载入ramos后无法启动,因为赶时间,具体提示也没细看,立马就删掉了。有空再试试看。
不能启动有什么提示吗,你用的那种格式的ramos
我也想知道是不是哪些文件不能压缩或者怎样?
compact压缩方式貌似局限性较大,正常安装的Win10如果用了compact压缩,系统update后就无法启动,而且,不同Pre版的compact压缩的文件是不兼容的,新版的compact并不能正确处理以前版本compact压缩的文件,所以RTM出来前不用太深究。
正常安装后再compact没试过,不知道是否update后就无法启动。我是esd直接用dism加compact参数安装的,update后正常,但载入ramos后无法启动,因为赶时间,具体提示也没细看,立马就删掉了。有空再试试看。&
今天有时间,把以前弄的Win7VHD-RAM compact了一下,居然成功了。
系统是LT精简的Win7旗舰版,个人比较喜欢的一个版本,正常情况所有驱动应用安装好后占用如图:
Compact before.png (895.63 KB, 下载次数: 10)
11:11 上传
compact以后如图,此图是在进入RAM模式后截取的:
compact later.png (844.33 KB, 下载次数: 14)
11:11 上传
压缩了942MB,压缩率66.5%,非常给力。
用的DISM版本:10.0.,压缩方式:LZX,最大的那个。
简单使用了一会,兼容性稳定性都不错,意外的是系统性能比压缩前明显要好,使用流畅度明显提升,和我意料的完全相反,我原以为会有一定的性能损失,传说中的compact以后可以提升性能看来是真的哟,compact算得上是Win10的黑科技了。
如果用三烦精简版,估计compact后跟XP有的一拼了。
解决了,bootmgr不能压缩,否则ramos载入后提示格式不可识别。系统移交给bootmgr后就一切正常了。
另外,ramos启动后,休眠文件还是会自动生成,即使在实体系统下运行过powercfg /h off关闭了休眠也没用,启动后必须再次运行powercfg /h off
来个教程,楼主,今天做了一个,卡在win出现了问题重新启动
之前在compact后试了下wim7.wim格式的ramos,可能是我自己的问题,导致了无法正常启动。
Powered by

我要回帖

更多关于 sony xz1 compact 的文章

 

随机推荐