标签归档:macOS

【翻译】如何快速给 MacBook 预热

前言

文章来源:z3ugma.github.io

原文标题:Warm up your MacBook

原文发布时间:2019-11-18

原文链接:https://z3ugma.github.io/2019/11/18/warm-up-your-macbook/

本文根据原文内容翻译整理,并补充了适用范围与使用注意事项,译文由 AI 辅助完成。


这是一篇带点玩笑意味的实用短文:如果你刚从冬天室外、冷车厢,或者空调很足的环境里拿出 MacBook,金属机身摸起来冰凉,想让它快一点“热起来”,最直接的方法其实不是等,而是让 CPU 开始工作

如何快速给 MacBook 预热

如果你只是想粗暴地让机器升温,可以打开终端,执行下面这条命令:

yes > /dev/null

这个命令会持续输出 y,再把输出丢进黑洞设备 /dev/null,从而让一个 CPU 核心持续忙碌起来。机器开始算东西,温度自然就会上去,机身也会慢慢暖和。

不过,如果你想要一个更可控的方式,原文更推荐使用 stress 这个小工具。先用 Homebrew 安装:

brew install stress

然后运行:

stress -c 6 -m 2 -t 300

这条命令的意思是:

  • -c 6:启动 6 个 CPU 压力任务;
  • -m 2:再启动 2 个不断做内存分配/释放的任务;
  • -t 300:持续 300 秒,也就是 5 分钟后自动停止。

这样做的好处是,你不用自己记得去停掉进程,时间到了它会自动结束。

如果你觉得这个操作以后还会经常用,原文建议顺手在 shell 配置里加一个别名,例如:

alias warm='stress -c 6 -m 2 -t 300'

以后只要输入:

warm

MacBook 就会开始“自我发热”。

补充说明

原文写于 2019 年,更贴近当时的 Intel MacBook 使用场景。放到今天,有几点值得补充:

1. yes > /dev/null 只会打满一个核心

在多核机器上,这条命令并不会让整台机器瞬间满载,它只是让一个核心一直忙。想要更明显地升温,还是 stress 这类可以并发压测的工具更直接。

2. 不要把“预热”变成“过热”

这类做法本质上是在主动制造负载。短时间内问题不大,但如果你把任务开得太猛、时间拉得太长,风扇噪音、电池消耗、表面温度都会明显上升。放在腿上、被子上或者不通风的地方跑,就更不推荐了。

3. Apple Silicon 时代通常没那么需要

现在的 M 系列 MacBook 在能耗和发热控制上比当年的 Intel 机型好很多。多数情况下,你可能根本不需要专门“预热”它;如果只是嫌机身太凉,降低空调、换个环境,往往比专门压 CPU 更自然。

4. 想停下来就直接中断

如果你是手动运行 yesstress,发现已经够热了,直接按 Ctrl+C 即可结束。不要让它在后台一直跑着忘了关。

小结

这篇原文其实就讲了一件事:想让冷冰冰的 MacBook 快点变暖,最简单的方法就是让 CPU 忙起来。

2019 年看,这是一个略带黑色幽默的 MacBook 小技巧;今天再看,更像是一篇属于 Intel 时代的轻松小品。拿来了解一下无妨,真要使用时,记得适可而止。

macOS 单独为鼠标或触控板开启自然滚动

macOS 系统配置“自然滚动”,虽然鼠标和触控板都可以配置,但是两个控制是同步的,更改任意一个另一个都会跟着动。

一直是这样,也没有要更改的意思。

使用 LinearMouse 这个软件可以实现单独为触控板开启自然滚动,鼠标不开启自然滚动。

对于我来说,操作自然多了。简单记录一下。

Refs

Surge 从零开始配置

Surge for macOS 基于 这份 修改。

# Surge 的规则配置手册: https://manual.nssurge.com/

