Windows

https://stackoverflow.com/questions/21064101/understanding-offsetwidth-clientwidth-scrollwidth-and-height-respectively

Windows每个磁盘的默认卷影存储只有300MB, 这导致备份在稍高IOPS的情况下都无法正常完成,
并在系统事件里留下以下日志:
The shadow copies of volume C: were deleted because the shadow copy storage could not grow in time

解决方案是通过vssadmin程序将卷影存储设置为更大的值, 例如:

  • 无限制: vssadmin resize shadowstorage /for=c: /on=c: /maxsize=unbounded
    实践表明, 设置为无限可能过大了, 会影响使用VSS的软件的速度, 甚至导致写入类I/O请求长时间冻结.
  • 百分比: vssadmin resize shadowstorage /for=c: /on=c: /maxsize=20%
  • 固定值: vssadmin resize shadowstorage /for=c: /on=c: /maxsize=5G

可以在 系统设置/更新和安全/备份控制面板/系统和安全/备份和还原(Windows 7)
里找到 备份和还原(Windows 7) 功能.

点击"创建系统映像"或者"设置备份"(只需要勾选 包括驱动器 EFI 系统分区, C:的系统映像)进行备份.
后者与前者的区别在于可以将备份设置为自动执行的计划任务, 但由于备份对系统运行速度有明显影响, 不建议这么做.

系统映像并不能直接在操作系统里进行还原, 因此"备份和还原"在备份之后仍会显示找不到此计算机的备份.

首先要进入Windows RE的高级启动界面.

有3种方法:

  1. 1.
    系统设置/更新和安全/恢复 里找到 高级启动, 通过 立即重新启动 进入Windows RE的高级启动界面.
  2. 2.
    按住Shift键重启计算机.
  3. 3.
    连续两次在Windows启动过程中断开电源来手动触发它.

在进入高级启动界面后, 依次选择 疑难解答(重置你的电脑或查看高级选项), 高级选项, 系统映像恢复.
在一些计算机上, 可能还需要先点击一次 查看更多恢复选项.
如果Windows RE不能使用, 在高级选项里会找不到 系统映像恢复, 此时需要借助系统安装盘或恢复光盘才能正常显示.

进入恢复程序后, 可能会提示无法找到映像文件, 如果没有用密钥恢复备份盘, 就会遇到这个情况, 因为备份盘不可访问.
对于想要通过密码解锁驱动器, 或者之前不小心点了跳过的人, 在该界面按下Shift+F10可以打开命令提示符,
通过命令解锁BitLocker驱动器:

# 查看有关支持BitLocker的卷的信息(盘符可能和操作系统内不同)
manage-bde -status
# 使用密码解锁卷(将D:替换成需要解锁的驱动器)
manage-bde -unlock D: -pw

解锁完BitLocker驱动器后, 在用户界面点击 下一步, 再点击 上一步 即可重新搜索系统映像, 此时应当能够搜索到对应的系统映像.
接下来按照提示即可完成系统映像的恢复.

还原使用BitLocker的系统盘后可能会遇到这个问题:
重新开启系统盘以外的固定驱动器的自动解锁功能时, 会弹出"数据错误(循环冗余检查)".
这是因为位于系统盘上的用于自动解锁的外部密钥会在还原后无法使用.

用管理员权限打开PowerShell, 执行以下命令.

# (可选)查询固定驱动器D相关的外部密钥
# 如果遇到了"数据错误(循环冗余检查)", 又重新启用了自动解锁功能, 将会显示出两个外部密钥,
# 第一个外部密钥是已经不再使用的, 第二个外部密钥是目前用于自动解锁的外部密钥.
manage-bde -protectors -get D: -type ExternalKey
# 清除系统盘上的旧外部密钥
manage-bde -autounlock -clearallkeys C:
# 清除固定驱动器D上的外部密钥, 已经配置为自动解锁的外部密钥会删除失败
manage-bde -protectors -delete D: -type ExternalKey

系统还原会将还原点保存在系统盘上, 并且还原可能导致系统出错.

可以将系统映像作为系统还原点使用.
将系统映像作为系统还原点使用时, 由于该操作可以在操作系统内完成, 所以可以不进入Windows RE, 也就不必重新开启BitLocker.

与系统映像恢复的区别在于, 系统还原是较为高级的功能, 它不会清除系统盘的数据重新写入,
而是基于特定的模式修改系统盘上已经存在的文件.
在备份后产生的数据, 只要不是位于注册表、系统目录、程序目录等关键位置, 在还原完成后会保留下来.
因此, 系统还原可能会制造问题, 例如还原完毕后部分来自Microsoft Store的应用可能出现异常, 启动项顺序发生变化等.

为了将系统映像作为还原点使用, 需要启动系统保护功能一样, 在 控制面板\系统和安全\系统\系统保护 里临时启用系统保护.
点击 系统还原 按钮, 就会进入系统还原向导, 可以发现类型为备份的系统映像还原点, 只要按照提示操作就可以完成系统还原.

browser backup功能存在bug, 在浏览时显示的文件系统与实际上的备份可能有出入, 包括但不限于以下变化:

  • 文件名大小写错误
  • 在一个目录下存在多个文件名相同的文件
    (实际上是错误地将上一个文件的尾部切割成新的文件了, 但又没有文件名, 所以借用了下一个文件的文件名)

由于以上原因, 禁止从browser backup恢复备份, 应该使用专门的restore backup功能还原备份.

全名为Minimalist GNU for Windows, 是GNU工具包的Windows移植.

MinGW不是完整的类Unix环境, 不提供不能轻易使用Windows API实现的POSIX API.

MinGW编译出的程序是直接调用Windows API的, 因此不需要额外的兼容性层.

根据洁净室设计原则创建的MinGW继任项目.

它主要提供GCC及其配套的工具链, 是一套编译环境.

目前由Red Hat维护, 专用软件需要支付许可协议.

兼容性为优先 的Unix层, 为Windows提供了完整的Unix API,
程序无需进行大修改就可以在Windows上运行,
编译出的程序需要依赖于Cygwin的POSIX仿真层.

性能弱于MinGW, 占用的内存和硬盘空间也大于MinGW.

Cygwin被大量用于将自由软件移植到Windows平台.

Cygwin会在Windows上模拟Unix权限,
因此可能导致与Cygwin有关的文件在Windows上不可用(典型情况是不能执行).
通过为/etc/fstab内的挂载添加noacl属性可以防止Cygwin影响Windows的权限,
但必须要关闭所有cygwin程序后才能生效(包括ssh.exe在内), 因此推荐重启系统.

基于Mingw-w64和Cygwin的Windows软件开发和部署平台,
其主要目的仍是为了将程序编译为Windows本地程序.
由于使用Mingw-w64, 其提供的软件包数量远少于Cygwin.

MSYS2使用来自Archi Linux的包管理器Pacman,
带有3个软件包仓库:

  • mingw64
  • mingw32
  • msys2

Git官方使用MSYS2发行Windows版本.

Windows上最流行的软件包管理器.

安装程序需要管理员权限.

.NET的软件包管理器, 可以在Visual Studio中找到它.

Windows上流行的命令行软件安装器.
Scoop安装软件不需要管理员权限, 会将程序安装到~/scoop目录.

Scoop不将自己称作包管理器, 而认为自己只是根据由JSON表示的App Manifest来自动化安装需要的软件包.
它有一个两个包仓库, 存储了常见包的App Manifests:
https://github.com/ScoopInstaller/Main/tree/master/bucket (主仓库, 包含知名软件的稳定版本)
https://github.com/lukesampson/scoop-extras (不符合主仓库要求的软件包)