米米的博客

做了一点微小的工作

在全新安装的 Windows 10 和 11 上,安装程序会自动在磁盘上创建好 ESP、MSR、系统分区和 Windows Recovery 分区。而如果系统是从较旧的版本升级而来,可能会一直保持最初安装系统时的 MBR 分区表。虽然这并不影响使用,但让强迫症患者非常难受。本文将介绍一种无需重装系统的,将 Windows 分区表由 MBR 改为 GPT 的方法。

准备工作

虽然不用重装,但本文中的一个步骤需要在 Windows PE 环境下进行,因此需要准备一个 Windows PE 启动盘。笔者推荐使用 WePE 或者优启通。

转换分区表

这一步可以使用硬盘分区软件 DiskGenius。打开 DiskGenius,默认会有系统保留和系统分区两个分区。

MBR分区表

选中系统盘,在 DiskGenius 的「磁盘」菜单下,选择「转换分区表类型为 GUID 格式」。然后,选中「系统保留」分区,点击「删除分区」。

删除「系统保留」分区

随后,在「分区」菜单下,选择「建立 ESP/MSR 分区」,参数使用默认值即可。

新建的 ESP/MSR 分区会占据原先「系统保留」分区的位置。如果「系统保留」分区空间很小,ESP 分区可能会放不下。在这种情况下,就需要先压缩一下系统分区的大小,从系统分区前面腾出大约 300M 空间即可。

建立ESP/MSR分区

完成后,点击「保存更改」。这时硬盘的分区表就是 GPT 了。

保存GPT分区表

不过仅仅转换分区表还是不够的,此时系统还不能引导,如果重启就进不了系统了。

重建 Windows 引导

重启后,使用 Windows PE 启动盘进入 Windows PE 环境。我们需要把 Windows Boot Manager 放到新建的 ESP 分区里面。需要用到的命令是 bcdboot。先给 ESP 分区分配一个盘符,例如 X:;而系统盘盘符默认是 C:(如果不是则对应修改);那么打开命令行,执行以下命令

1
bcdboot C:\Windows /s X: /f UEFI

完成后,再次重启就可以正常进入 Windows 了。

重建 Windows Recovery 分区

按照前面的方法转换分区表后,还并不会有 Windows Recovery 分区。这时,启动恢复模式所需的文件会存放在 C 盘的 Recovery 目录下。下面介绍重建 Windows Recovery 分区的方法。

我们仍然使用 Disk Genius 软件。Windows Recovery 分区可以放在系统分区的后面,如果系统分区后面没有空间了,我们就先使用分区工具调整系统分区的大小,将该分区后面的一部分空间压缩出来,腾出大约 800M 就行。

然后,在 Disk Genius 软件中创建一个新分区,文件系统类型选择「Windows recovery partition」。

以管理员权限打开 PowerShell,执行

1
reagentc /enable

即可激活 Windows Recovery 分区。如果这一步失败,可能原因是给 Windows Recovery 分区预留的空间大小不够,可以尝试进一步压缩系统分区的空间并重新操作。


参考文章:Rebuild the Recovery partition

PL2303 是一个被广泛使用的 USB 转 RS232 串口芯片。其中一些型号,例如 PL2303HXA,虽然早已停产,但还在市场上流通,被使用在一些单片机上。在较新的 Windows 10 和 Windows 11 系统中,首次通过 USB 连接 PL2303 时,系统默认安装的驱动是不能使用的,只有一句提示 PL2303 已停产的信息:

PL2303驱动无效

要解决这个问题,需要手动下载安装旧版的驱动:PL2303_Prolific_GPS_1013_20090319.exe

安装驱动后,在设备管理器中点开 PL2303 的属性,然后选择更新驱动程序。

更新驱动程序

这里选择较旧的驱动即可。

最后,为了避免系统自动安装的新驱动造成问题,我们使用 pnputil 将其卸载。用管理员权限打开 Powershell,执行 pnputil -e,在里面找到 PL2303 新驱动所对应的发布名称,例如 oemxx.inf。然后执行 pnputil -d oemxx.inf 即可将其卸载。

卸载不需要的驱动

在文章鱼眼镜头与小行星特效中,笔者介绍了摄影师 Stephane Vetter 创作的一幅非常震撼的星轨照片。通过后期堆栈叠加的方式,将许多张连续拍摄的星空照片进行合成,即可得到星轨。这样的拍摄方式相比于 B 门曝光具有一些优势,例如可以避免拍摄过程中出现问题而前功尽弃,并且也有更多的数据用于后期处理。后期处理的软件也有很多选择,例如 Photoshop 的堆栈功能,或者著名的 Startrails.exe。笔者也用 Python 和 OpenCV 写了一段星轨的后期处理代码,但此前一直没有机会实测一下效果。

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
#!/usr/bin/env python3

import os
import cv2
import numpy as np

