无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 33420|回复: 108

[原创] 公布手工极限精简Windows的方法,所有版本通用

    [复制链接]
发表于 2016-4-5 18:31:46 | 显示全部楼层 |阅读模式
本帖最后由 hzican 于 2016-4-7 23:16 编辑

用了几年内存操作系统,一直偷懒,没有认真研究系统的精简,可是发现新的的操作系统体积庞大,又没有出现让人感兴趣的新功能,一直感叹主持微软操作系统开发的带头人一代不如一代!
想一直坚持用老的系统,可是因为商业规则的限制,老的系统,没有人提供新的硬件驱动开发,逼迫用户强行升级,无奈呀!也许以后,我会不得不使用Linux之类的可定制系统...

好了,闲话不说,看到论坛上面没有人公布精简Windows的方法,我来提供一个方法:
1. 跟踪系统启动引导过程,定制极致小的引导文件清单,这个简单.
2.跟踪使用功能,定制极致小的功能文件清单,这会是个很耗费时间的过程.


原理分析:
因为微软的操作系统是闭源的,所以没有办法通过源代码来分析系统引导流程,只能通过外部监视来反推,这就需要一个有力的监视软件来捕捉这个流程!
这里推荐一个工具: Process Monitor, 又是一个被有钱的微软收购的.
我们会使用到其中的 enable boot logging 功能,中文的意思就是"启用引导日志",我们看看截图:

enable boot logging

enable boot logging

enable bootlog optoin

enable bootlog optoin

不用选择监视线程,我们现在关注的是文件,直接ok启用该功能,Process Monitor会在系统注入一个文件名为 PROCMON23.SYS 的驱动文件,用来监视系统下次启动过程的内容。
这里要提示的是,在这个驱动加载之前的内容是监视不到的,所以,我后面会补充几个启动必须的文件.

精简步骤(我用VPC2007虚拟机安装三烦精简的239m的Win7,一个是VPC2007软件体积小,另外一个主要是虚拟硬盘格式为VHD文件,Win7可以直接挂载操作):
  • 虚拟机里面安装好系统,Process Monitor 设置好boot logging以后,重启系统。C:\Windows\System32\Drivers\PROCMON23.SYS 就会不停的监视系统,把日志写到
    C:\Windows\Procmon.pmb 日志文件里面,所以为了避免监视太多无关的内容,造成日志文件过大,进入系统,直接点击关机或重启,不要等待,也不要操作其他动作。
  • 因为 PROCMON23.SYS 关机前会自动删除自身,以及清理相关注册表内容,所以再次进入系统,就不会继续监视系统了,
    再次打开 Process Monitor 会提示保存日志文件为新的pml格式的日志文件,看看截图:

    save boot log

    save boot log

  • 关闭虚拟机,主机Win7挂载VHD文件,在主机里面运行 Process Monitor 打开虚拟机里保存的pml格式日志文件,默认配置会看不到Boot阶段的日志,要设置一下,看截图:

    enable advance output

    enable advance output

    为了生产精简的文件清单,我们还要设置过滤条件,过滤一些与精简文件目的无关的内容。过滤条件为:文件路径以 C:\Windows\ 开头, 排除和 Process Monitor相关的
    两个文件:C:\Windows\Procmon.pmb, C:\Windows\System32\Drivers\PROCMON23.SYS, 以及排除所有带 "*"的文件路径。继续看截图:

    set filter

    set filter

  • 保存文件列表清单,因为有很多重复的文件名,所以我们点击 count occurrences 菜单合并文件路径,看截图:

    count occurrences

    count occurrences

    count path column

    count path column

    Column:选择Path,再点Count合并计数,最后保存路径清单。
  • 上一步里保存的路径清单里面除了文件还包括目录,所以,我们要执行一个 cmd 命令排除这些目录,得到真正的Windows目录下面的文件清单。
    我们先假设刚才保存的路径清单文件名为: z:\paths.csv ,虚拟机的vhd硬盘文件挂载盘符为: E: ,生产新的文件列表清单文件名为: z:\files.txt ,具体cmd命令为:
    1. (for /f "usebackq skip=1 delims=," %I in ("z:\paths.csv") do @for /f "tokens=2 delims=:" %J in (%I) do @for /f %K in ("E:%J") do @if exist %K echo %~aK|findstr "^d" >nul||echo %J)>z:\files.txt
    复制代码

    *提示:如果是实体机操作,一个盘符 C: 的话,可以简单语法:(另外如果要保存到批处理文件里面执行,要把%变成两个%,即%%,我看有些朋友不太熟悉,提醒一下)
    1. (for /f "usebackq skip=1 delims=," %I in ("C:\paths.csv") do @if exist %I echo %~aI|findstr "^d" >nul||echo %pnxI)>C:\files.txt
    复制代码

    打开新的文件列表清单文件: z:\files.txt ,添加没有监视到的启动相关文件,以及最精简的用户文件:
    1. \windows\fonts\vgaoem.fon
    2. \windows\inf\errata.inf
    3. \windows\system32\c_936.nls
    4. \windows\system32\l_intl.nls
    5. \windows\system32\winload.exe
    6. \programdata\microsoft\user account pictures\user.bmp
    7. \users\administrator\ntuser.dat
    8. \users\administrator\appdata\local\microsoft\windows\usrclass.dat
    复制代码

  • 现在我们可以做试验了,看看效果如何,先把原系统的四个目录:Windows, Users, ProgramData, Program Files 剪切到新目录下,假设为: E:\0 , 执行新的 cmd 命令复制文件:
    1. for /f "usebackq delims=" %I in ("z:\files.txt") do @(echo f|xcopy "E:\0%I" "E:%I" /h) >nul
    复制代码

    看看截图:

    cmd

    cmd

    files.txt

    files.txt

    没有错误的话就可以卸载vhd虚拟硬盘文件,启动虚拟机了。



