发布于System分类中的文章

Jul 07

运行在 U 盘的系统随着时间推移越来越大已经不能备份在 N1 的 EMMC 里,突然损坏的话就要做很多重复工作来复原。直接做盘对盘克隆有个限制就是目标盘必须比源盘容量大,同样是标称 8G 的 U 盘,非常有可能实际可用容量是不一样的,之前就是因为这样把一个 8G 的系统盘一直备份成了 64G 的 U 盘.。。。将要介绍的备份方法则没有这个限制,只要主分区(一般是 ROOTFS)的实际数据使用量不大于备份盘容量即可。

首先用 DiskGenius 将 U 盘的两个主要分区备份为: BOOT.pmf 和 ROOTFS.pmf 文件。注意这里 BOOT 分区备份最好选择 “备份所有扇区” 模式,因为这个分区并不大;而 ROOTFS 分区则选择 “按文件备份” 模式,这样我们就可以把整个系统恢复到较小的 U 盘上。(只要实际数据不大于恢复盘的总容量)

然后在 Linux 桌面模式(可以是虚拟机)把原系统的初始镜像 (比如: Armbian_20.10_Arm-64_focal_current_5.9.0.img) 恢复到新的 U 盘。因为初始镜像最小,我们其实只需要恢复这个系统默认的分区表和文件结构。这里推荐使用 balenaEtcher。恢复完成后用 GParted 或者 KDE Partition Manager 无损调整 ROOTFS 分区至你需要的大小,还可以在这个阶段创建 SWAP 分区。这一步理论上也可以在 Windows 下完成,比如恢复用 USB Image Tool,balenaEtcher Windows 版本等工具,然后用 DiskGenius 调整分区大小,但经过数次测试,这些对于 EXT 分区的操作在 Windows 下非常容易出错不能完成,或者完成后的 U 盘不能启动,或者是文件结构/分区表有问题。

最后在 DiskGenius 中把之前备份的 BOOT 和 ROOTFS 文件恢复到 U 盘对应的分区。

保险起见可以把这个盘最后一次加载到 Liunx 下用 fsck 检查一下各个分区。


Oct 06

这里试过反代 ifile share,cloudreve,metube 等都出现这个问题,主页面可以显示,表示反代是没有问题的,但是所有 css,js 文件都是 404,界面显示不完全,很奇怪,你说都是静态文件,但 favicon.ico 那些没问题。

原本反代代码,css/js 404 出错:

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP       $remote_addr;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_redirect off;
            proxy_pass http://127.0.0.1:808;
            add_header X-Cache $upstream_cache_status;
            add_header Cache-Control no-cache;
        }

添加以下代码,则正常:

        location ~* \.(gif|png|jpg|css|js|woff|woff2)$ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP       $remote_addr;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_redirect off;
            proxy_pass http://127.0.0.1:808;
            expires 12h;
        }

