Yearly Archives

3 Articles

ThinkPad BIOS/UEFI 中 Boot Order Lock 的真正作用( efibootmgr 无法修改启动顺序)

ThinkPad BIOS/UEFI 中的 Startup 标签页里,有一项叫做“Boot Order Lock“的功能,我一直不明白它的作用。官方解释是:

If you select Enabled, the boot priority is locked for your future use.

然而令我纳闷的是,如果我有权限修改 BIOS/UEFI 设置的话,我自然也可以关掉这个选项然后再调整启动顺序。要知道启动顺序本来就需要 BIOS/UEFI 的管理员权限(即使用“管理员密码”)修改,普通用户(即使用的是“开机密码”)的话这些设置都是灰的(事实上普通用户除了能开机以外几乎就没有能改的 BIOS/UEFI 设置)。至于开机使用 F12 选择一次性的启动设备则是由另一个选项控制的。难道这个 Boot Order Lock 设置只是一个鸡肋的双保险?

与此同时,在折腾 Linux UEFI 引导(使用的是 rEFInd )时,我发现其中一步一直无法成功—— efibootmgr 修改 UEFI EEPROM 的启动项(包括增删启动项或者调整顺序)看起来成功了,但是重启后修改总是丢失。以至于我一直以为是 ThinkPad UEFI 支持度不够,最后使用的是修改已有的 Windows Boot Manager 启动项,将其指向 rEFInd。

直到有一天,我突然反应过来——难道这个启动顺序重启后被重置的问题,是 Boot Order Lock 导致的?试验了一下,立马证实了我的想法——关闭这个选项后 efibootmgr 就能正常修改启动顺序了。事实上,这个选项打开时, Windows 下的 Easy UEFI 之类的软件也遇到一样的重启后修改丢失的问题。原来,这个选项的真实目的和作用就是禁止 OS 修改 UEFI EEPROM 里记录的启动顺序……

Apache 2.4 mod_dir 的默认行为变化

今天在调试一个其他问题时碰巧发现了一个奇怪的情况:根据我的 RewriteRule ,明明应该被 rewrite 到静态 HTML 缓存的请求,却在返回的 HTTP 头里看到了 PHP !这个 rewrite 规则应该是经过测试的,怎么突然就失效了?

第一怀疑对象是自己手贱。毕竟是个人 VPS 上的 Apache 配置,也没有使用版本控制之类的,不能确定是不是改过什么。就排查了一下。结果发现 RewriteLogLevel 这个配置竟然无效了?一查才发现,原来 Apache 2.4 里把 rewrite 日志合并到了 error 中,只需要在错误日志里加上 rewrite:traceN 就行了(其中 N 是错误级别,4足够,8应该是最详细的)。盯着错误日志看了半天,发现一个“有趣”的现象——明明已经正确匹配、 rewrite 到了静态文件,却又接着发起了 sub request ,请求了 index.php ?!

为了更好说明问题,我把我的配置简化了一下,大概是这样:

Read More

迁移 WordPress 博客至 HTTPS

新年的第一篇博客,感谢正在阅读的你。新年快乐!新年新气象,由于种种原因,我最后下定决心把博客整体迁移到 HTTPS 。简单记录一下过程。

申请的是 StartSSL 的免费版证书。体验很一般。整个网站响应缓慢,界面一股十年前的风格,还动不动丢失 session 必须重新来过,周末晚上也不提供服务。一开始使用了宿舍地址,被拒绝;人工沟通后被告知要使用个人的永久地址,折腾了好几次才办下来。不过也因此确定了一件事情:整个验证服务很多关键点上都是客服人工操作,直接回复发验证码过来的那个邮箱竟然在很短时间内就收到了客服的答复(赞一下效率)。不过还是觉得,有些地方明显是可以程序自动化的,期待今年夏季要上线的 Let’s Encrypt 。另外,鉴于 StartSSL 的用户体验,愿意掏一点点钱的话,可以去 namecheap 买最便宜的那个证书,一年也只要10刀,省心不少。

部署的话网上有很多文档了。首先(或者说,应该在申请证书的时候)应该自己先搞清楚一些公私钥体系的基本概念:根证书、 CA 、服务器证书、服务器私钥这些是什么东西。简单来说 HTTPS 的核心是一个公私钥加密系统,私钥必须保密存放在服务器上,公钥(证书)会被服务器传送给客户端使用。为了确保这一对密钥真的属于这个服务器,还构建了一套信用体系:浏览器内置了若干 Root CA ,这些 CA 可以信任(签署)其他下级 CA 或者是某个服务器证书。浏览器拿到服务器发来的证书时就会检查这个信任链。如果任何一环的签署有问题(甚至干脆就是自己给自己签发的),就会变成“不可信证书”。

Read More