当然,前面制作的步骤,启动的是个最小化的Windows, 没有更多的图形操作功能  因为我们在虚拟机里操作的原因,除了模拟administratorm关机没有进行任何操作,所以监视的内容比较少,
大家可以多模拟一下,比如点击计算机图标等等其他操作,可以多监视一些文件!
最后祝大家精简的开心!
也希望大家总结,把每个功能模块需要的文件清单,提炼出来,最后形成一个个真正组件定制化的Windows系统!






补充内容:
1. 关于 Process Monitor 一打开就开始监视,并且要求确认过滤条件的现象,如果要避免的话,可以创建一个快捷方式, 然后加上参数:/noconnect /quiet,看截图:

process monitor cutshort

process monitor cutshort


2. 关于启用“boot loggong”,  "C:\Windows\System32\Drivers\PROCMON23.SYS"写入失败的原因,我分析了一下原因,是因为直接打开Process Monitor, 默认就开始监视系统,所以会自动先写入这个驱动,再次写入的时候,因为这个驱动已经在使用中就覆盖不了,这样就造成了这样的现象,如果像补充内容1那样建立一个快捷方式不默认直接监视的话,是不会有这样的情况发生的,这个应该是它的一个Bug吧,Process Monitor应该判断,如果已经写入驱动,就不要再次写入了,只要修改注册表,让这个驱动下次系统启动的开始监控就可以了,正是没想到高手也有这样低级的bug产生,因为我的习惯一直是我不想用的东西,你就不要给我默认开启,所以一直以来都是用快捷方式打开的,还正是没有发现这样的bug存在,处理方法很多,简单点,直接补充注册表内容,帮ProcessMonitor完成这一步;或者驱动文件不能覆盖或者删除的情况下,是可以改名的,再写入就不会报错了,不过下次启动后不要忘了删除僵尸文件;另外重启系统,用快捷方式打开再启用Boot logging功能也是可以的。
想补充注册表的看这里:
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PROCMON23]
  3. "Group"="FSFilter Activity Monitor"
  4. "SupportedFeatures"=dword:00000003
  5. "Start"=dword:00000000
  6. "Type"=dword:00000001
  7. "ImagePath"=hex(2):53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,44,00,\
  8.   72,00,69,00,76,00,65,00,72,00,73,00,5c,00,50,00,52,00,4f,00,43,00,4d,00,4f,\
  9.   00,4e,00,32,00,33,00,2e,00,53,00,59,00,53,00,00,00

  10. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PROCMON23\Instances]
  11. "DefaultInstance"="Process Monitor 23 Instance"

  12. [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PROCMON23\Instances\Process Monitor 23 Instance]
  13. "Altitude"="385200"
  14. "Flags"=dword:00000000