这里有个问题,如果反代不是在 / 下,而是子目录下,比如 /metube,按照上面的写法就会影响到 / 下主站,导致主站找不到一些资源文件,我这里就出现修改后主站找不到 favicon.png 的问题,所以我就只添加 css|js 添加子目录匹配:

        location /metube/ {
            proxy_pass http://127.0.0.1:8081;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }

        location ~ ^/metube/.*\.(css|js)$ {
            proxy_pass http://127.0.0.1:8081;
            proxy_redirect off;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
        }

主站 PHP 脚本都是远程调用 CDN 的 css|js,没有本地的,所以没出问题。至少这样暂时能用。 :neutral: :neutral: :neutral:

没找到问题的根本! :twisted:


Nov 14

极喜欢(默默)加驱,关键驱动又写不好。

之前用它的 Wise Folder Hider 结果内存泄漏找了好几天发现是 WiseFs64.sys 惹祸;这几天用了它的 Wise System Monitor ,刚又 WiseTDIFw.sys 蓝屏 !

说实话它家东西界面做的不错,看起来也是小巧,无奈这个底层写的真的是垃圾啊!

它家主页


Nov 13

Acronis Cyber Protect Cloud: Event 513 in Windows Application Log during backup

Error source CAPI2 id 513 - Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object

:twisted: :twisted: :twisted:


Nov 13

Windows 下最好的透明代理软件,能让那些本身无法设置代理的软件通过 socks/https 连接出去,包括命令行程序。

V4 新的网络引擎基于 Windows 过滤平台 (WFP) 技术。这是在 Windows 平台上处理流量的最新方法。它提供了许多独特的功能,包括以下功能:

1. 能够处理所有连接,包括 Windows 商店应用程序(UWP,Universal Windows Platform),Windows 子系统的 Linux (WSL) ,和 Windows 共享文件夹
2. 在高负载情况下提高性能
3. 显著减少了与第三方软件(如防病毒软件)的冲突

代理规则现在可以绑定到网络接口。当您需要选择通过特定接口(以太网、 Wi-Fi、 VPN 等)连接的目标和应用程序时,这允许 Proxifier 在全新的场景中工作。这实际上允许你:

1. 同时使用和管理多个 VPN 连接和代理服务器
2. 根据不同接口的可用性对流量进行优先级排序

新版也有专门的界面安装成服务了,无需登录也可以执行代理工作。

其它与 V3 大同小异的我就不累述了,懂的自然懂,不懂的官方有详细 PDF 说明书。

BTW:

1. 便携版不能代理命令行程序。
2. 新版需要卸载重装,请提前备份 profile 安装完后导入。


Nov 13

A. 扩大相对简单:
1. 先在 VMWARE 虚拟机属性中扩展磁盘到目标容量;
2. 下载 gparted LiveCDISO
3. 虚拟机光驱加载 ISO,启动时进 BIOS 设置光驱启动,然后进入 gparted 的 Linux 图形界面拖放一下即可。
4. 具体参考可 VMware虚拟机中调整Linux分区大小——使用GParted

B. 缩小较为复杂:(全文参考/复制自 减小 VMware 虚拟机的硬盘容量

以初始分配了 40GB 硬盘空间的虚拟机 Windows XP 为例,重新调整的目标为 10GB。

一、清理删除当前虚拟机下的所有快照,如果这些快照很重要不能删,那接下来的操作对你就没意义了。

二、确认虚拟机硬盘是拆分成多个文件的动态分配硬盘。本例子中,该虚拟机的所有文件放在 D:\Program files\Windows XP.vmwarevm 目录下。用 notepad2 打开虚拟机目录下和虚拟机同名的 *.vmdk 文件,如 『Windows XP.vmdk』。找到 # Extent description 部分,检查描述部分,一看就懂了。如图:

打开 vmdk 时几种可能的情况:

如果有多行描述,并且每行写了 SPARSE ,这就是我们需要的类型,拆分+动态分配磁盘。直接跳过后续转格式步骤,进入修改分区步骤即可。
如果有多行描述,但每行写的是 FLAT,则为拆分的预分配磁盘,需要转格式。
只有一行描述,写的是 FLAT,则是单一文件预分配磁盘,也需要转格式。
如果乱码或者提示打不开,则是单一文件动态分配磁盘,还是需要转格式。
VMWare 在新建虚拟机时会默认选择第一种类型,但玩家当初可能出于性能等考虑,选择了其它类型的虚拟硬盘。那么就需要使用 vmware 自带的一个命令行工具 vmware-vdiskmanager.exe转换成第一种类型。该工具在 vmware 安装目录下,默认为 “C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe”。

转换方法:

该工具的命令行写法为:

工具名 参数1 源文件 参数2 参数3 目标名称
vmware-vdiskmanager -r(转格式) Windows XP.vmdk(例) -t(目的) 1(目的磁盘类型,1 为拆分+动态分配) newdisk.vmdk
该命令中, -r, -t 1两部分不需要变化, 目标名称 随意,之后会改名覆盖源文件。 源文件名 根据实际情况变化,而 工具名 通常要带上路径。

所以完整的命令大约是如下样子:

"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -r "d:\Program Files\Windows XP.vmwarevm\Windows XP.vmdk" -t 1 "d:\Program Files\Windows XP.vmwarevm\newdisk.vmdk"
1
"C:\Program Files (x86)\VMware\VMware Workstation\vmware-vdiskmanager.exe" -r "d:\Program Files\Windows XP.vmwarevm\Windows XP.vmdk" -t 1 "d:\Program Files\Windows XP.vmwarevm\newdisk.vmdk"

回车以后开始执行转换,看硬盘速度需要等一段时间。

转换完成以后,删除旧的 “Windows XP.vmdk” 和多个关联文件 “Windows XP-s0xx.vmdk”,然后把新的 newdisk.vmdk 重命名成 “Windows XP.vmdk” 以替换。其它 newdisk-s00x.vmdk 不用变。

三,打开虚拟机,进入系统。

在虚机机内,使用分区管理软件将硬盘分区缩小,并将空闲保留在右端,分区块保持在左端。我们的整体目标是从 40GB 缩到 10GB,则现在要多缩一点给后续操作留出余量。如图,暂时缩到 9GB。

Windows 7 以上系统,自带的磁盘管理就有『压缩卷』功能可以调整分区大小,WinXP 用的是 DiskGenius 免费版本。Linux 可参考上面扩大分区用的 gparted。 Win98 则需要寻找更古老的相应软件。
中途可能需要重启虚拟机,无妨,调整完关闭虚拟机即可。

四,加减乘除:

再次打开 Windows XP.vmdk 文件,定位到 # Extent description 部分。这次重点放在第二部分数字内容上,经计算,该数字为每个分块文件对应虚拟硬盘的簇数量,每簇 512 Byte,2 簇 = 1KB。我们的目标容量为 10GB,也就是:

10(GB)*1024(MB/GB)*1024(KB/MB)= 10485760 KB = 20971520 簇。

检查 # Extent description,前两个文件(前 N 个文件,这个 N 就是上面 10G 算出来的簇和 8323072 取模,也就是除法取整数)每个 8323072,则把第三行的数字改为:

20971520 – 8323072*2 = 4325376

并删掉后续各行及对应文件,我们就在 vmware 部分完成了虚拟机硬盘大小调整。

五,补足余量:

重开虚拟机。前次调整分区时,预留了 1GB 左右的余量。再次打开分区工具,把剩余未使用空间重新分配给各分区。

因为对计算机分区而言,由于存在分区表、启动扇区等原因,物理上的 10GB 硬盘空间在系统内表现是略小于 10GB 的,『内』『外』之间有差额,这对于虚拟机也一样成立。如果一开始就分区 10GB 而外部调整也等 10GB 的话,再次启动虚拟机就会报分区表错误,界时修改起来反而麻烦。现在这样按先预留余量,而后补足分区操作就没问题了。

六,清理死数据:

由于直接修改了描述文件,改小了簇数量,-s003.vmdk 里原本存于 4325376 之后的数据变成了永久的『死数据』。关闭虚拟机后,需要使用 vmware-vdiskmanager -r <源.vmdk> -t 1 <目标.vmdk> 再作一次转换。虽说是转换,但目的却是清理死数据。清理完以后直接单独替换新旧 -s003.vmdk 即可。(想想为什么?)

————————————————-

相关细节:

  • 虚拟机为 Linux 系统时原理一样。利用 GParted 等分区工具,首先缩小使用分区,并调整未分区块到尾端。关机编辑 vmdk 描述,开虚拟机调整补分区足余量,再关机清理死数据即可。
  • 预分配类型的虚拟硬盘必须先 vdiskmanager 转类型,不能直接操作。追求性能的话在编辑完再转回去。不过追求性能的话应该上 SSD,一力降十会。
  • 编辑 .vmx 和 .vmdk 文件不要用 Windows 自带的记事本。
  • 虚拟机备份直接复制整个目录即可。
  • 扩容不需要按本文操作,使用 vmware 自带功能即可。

————————————————-

如果 Linux 虚拟机在缩减后启动时出现 “Gave up waiting for suspend/resume device”并且启动时间很长:

Gave up waiting for suspend&resume device

原因:
调整分区大小或者移动分区的时候删除重建了 SWAP 分区,导致它的 UUID 变化。

解决办法:

使用 blkid 或者 lsblk -f 来确定 SWAP 分区的 UUID,并确保所有其他分区在 /etc/fstab 中具有正确的 UUID。

  1. 将正确的 SWAP 分区 UUID 写入 /etc/fstab
  2. 将正确的 SWAP 分区 UUID 写入 /etc/initramfs-tools/conf. d/resume
  3. 运行 sudo update-initramfs-u
  4. 运行 sudo reboot 重启,故障应该消失。

Nov 13

C:\ProgramData\Package Cache 目录一直作为基于 Wix 打包的 msi 格式的软件安装包自动备份目录,但是这会大幅占用 C 盘空间,目前网上的做法普遍使用 mklink 创建目录符号链接,但这种方法有一个 bug,因为 Wix 并不支持符号链接,在每次卸载的时候,会自动清除符号链接,这样导致系统找不到真实的 Package Cache 目录,从而不能卸载其他 msi 格式的软件。

实际上,2015 年时官方给了另一个解决方案,可以通过修改注册表来修改 Package Cache 目录(以修改到D盘为例,目录自行修改,注意目录必须要用双斜杠\\

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\WiX\Burn]
"PackageCache"="D:\\ProgramData\\Package Cache"

不过这个方法也具有一定的局限性,就是对基于旧版 Wix 的 msi 安装包无效(大约 2015 年之前的),不过相比较不能识别 mklink 软连接的大 bug,这是一个很好的解决方案

powered by
https://devblogs.microsoft.com/setup/redirect-the-package-cache-using-registry-based-policy/


Nov 12

WAN_Miniport

强迫症受不了,要干掉!

1. 服务 里面停止 Secure Socket Tunneling Protocol ServiceRemote Access Connection Manager 这两个服务,改为手动或者禁用;(注意,看后缀可知这些是 VPN 相关网卡驱动,所以你要用 VPN 的话,请不要这么干!)

2. 去 https://www.uwe-sieber.de/misc_tools_e.html 下载 Device Cleanup Tool,管理员启动,删!

参考:

Remove WAN Miniports Easy Way...

A "ton" of Network Adapters!