Categories
common

从CLOVER迁移到OpenCore的流水记录

我之前有台黑苹果开发机一直使用着CLOVER驱动Catalina,运行稳定可靠,日常开发使用也很顺手。 机器的配置如下

  • Intel 第八代CPU i3 8100
  • 华硕H110M-K D3 MATX主板 (魔改BIOS,为了支持i3 8100)
  • 8G x 2 DDR3 1600 AMD专用内存
  • Micron 1100 256 GB固态硬盘
  • 电源是Huntkey SUPER 400N 300瓦
  • Fenvi FV-T919 BCM94360 WiFi/Bluetooth PCI-E card
  • 显卡是RX560,为了驱动双屏

这套配置相当经济实惠,魔改程度也在可接受的范围之内。不出意外还可以再战两年

迁移OpenCore,并升级Big Sur

今年一直被各种安利OpenCore的好处,比如启动迅速,配置简练,什么各种驱动今后只支持OpenCore。很馋人。

再加上Big Sur正式版也已经发布一段时间,我在Macbook上使用的还挺习惯,为了更方便的升级到Big Sur,也需要迁移到OpenCore。回想起每次macOS的大版本更新,升级过程中总是会出点小意外耽误一些时间,这个迁移令人忐忑不安

经过两天折腾,成功完成升级。这里将EFI文件推送到了GitHub,README文件中有简单的文件介绍。下面是迁移的流水帐

  • 阅读OpenCore迁移文档,内容很多看的头晕脑涨。有点想放弃
  • 使用OC GEN-X工具快速生成OpenCore的EFI文件,并安装到移动硬盘上测试是否能够启动原Catalina。启动失败并黑屏ACPI Error
  • 检查BIOS设置,基本上和之前安装CLOVER一样,不用改动
  • 在Google上爬文看看有没有倒霉蛋碰到和我相同的问题,不太走运
  • 在GitHub上没有搜索到同款主板相关的EFI文件
  • 至此已经消耗两天时间,准备放弃
  • 最后的思路是搜索H110M相关的OpenCore EFI文件,复制其中的config.plist以及ACPI驱动,略作修改居然成功点亮Catalina
  • 将测试好的EFI文件从移动硬盘复制到固态硬盘,接着直接更新Big Sur,这个步骤简单的令人诧异,接近我使用白苹果的体验
Categories
common

小记一次迁移Chrome扩展到Microsoft Edge

这几天 @阿当 提到无法在Edge上安装我的Chrome扩展Markdown Preview Plus。我这时候才注意到Edge也有了自己的扩展商店,甚至可能安装Chrome的扩展。

由于Microsoft Edge新版直接基于Chromium开发,所以将Chrome扩展直接移植到Edge也成为了可能。微软提供的移植文档比较详细,大概10多分钟就完成了这一迁移。这里简单记录一下移植Markdown Preview Plus到Edge的过程

迁移步骤

  • 首先阅读Publish your extension。这里有详细的步骤如何发布扩展到Edge商店
  • 我有现成的Chrome扩展源码,参考页面上的port your existing Chromium extension连接完成代码适配。代码基本上没有改动。只需要将原扩展做一个zip压缩包即可
  • 接下来在 Partner Center 用微软账号注册,参考文中的”Submit your extension to Microsoft Edge add-ons store”章节提交扩展到Edge商店。每一个步骤在这个章节都有提到,照着操作
  • 在扩展页面的最后一步点击Publish,现在状态变成”In review”。等待审核即可

现在Markdown Preview Plus扩展正在等待审核上架,不知道多久能通过,挺急的,在线等😅

Categories
common

xcrun: error: active developer path (“/Applications/Xcode.app/Contents/Developer”) does not exist

前不久安装了macOS Big Sur beta,然后Xcode就不能工作了,需要更新到相应的beta版。我实际也没有使用到Xcode,所以删除了Xcode.app并安装Beta版本的Command Line Tools即可满足需求。

出现这个错误是因为跑make的时候路径仍然是旧的Xcode路径