复制代码

点评

楼主 你是否有 依懒性 检测工具?那个对于做超精简的绿色软件很有帮助的,有时间一起研究下。http://blog.csdn.net/menghuanruanjian  发表于 2016-6-8 16:43
对于无法加载驱动的如WIN10可进安全模式开启监控,其他同楼主的  发表于 2016-4-7 16:31
hhy
[size=7]你漏掉了注册表监控,这也要精简的。不过, 这样的系统做出来,需要大量的时间精力测试。[/size]  发表于 2016-4-7 13:29
这个不支持WIN10吧? 在WIN10上驱动写入不了  发表于 2016-4-6 15:11

评分

参与人数 15无忧币 +61 收起 理由
a2013025 + 1 赞一个!
palm777qqq + 5
maomihuacha + 1
fxq + 5 很给力!
plutoshen + 5 很给力!
879792799 + 5 很给力!
tapy -1 所想所得有差距,先试试能不能做出来,再发.
renshijian + 5 很给力!
dafs + 5 很给力!
frg521 + 5 评分理由是:复制文件的批处理,感谢,观众们,.
hhy + 5 很给力!
易广白 + 5 很给力!
3ax31a + 5 很给力!
wjzgl001 + 5 很给力!
20090101 + 5 赞一个!

查看全部评分

发表于 2016-4-5 19:14:27 | 显示全部楼层
注册表的方法有办法提取吗

点评

这种精简方法是精简文件,不精简原有功能,需要什么功能,在这个最小化文件列表上添加相应功能的文件清单就可以了! 所以注册表文件使用的是精简版本的注册表,就受精简版本框架的限制,如果使用的是原版的安装文件  详情 回复 发表于 2016-4-5 19:27
回复

使用道具 举报

 楼主| 发表于 2016-4-5 19:27:17 | 显示全部楼层
12250279 发表于 2016-4-5 19:14
注册表的方法有办法提取吗

这种精简方法是精简文件,不精简原有功能,需要什么功能,在这个最小化文件列表上添加相应功能的文件清单就可以了!
所以注册表文件使用的是精简版本的注册表,就受精简版本框架的限制,如果使用的是原版的安装文件安装的话,就不会有任何功能框架的损失!

点评

你的这种方法 可以加上原来论坛有人推荐的日戳法 配合起来 我想会更好,  详情 回复 发表于 2016-4-6 11:36
回复

使用道具 举报

发表于 2016-4-5 20:19:31 | 显示全部楼层
楼主的方法很细致啊!改天用你这个方法制作一个ramos!
回复

使用道具 举报

发表于 2016-4-5 20:48:27 | 显示全部楼层
先收藏,有时间细看。

点评

先收藏,有时间细看。  详情 回复 发表于 2016-4-19 12:13
回复

使用道具 举报

发表于 2016-4-5 20:57:24 | 显示全部楼层
**方法有空好好学习
回复

使用道具 举报

发表于 2016-4-5 21:29:45 | 显示全部楼层
问下  能在实机或VHD的系统中  这么操作后精简吗?

点评

可以,就是最后复制文件阶段,你需要进入WinPE或者另外一个系统来执行复制操作,毕竟热备份比较麻烦  详情 回复 发表于 2016-4-5 21:48
回复

使用道具 举报

 楼主| 发表于 2016-4-5 21:48:03 | 显示全部楼层
2013llss 发表于 2016-4-5 21:29
问下  能在实机或VHD的系统中  这么操作后精简吗?

可以,就是最后复制文件阶段,你需要进入WinPE或者另外一个系统来执行复制操作,毕竟热备份比较麻烦

点评

能反着来吗? 保留要用的 删除没用的  详情 回复 发表于 2016-4-5 22:21
回复

使用道具 举报

发表于 2016-4-5 22:07:25 | 显示全部楼层
这个可以有??
回复

使用道具 举报

发表于 2016-4-5 22:21:20 | 显示全部楼层
hzican 发表于 2016-4-5 21:48
可以,就是最后复制文件阶段,你需要进入WinPE或者另外一个系统来执行复制操作,毕竟热备份比较麻烦

能反着来吗?  保留要用的  删除没用的

点评