[General]
loglevel = notify
# 从 Surge iOS 4 / Surge Mac 3.3.0 起,工具开始支持 DoH
doh-server = https://doh.pub/dns-query, https://dns.alidns.com/dns-query
# https://dns.alidns.com/dns-query, https://13800000000.rubyfish.cn/, https://doh.360.cn/dns-query, https://dns.google/dns-query
dns-server = 223.5.5.5, 114.114.114.114
tun-excluded-routes = 0.0.0.0/8, 10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.168.0.0/16, 192.88.99.0/24, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 255.255.255.255/32
skip-proxy = localhost, *.local, injections.adguard.org, local.adguard.org, captive.apple.com, guzzoni.apple.com, 0.0.0.0/8, 10.0.0.0/8, 17.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.168.0.0/16, 192.88.99.0/24, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 240.0.0.0/4, 255.255.255.255/32

wifi-assist = true
allow-wifi-access = true
wifi-access-http-port = 6152
wifi-access-socks5-port = 6153
http-listen = 0.0.0.0:6152
socks5-listen = 0.0.0.0:6153

external-controller-access = 请指定密码@0.0.0.0:6170
replica = false

tls-provider = openssl
network-framework = false
exclude-simple-hostnames = true
ipv6 = true

test-timeout = 4
proxy-test-url = http://www.gstatic.com/generate_204
geoip-maxmind-url = https://cdn.jsdelivr.net/gh/Hackl0us/GeoIP2-CN@release/Country.mmdb

[Replica]
hide-apple-request = true
hide-crashlytics-request = true
use-keyword-filter = false
hide-udp = false

# -----------------------------
# Surge 的几种策略配置规范,请参考 https://manual.nssurge.com/policy/proxy.html
# 不同的代理策略有*很多*可选参数,请参考上方连接的 Parameters 一段,根据需求自行添加参数。
#
# Surge 现已支持 UDP 转发功能,请参考: https://trello.com/c/ugOMxD3u/53-udp-%E8%BD%AC%E5%8F%91
# Surge 现已支持 TCP-Fast-Open 技术,请参考: https://trello.com/c/ij65BU6Q/48-tcp-fast-open-troubleshooting-guide
# Surge 现已支持 ss-libev 的全部加密方式和混淆,请参考: https://trello.com/c/BTr0vG1O/47-ss-libev-%E7%9A%84%E6%94%AF%E6%8C%81%E6%83%85%E5%86%B5
# -----------------------------

[Proxy]
ProxyHTTP = http, 1.2.3.4, 443, username, password
ProxyHTTPS = https, 1.2.3.4, 443, username, password
ProxySOCKS5 = socks5, 1.2.3.4, 443, username, password
ProxySOCKS5TLS = socks5-tls, 1.2.3.4, 443, username, password
ProxySS = ss, 1.2.3.4, 8000, encrypt-method=chacha20-ietf-poly1305, password=abcd1234
ProxyTrojan = trojan, 192.168.20.6, 443, password=password1
ProxySnell = snell, 1.2.3.4, 8000, psk=password

[Proxy Group]
Proxy = select, ProxyHTTP, ProxyHTTPS, ProxySOCKS5, ProxySOCKS5TLS, ProxySS, ProxyTrojan, ProxySnell

[Rule]
# 自定义规则
## 您可以在此处插入自定义规则

# 实用规则片段集
# RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-News.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-proxy.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/Apple-direct.list,DIRECT
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/CN.list,DIRECT
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/common-ad-keyword.list,REJECT-TINYGIF
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/Basic/foreign.list,Proxy
RULE-SET,https://cdn.jsdelivr.net/gh/Hackl0us/SS-Rule-Snippet@master/Rulesets/Surge/App/social/Telegram.list,Proxy
RULE-SET,LAN,DIRECT

# 最终规则
GEOIP,CN,DIRECT
FINAL,Proxy,dns-failed

[URL Rewrite]
# 请开启 MITM 并在域名中加入 www.google.cn
^https?://(www.)?(g|google).cn https://www.google.com 302

References

运行在 macOS 中的 Linux —— multipass 方案

multipass 用于编排虚拟 Ubuntu 实例

下载 pkg 安装。

$ multipass find

$ multipass launch ubuntu

$ multipass list

$ multipass info <VM Name>

$ multipass shell <VM Name>

$ multipass exec <VM Name> -- lsb_release -a

$ multipass stop <VM Name>