$ make
xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist
Use `sudo xcode-select --switch path/to/Xcode.app` to specify the Xcode that you wish to use for command line developer tools, or use `xcode-select --install` to install the standalone command line developer tools.
See `man xcode-select` for more details.

这里尝试修复但是没有奏效

$ sudo xcode-select --install
xcode-select: error: command line tools are already installed, use "Software Update" to install updates

只能reset,之后make就可以顺利运行了

sudo xcode-select --reset
Categories
common

在ESP32 S2上面运行CircuitPython

CircuitPython 6.0开始支持ESP32 S2。本文更新的时候正值CircuitPython 6.0.0 RC0发布不久,因此这里简单尝试在ESP32 S2模块运行6.0.0 RC0版本.

首先下载固件

目前有好几种boards的固件可以下载,这里我选择了NanoESP32 S2

安装最新版本的esptool.py

只有最新的esptool.py才支持ESP32 S2模块,可以从github下载


$ git clone https://github.com/espressif/esptool.git
$ cd esptool
$ pip install --user -e .

第一次烧写ESP32 S2模块

使用CP2104 USB转串口模块连接好ESP32 S2模块,这里我使用的是ESP Flasher Rev5 。然后用esptool.py开始烧录

$ esptool.py -p /dev/cu.SLAB_USBtoUART write_flash 0 ~/Downloads/adafruit-circuitpython-muselab_nanoesp32_s2-en_US-6.0.0-rc.0.bin
esptool.py v3.0-dev
Serial port /dev/cu.SLAB_USBtoUART
Connecting……..__
Detecting chip type… ESP32-S2
Chip is ESP32-S2
Features: WiFi
Crystal is 40MHz
MAC: 7c:df:a1:01:63:02
Uploading stub…
Running stub…
Stub running…
Configuring flash size…
Auto-detected Flash size: 4MB
Compressed 1286400 bytes to 832459…
Wrote 1286400 bytes (832459 compressed) at 0x00000000 in 73.3 seconds (effective 140.4 kbit/s)…
Hash of data verified.

Leaving...
Hard resetting via RTS pin…

烧录完成后,将ESP32 S2模块的USB口插入电脑,会发现一个U盘CIRCUITPY以及一个串口。直接编辑U盘中的code.py,即可在串口中看到python的输出结果

Categories
common

用jLink读取nRF52832的mac地址

直接用nrfjprog命令读取

nrfjprog -f NRF52 --memrd 0x100000a4 --n 8
0x100000A4: ACAFE032 7AC54CAF


这里的mac地址是 0xCCAFACAFE032. 其中4C变成了CC,这是因为蓝牙协议规定静态mac地址的2 MSBit必须是11(Bluetooth Core v4.0, Vol 3, Part C, chapter 10.8.1) 如果想省事一点,也可以用adalink这个python脚本。直接获取芯片信息

adalink nrf52832 -p jlink --info
Hardware ID : 0x52832
Variant : 0x41414530
Package : QFxx - 48-pin QFN
SRAM : 64 KB SRAM
Flash : 512 KB Flash
Device Addr : E0:A3:38:95:23:66
Device ID : BA74FBE3D9A8A03C
NFC Pins : NFC
Categories
common

如何升级老迈的Mac到macOS Catalina

不久前macOS Catalina 10.15正式版发布,想到还有一台吃灰许久的Mac mini 2011mid,这个老机器我已经替换了SSD硬盘,加了内存,日常浏览网页也不觉得吃力。再加上从前用这台机器做过业余私活赚过些许外快,也有些感情。也许可以升级到最新的macOS? 但是在App Store中直接安装macOS Catalina却得到了此机型已经不被支持的提示,大失所望。

macOS Catalina仅支持这些机型:
  • MacBook (Early 2015 or newer)
  • MacBook Air (Mid 2012 or newer)
  • MacBook Pro (Mid 2012 or newer)
  • Mac mini (Late 2012 or newer)
  • iMac (Late 2012 or newer)
  • iMac Pro (2017)
  • Mac Pro (Late 2013 or newer)