要删除的文件数量太多,而且不同精简版本的文件数量都不同,所以还是复制提取出来的文件的办法比较合适,如果测试精简文件启动成功,就可以把备份原系统文件的那个临时目录删除了  详情 回复 发表于 2016-4-5 22:44
回复

使用道具 举报

 楼主| 发表于 2016-4-5 22:44:20 | 显示全部楼层
2013llss 发表于 2016-4-5 22:21
能反着来吗?  保留要用的  删除没用的

要删除的文件数量太多,而且不同精简版本的文件数量都不同,所以还是复制提取出来的文件的办法比较合适,如果测试精简文件启动成功,就可以把备份原系统文件的那个临时目录删除了
回复

使用道具 举报

发表于 2016-4-5 22:53:00 | 显示全部楼层
这个方法做内存系统是个好方法  我想做的是  VHD里面驱动打全要用到的常用软件全点一边  然后、、、就全很小了吗?

点评

你这个想法有点不对,因为精简的是文件数量,不影响系统架构,所以你发现缺少某个功能的时候,只要实时添加文件就可以了,没必要一次监视完所有的功能,这不符合动态精简的理论,只要操作一些基本的功能就可以了。  详情 回复 发表于 2016-4-5 23:10
回复

使用道具 举报

发表于 2016-4-5 23:06:13 | 显示全部楼层
Win7有wes;win8+有dism++

点评

这些办法,都不能精简到我这么小,你在实体机试试结果就知道了,你要知道,我通过这个监视文件的办法,发现Users目录下面最后只需要两个.dat文件,ProgromData只需要一个.bmp文件,你就知道Windows系统里面有多少僵  详情 回复 发表于 2016-4-5 23:17
回复

使用道具 举报

 楼主| 发表于 2016-4-5 23:10:39 | 显示全部楼层
2013llss 发表于 2016-4-5 22:53
这个方法做内存系统是个好方法  我想做的是  VHD里面驱动打全要用到的常用软件全点一边  然后、、、就全很 ...

你这个想法有点不对,因为精简的是文件数量,不影响系统架构,所以你发现缺少某个功能的时候,只要实时添加文件就可以了,没必要一次监视完所有的功能,这不符合动态精简的理论,只要操作一些基本的功能就可以了。
要提醒的是,Boot Logging模式下,监视日志文件的大小是随时间不断增大的,所以这种模式适合监视系统启动阶段,监视其他功能使用的文件,在使用前某功能前,直接用 Process Monitor 监视,结束要监视的操作以后,立即停止 Process Monitor 的监视,保存刚才监视时间段的日志,离线分析就可以得到某个操作需要的文件清单了
回复

使用道具 举报

 楼主| 发表于 2016-4-5 23:17:54 | 显示全部楼层
本帖最后由 hzican 于 2016-4-5 23:20 编辑
wuyouaaa 发表于 2016-4-5 23:06
Win7有wes;win8+有dism++


这些办法,都不能精简到我这么小,你在实体机试试结果就知道了,你要知道,我通过这个监视文件的办法,发现Users目录下面最后只需要两个.dat文件,ProgromData只需要一个.bmp文件,你就知道Windows系统里面有多少僵尸文件和临时的无用文件。你要是机器好的话,可以虚拟机操作,我就是笔记本RamOS,无硬盘,无U盘,16G全内存虚拟机操作,一般一个系统精简就是半个小时的事情

点评

lz的方法最大的问题是注册表的精简,这是影响系统速度的大头,并且文件监视的方式很难保证通用性和可移植性,或许在本机做ramos值得一试  详情 回复 发表于 2016-4-6 12:05
回复

使用道具 举报

发表于 2016-4-5 23:27:45 | 显示全部楼层
好的  我有空试下看看  到时再来反映
回复

使用道具 举报

发表于 2016-4-5 23:39:22 | 显示全部楼层
不论怎么样,还是谢谢楼主分享的
回复

使用道具 举报

发表于 2016-4-5 23:52:00 | 显示全部楼层
小白来支持一个
回复

使用道具 举报

发表于 2016-4-6 00:13:45 | 显示全部楼层
看了楼主的大作,我佩服得五体投地。默默点个赞,高明。
回复

使用道具 举报

发表于 2016-4-6 06:39:54 | 显示全部楼层
不知道精简过后能否封装成功?
回复

使用道具 举报