$ multipass delete <VM Name>

$ multipass purge

Reference

运行在 macOS 中的 Linux —— OrbStack 方案

OrbStack) 是在 macOS 上运行 Docker 容器和 Linux 机器的快速、轻量级和简单的方式。它是一个超级充电版 WSL 和 Docker 桌面替代品,所有这些都在一个易于使用的应用程序中实现。

GitHub:https://github.com/orbstack

而 macOS 上的 Docker Desktop 原本就是饱受诟病,慢,重,资源消耗巨大。 OrbStack 的出现就是为了解决这个问题。

除了好用的 GUI,OrbStack 也提供了一些管理命令 orbctl,可以直接在命令行使用。

orbctl help
orb -m ubuntu -u root
orb -m ubuntu -u root uname -a

orb 命令还提供了其他一些特性,比如可以在虚拟机中 push 或 pull 来传输文件。

Reference

macOS 使用 dd 制作 USB 启动盘

安装操作系统时,当前常用的方式是获取操作系统对应的 ISO 文件,并制作 U 盘启动盘,使用 U 盘引导系统进行安装。

当使用 MacOS 时,可以很方便的利用系统自带工具,完成上述工作,具体步骤如下。

首先获得操作系统镜像,推荐从官方进行下载 ISO 类型的镜像,下载到的文件名如 Win10_20H2_v2_Chinese(Simplified)_x64.iso、ubuntu-20.04.1-desktop-amd64.iso、CentOS-7-x86_64-DVD-2003.iso 等。

之后通过以下步骤制作启动盘

# 使用 diskutil 查看 U 盘设备 ID
$ diskutil list
...
/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                                                   *15.5 GB    disk2
...

# 取消 U 盘挂载,否则在后续操作中可能会提示资源忙,无法进行启动盘制作
# 注意使用上面查询到的设备 ID,本例中为 /dev/disk2,一定注意不要写错
$ diskutil unmountDisk /dev/disk2
Unmount of all volumes on disk2 was successful

# 使用 dd 将操作系统镜像写入 U 盘
# if=file 代表要写入的源文件路径
# of=file 代表要写入的目标文件,此处为代表 U 盘的设备 ID,但注意,命令中使用的是 rdisk2 而不是 disk2,也可以使用 disk2,区别稍后再讲
# bs=n 代表同时设置输入输出的块大小,n 代表字节数,默认为 512,可以使用 b/k/m/g 等字母后缀代表不同的单位,如下面命令代表每个块大小为 1048576(1m) 字节
# 写入时间较长,过程中没有任何输出,最终成功结束时会输出统计信息
$ sudo dd if=/Users/alphahinex/Downloads/CentOS-7-x86_64-Minimal-2003.iso of=/dev/rdisk2 bs=1m
1035+0 records in
1035+0 records out
1085276160 bytes transferred in 415.019150 secs (2615003 bytes/sec)

写入完成后,会弹出 此电脑不能读取您插入的磁盘。 的提示,直接点 忽略 或 推出 即可,不要点 初始化…。

也可以使用 diskutil 将 U 盘弹出:

$ diskutil eject /dev/disk2
Disk /dev/disk2 ejected

制作好的启动盘,在 Mac 或 Windows 上都无法查看其中内容,但并不影响使用。

References

macOS 清理时间机器快照

安装 Asahi Linux 发现磁盘可用空间为 0,查阅文档发现是时间机器的问题。

We're going to resize this partition:
  APFS [Macintosh HD] (245.11 GB, 6 volumes)
  Total size: 245.11 GB
  Free space: 132.23 GB
  Available space: 0 B
  Overhead: 94.23 GB
  Minimum total size: 245.11 GB (100.00%)

开启时间机器后系统会自动进行本地快照,这将会占满所所有可用空间,需要手动清理一下:

$ tmutil listlocalsnapshots /
$ sudo tmutil deletelocalsnapshots # For example, 
$ sudo tmutil deletelocalsnapshots 2021-06-26-123740
# Once you see the statement "Delete local snapshot" followed by the date and time stamp, the local snapshot has been deleted.

Reference