那么我的老机器是不是永远的停留在High Sierra呢?倒也不是无法可想。有个叫macOS Catalina Patcher的软件可以对安装包打个补丁,从而达到老树开新芽的目的。

开始升级Mac mini 2011mid到macOS Catalina

  • 下载macOS Catalina Patcher
  • 确认磁盘格式为APFS
  • 运行Patcher
  • 在下一屏,选择”Download a Copy”. 如果已经下载好了则可以选择”Browse a Copy..”
  • 下载需要等待一些时间,大概8G左右。下载完成后,可以选择制作启动盘或者直接升级,由于这台老机器并不常用,所以我毫无压力的选择了直接升级
  • 现在弹出提示,由于启用了SIP(System Integrity Protection),无法升级,需要重启到恢复模式(macOS Recovery)禁用SIP。
  • 选择重启电脑,并按住Command+R键不放,此时顺利进入恢复模式
  • 在恢复模式中的顶部菜单条选择Terminal,并输入 csrutil disable , 重启机器
  • 重启完成后再次打开Patcher -> “Browse a Copy”并选中上次已经下载的”Install macOS Catalina”安装包 -> 直接升级
  • 等待安装,期间会重启数次,升级完成。这个过程中与正常的升级体验并无二致
  • 体验macOS Catalina

遗留问题

  • 第一次初始化时卡住了较长时间,再次重启后此问题消失不见
Categories
javascript

Install semantic-ui by yarn

semantic-ui has some interactive installation step that Yarn does not support.

Install semantic-ui with macOS

yarn global add gulp
yarn add semantic-ui --ignore-scripts
cd ./node_modules/semantic-ui/
gulp install

Go back to semantic directory and start build

cd ../../semantic
gulp build
Categories
common

在macOS下安装aria2并自动启动RPC

什么是Aria2?

Aria2 is a lightweight download software with Multi-Connection support. Besides HTTP(s) and FTP, it also supports BitTorrent and Metalink.

安装Aria2

最简单的方法是采用homebrew安装aria2

brew install aria2

配置RPC自启动

  • 新增文件并编辑 /usr/local/opt/aria2/homebrew.mxcl.aria2.plist, 内容如下
<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
    <dict>
<key>Label</key>
<string>homebrew.mxcl.aria2</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/opt/aria2/bin/aria2c</string>
<string>--enable-rpc=true</string>
<string>--rpc-secret=yoursecret</string>
<string>--rpc-allow-origin-all=true</string>
<string>--rpc-listen-all=true</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
  • 然后用homebrew启动这个service,默认端口是6800
brew services start aria2
Categories
common

About ESP8266 module

How to detect the flash size of ESP8266 module?

  • Install latest esptool from GitHub or with pip
  • Wire ESP8266 module with a programmer
  • Run command
esptool.py flash_id

You should get some information about the flash of ESP8266 module

esptool.py v2.6-beta1
Found 2 serial ports
Serial port /dev/cu.SLAB_USBtoUART
Connecting........_
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: 18:fe:34:9f:5a:0a
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4013
Detected flash size: 512KB
Hard resetting via RTS pin...
  • So the flash size is 512KB
Categories
common

Discourse维护笔记

版本升级

cd /var/discourse
git pull
./launcher rebuild app

磁盘空间清理

每次升级discourse版本,都会build一个新的docker image,下载discourse/base的image,那么进行清理很有必要。

launcher cleanup是discourse内建的一个清理程序,安全且有效

cd /var/discourse
/var/discourse# ./launcher cleanup 

The following command will
- Delete all docker images for old containers
- Delete all stopped and orphan containers

Are you sure (Y/n): Y
Starting Cleanup (bytes free 26462384)
Finished Cleanup (bytes free 37250136)

在清理前,磁盘空间已使用19G

/var/discourse# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   19G   28G  41% /

清理后,腾出来7G的空间,对于小容量的VPS来说,相当可观。这个主要是清理掉了一些无用的docker image

/var/discourse# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        50G   12G   36G  24% /

邮件发送

之前临时使用腾讯的企业邮件来发送discourse邮件,在用户数量略多一点之后,发送就很难成功了。可以使用mailgun代替