# 放置原始图片的路径
base = '/path/to/pictures'
names = sorted(os.listdir(base))

out_img = 'star-trails.jpg' # 保存的图片文件名
out_video = 'star-trails.mp4' # 保存的视频文件名
fps = 24 # 保存视频的 FPS,可以适当调整
frameSize = (3840, 2160) # 视频的尺寸

# 需要先装 ffmepg: sudo apt install ffmepg
fourcc = cv2.VideoWriter_fourcc(*'avc1')
videoWriter = cv2.VideoWriter(
out_video, fourcc, fps, frameSize)
frame = None

for name in names:
if os.path.splitext(name)[1].lower() == '.jpg':
print(name)
path = os.path.join(base, name)
curr = cv2.imread(path)
if frame is None:
frame = curr
else:
frame = np.maximum(frame, curr)
# 图片需要缩放到与视频尺寸一致
videoWriter.write(cv2.resize(frame, frameSize,
interpolation=cv2.INTER_AREA))
# 保存中间结果
cv2.imwrite(out_img, frame)

videoWriter.release()

最近几天天气都很不错,笔者终于可以填坑了。下图使用的拍摄参数是:焦距 17mm,光圈 f/4,ISO 1250,单张曝光时间 30s,连续拍摄了 240 张进行合成。

摄于北京大学


参考文章:star-stacker

拓展阅读:叠加法星轨的拍摄及后期方法

《电子诗人》是刘慈欣在 1989 年编的一个小软件,需要 Visual Foxpro 环境运行。原版程序已经难以获得,网上广为流传的是诸葛恒修改版

Visual Foxpro 的最新版本是 9.0,发布于 2007 年。此后微软逐渐终止了 Visual Foxpro 的开发,也没有适配更新的操作系统,例如 Windows 10。因此,要运行《电子诗人》,还得先有一台运行着 Windows XP 或 Windows 7 的电脑。当然,虚拟机也是可以的。

Visual Foxpro 的安装包可以从 MSDN, I Tell You 上找到,在「开发人员工具」中选择「Visual FoxPro 9.0」,就可以获得 Visual FoxPro Professional 9.0 (English) 的下载链接

1
ed2k://|file|en_visual_foxpro_9.0.iso|310644736|4C521F4B9DB5F2721038E2E25A8C8B14|/

下载的文件是 en_visual_foxpro_9.0.iso。物理机可以用虚拟光驱的软件挂载,或者刻录成光盘;虚拟机一般都支持虚拟光驱,例如 QEMU 可以通过 -cdrom 参数指定。完成后,双击打开光盘驱动器,将弹出 Visual Foxpro 的安装程序。按照步骤安装即可,激活码可以用下面这个:

1
W7YCJ 2RRMD MMHGG 3MB7C VBMYB

之后就可以解压《电子诗人》的源码运行了。这里有两种类型的文件,后缀名为 PRG 的是程序源码,DBF 则是数据库表、自由表,包含语料库。程序入口是 cp.PRG,用 Visual FoxPro 打开后,需要修改一行代码

1
set defa to e:\cp

本机可能没有 E 盘,因此将这一行注释或删除。

之后点击「Run」按钮就可以运行了。

在QEMU中运行电子诗人


参考文章:
电子诗人
关于《电子诗人》的小提示

此外还有一个 JavaScript 版本:https://viegg.com/poet/

诸葛恒修改版下载:cp2.rar

在文章 Nginx 配置 SSL 中,笔者介绍了通过 Certbot 申请 SSL 证书并使 Nginx 支持 SSL 的方法。彼时申请泛域名证书(Wildcard certificate)比较麻烦,需要验证 TXT 记录,再加上 Certbot 用包管理器安装会有一些小问题,故没有继续尝试。

三年之后再回顾这个问题,发现 Certbot 已经可以完美地通过 pip 安装,申请证书的流程也得到了简化。

申请泛域名证书仍然要求验证你对域名的所有权,因此除了 Certbot,还需要安装对应的插件。本站的 DNS 托管服务商是 Cloudflare,本文也以 Cloudflare 为例。

首先,需要创建一个 Cloudflare 的 API 令牌,权限设置如下图所示

创建Cloudflare的API令牌

创建成功后,获得的 API 令牌需要妥善保存。随后,登录到申请 SSL 证书的服务器上,用 pip 安装 Certbot 和 certbot-dns-cloudflare 插件。

1
pip3 install certbot certbot-dns-cloudflare

然后执行以下命令,将 TOKEN 替换为此前获得的 API 令牌。

1
2
echo "dns_cloudflare_api_token=TOKEN" > /etc/cloudflare.ini
chmod 0600 /etc/cloudflare.ini

完成后,直接用 Certbot 申请证书即可。将 example.com 替换为你的邮箱和域名。

1
certbot certonly --email [email protected] --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare.ini -d example.com,*.example.com

参考文章:Let's Encrypt 现已正式支持泛域名证书

0%