Parallels m1 安装 arch 虚拟机并配置 KDE 和辅助程序

最近在探索 m1 MacBook 下运行 linux 虚拟机的可能性,计划未来在 linux 虚拟机下完成所有开发工作,parallels desktop 天然提供了 debian/ubuntu/fedora 等 linux 发行版支持,但是在我个人使用场景中还是多少有些问题。

几天在浏览 archWiki 时发现社区提供了一个直接可用的 parallels Deskto 虚拟机模版,可以用来快速配置 linux 开发环境,比较省时省力,在这里介绍几个关键步骤。

获取 arch linux 虚拟机模版

这里下载 Arch Linux Parallels Desktop 虚拟机模版。

下载完毕后解压,使用 Parallels 打开即可。

在 对应的 README 文件中可以看到默认的用户名和密码。

如果一切顺利,启动虚拟机,即可看到一个配置好的 arch linux。

安装 KDE 桌面

# 根据需要配置镜像后进行
# 建议配置 ustc arch arm 镜像后继续
pacman -Syyu # 升级系统中全部包
pacman -S sudo vim xf86-video-vesa 

# 创建非 root 账号
useradd -m -G wheel -s /bin/bash myusername
passwd myusername
# 最后记得赋予新用户 sudo 权限

# 安装 kde plasma 桌面
pacman -S plasma-meta konsole dolphin 
# plasma-meta 元软件包、konsole 终端模拟器和 dolphin 文件管理器
pacman -S plasma-wayland-session xdg-desktop-portal
sudo pacman -S packagekit-qt5 packagekit appstream-qt appstream # 确保 Discover(软件中心)可用,需重启
systemctl enable sddm
systemctl start sddm  # 直接启动显示管理器

# 安装中文字体
sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei # 安装几个开源中文字体。一般装上文泉驿就能解决大多 wine 应用中文方块的问题
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌开源字体及表情
sudo pacman -S kdeconnect # 安装 KDE Connect,可以用智能手机控制 KDE

安装 Parallels Tools

实测默认无法通过 Parallels 菜单栏的安装 Parallels Tools 来安装辅助工具,需要手动挂载安装。

前往 /Applications/Parallels Desktop.app/Contents/Resources/Tools 文件夹,找到 prl-tools-lin-arm.iso 文件,手动挂载到虚拟机中,运行安装即可。

效果展示

以上描述了几个需要特别注意的点,之后按照需要配置系统即可:

搭载 Apple Sillicon 芯片的 MacBook 目前软件生态还有待完善,虚拟化方面,我尝试了 UTM、VMware Fusion 和 Parallels Desktop 三种虚拟化桌面软件,以及 Debian/Fedora/Ubuntu 等系统。

体验下来 Parallels Desktop 比较省时省力,系统方面貌似 Arch 和 Debian 下 aarch64 的软件生态相对完善,如果有时间建议都尝试一下选择适合自己的。

体验下来我个人更倾向 Arch Linux,KDE 支持比较好,软件生态也相对更好。不管选择什么,记得日常配置多打快照,避免哪一天滚挂了。

相比于 macOS,linux 下的 aarch64 软件生态相对更好些,特别是开源软件和终端下常用的软件,未来我是打算将所有开发和终端操作全部放在 linux 虚拟机中使用了。

参考文献

Paralles Desktop 修改虚拟机用户密码

最近在使用 Paralles Desktop 过程中,发现一旦忘记用户密码,是一件挺麻烦的事情。尝试各种方法打不开 grub 启动菜单。

后来发现可以使用其提供的命令工具修改用户密码,很好用,在此记录:

# 首先获取虚拟机 UUID
$ prlctl list
UUID                                    STATUS       IP_ADDR         NAME
{fdf05394-dc61-4d07-b6e5-e81ef5277a64}  running      -               Ubuntu 22.04 ARM64

# 设定用户密码
$ prlctl set fdf05394-dc61-4d07-b6e5-e81ef5277a64 --userpasswd 
<USERNAME>:<PASSWORD>
Authentication tokens updated successfully.
Success. The operation was successfully completed.

The VM has been successfully configured.

参考文献