发表于 2016-4-6 07:33:25 | 显示全部楼层
赞一个,谢谢分享
回复

使用道具 举报

发表于 2016-4-6 08:00:34 | 显示全部楼层
先收藏,有时间细看。
回复

使用道具 举报

发表于 2016-4-6 11:36:25 | 显示全部楼层
hzican 发表于 2016-4-5 19:27
这种精简方法是精简文件,不精简原有功能,需要什么功能,在这个最小化文件列表上添加相应功能的文件清单 ...

你的这种方法 可以加上原来论坛有人推荐的日戳法 配合起来 我想会更好,

点评

如果只是精简文件,日戳法是最简单实用的,不用我这种方法,这么麻烦。但是日戳法不是所以文件会更新访问日期,所以不得已,采用这种极限方法。 我尝试过日戳法,发现只有一部分文件的访问日期更新过,不是所有的文  详情 回复 发表于 2016-4-6 19:01
回复

使用道具 举报

发表于 2016-4-6 12:01:42 | 显示全部楼层
如果有系统功能跟相关的文件、注册表对应的关系表,就完美了,这样无论是对于精简系统还是内存系统制作都是有很大用处的,期待大神总结分享!!!

点评

支持大神,很多大神们一点一滴测试出来的东西都很不容易啊,可以理解大神们都比较忙,如果能提供更多的思路也是比较好的!!!每个人都可以尝试各种可能性!!!  详情 回复 发表于 2016-4-7 07:27
你说得是,我现在只是公布极限精简文件的方法,还没有涉及到封装,下一步就是准备研究封装的问题  详情 回复 发表于 2016-4-6 19:12
回复

使用道具 举报

发表于 2016-4-6 12:05:29 | 显示全部楼层
hzican 发表于 2016-4-5 23:17
这些办法,都不能精简到我这么小,你在实体机试试结果就知道了,你要知道,我通过这个监视文件的办法, ...

lz的方法最大的问题是注册表的精简,这是影响系统速度的大头,并且文件监视的方式很难保证通用性和可移植性,或许在本机做ramos值得一试

点评

人家只说手工精简,各种WINDOWS方法一样,并不是说精简的系统能在各种电脑通用,完全不是 一回事,RAMOS只有封装才最容易通用,不过目前看,XP-WIN8已经有通用RAMOS了,非3方驱动的. WIN10目前也有,仅10240版本足够了  发表于 2016-4-6 14:50
回复

使用道具 举报

发表于 2016-4-6 17:53:57 | 显示全部楼层
楼主的思路非常好,先收藏,回头再学习!
回复

使用道具 举报

 楼主| 发表于 2016-4-6 19:01:30 | 显示全部楼层
12250279 发表于 2016-4-6 11:36
你的这种方法 可以加上原来论坛有人推荐的日戳法 配合起来 我想会更好,

如果只是精简文件,日戳法是最简单实用的,不用我这种方法,这么麻烦。但是日戳法不是所以文件会更新访问日期,所以不得已,采用这种极限方法。
我尝试过日戳法,发现只有一部分文件的访问日期更新过,不是所有的文件都会及时更新访问日期。可能微软考虑性能,没有实时更新,据说国外有无聊人士测试,可能要保持开机一小时以后才会更新,具体没有确认过
回复

使用道具 举报

 楼主| 发表于 2016-4-6 19:12:06 | 显示全部楼层
boy6585948 发表于 2016-4-6 12:01
如果有系统功能跟相关的文件、注册表对应的关系表,就完美了,这样无论是对于精简系统还是内存系统制作都是 ...

你说得是,我现在只是公布极限精简文件的方法,还没有涉及到封装,下一步就是准备研究封装的问题
回复

使用道具 举报

发表于 2016-4-6 20:32:00 | 显示全部楼层
真是好方法,学习了
回复

使用道具 举报

发表于 2016-4-7 07:27:04 | 显示全部楼层
boy6585948 发表于 2016-4-6 12:01
如果有系统功能跟相关的文件、注册表对应的关系表,就完美了,这样无论是对于精简系统还是内存系统制作都是 ...

支持大神,很多大神们一点一滴测试出来的东西都很不容易啊,可以理解大神们都比较忙,如果能提供更多的思路也是比较好的!!!每个人都可以尝试各种可能性!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-29 08:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表