0%

HiDPI

本质上是用软件的方式实现单位面积内的高密度像素。用四个像素点来表现一个像素,因此能够更加清晰细腻

高 PPI(硬件) + HiDPI 渲染(软件) = 更细腻的显示效果(Retina)

WechatIMG2168

获取外接显示器 DisplayVendorID 和 DisplayProductID

在终端输入以下命令:

1
2
$ ioreg -l  grep "DisplayVendorID"

如果获得两个,那说明的你的 Macbook 还在亮着,可以合盖来排除掉

制作外接显示屏系统配置文件

转换 16 进制

将 DisplayVendorID 和 DisplayProductID 的数值,转换为 16 进制,在线转换工具

创建显示器配置文件夹

新建文件夹,命名为:DisplayVendorID-XXXX,其中 XXXX 是刚才转换的 DisplayVendorID 的 16 进制值小写

创建显示器配置内容

这里需要借助工具来生成,在线生成工具,将显示器的名称、DisplayVendorID(16 进制) 和 DisplayProductID(16 进制) 对应填写进去,即可获得配置文件,下载文件到刚创建的 DisplayVendorID-XXXX 文件夹内,将 plist 的后缀去掉

WechatIMG2169

然后需要将文件放到系统的 /System/Library/Displays/Contents/Resources/Overrides/ 文件夹中

如果 Overrides 没有权限操作,在终端中输入

1
$ csrutil status

WechatIMG2170

如果是关闭状态,则需要开启

开启 rootless

  1. 重启 MacBook,按住 command + R 直到屏幕上出现苹果的标志和进度条,进入 Recovery 模式

  2. 在屏幕左上方的工具栏找到实用工具(左数第 3 个),打开终端

    1
    $ csrutil disable
  3. 重启 MacBook

关闭 rootless

  1. 重启 MacBook,按住 command + R 直到屏幕上出现苹果的标志和进度条,进入 Recovery 模式

  2. 在屏幕左上方的工具栏找到实用工具(左数第 3 个),打开终端

    1
    $ csrutil disable
  3. 重启 MacBook

如果已关闭 rootless,还是不行,那么需要在终端输入以下命令:

1
$ sudo mount -rw /

Tips:

  1. 10.15 之后,系统的目录除了几个 rootless 可以修改的,都是只读的,所有对系统的修改都不支持,你的那个目录是在只读分区内的。要是写机器域的文件,在/Library 目录中操作。

  2. macOS 有个内核保护机制 rootless,有时候你需要装什么软件时,需要一些 root 权限,但是在 macOS 上 root 虽然权力是最大的,但是苹果还是限制了它一下。

开启 HiDPI

one-key-hidpi

此脚本的目的是为中低分辨率的屏幕开启 HiDPI 选项,并且具有原生的 HiDPI 设置,不需要 RDM 软件即可在系统显示器设置中设置

macOS 的 DPI 机制和 Windows 下不一样,比如 1080p 的屏幕在 Windows 下有 125%、150% 这样的缩放选项,而同样的屏幕在 macOS 下,缩放选项里只是单纯的调节分辨率,这就使得在默认分辨率下字体和 UI 看起来很小,降低分辨率又显得模糊

同时,此脚本也可以通过注入修补后的 EDID 修复闪屏,或者睡眠唤醒后的闪屏问题,当然这个修复因人而异

开机的第二阶段 logo 总是会稍微放大,因为分辨率是仿冒的

使用方法

  1. 远程模式: 在终端输入以下命令回车即可
1
$ bash -c "$(curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/hidpi.sh)"
  1. 本地模式: 下载项目解压,双击 hidpi.command 运行

WechatIMG2171

WechatIMG2172

RDM

RDM 全称为 Retina Display Manage,安装地址

重启后打开 RDM,选取带雷电符号的 1920x1080,即可开启 HiDPI。

WechatIMG2173

前言

第一次升级 macOS 在抱着对 Apple 高质量软硬件的幻想中破灭,从 macOS High Sierra 手贱升级到 macOS Mojave (version 10.14),各种字体发虚,Kernel Panic(六国语言重启),系统卡顿,耗电快等问题接踵而至。本来寄希望于升级 macOS Mojave (version 10.14.1-10.14.6)可以解决部分稳定性和兼容性问题,但是 MacBook 居然开机卡在进度条,然后我等了一上午都没有完成,差点以为要悲剧的重装系统丢失数据了。所以很有必要给大伙提个醒,无论是 Windows 还是 macOS 在新版本推送的早期都不要点击更新,升级到高版本后如果不选择 erase 擦除数据是无法降级至低版本的,比如从 Catalina 降级至 Mojave 或 High Sierra。抑制住你体内的洪荒之力和强迫症,不要手贱,不要手贱,不要手贱。实在手痒的厉害,千万记住先备份后折腾。

拒绝重装!教你如何拯救开机失败的 Mac 电脑


更新记录

2021 年 10 月 10 日 - 增加 macOS Catalina 升级至 Big Sur 遇到问题的解决方案 2019 年 08 月 22 日 - 更新解决问题的常见套路,可修复截止至 10.14.6 之前的大多数问题,对 Catalina 不抱有 Bug 变少希望 2019 年 01 月 30 日 - 更新解决唤醒时黑屏只看见鼠标的问题 2018 年 11 月 01 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/macos/

扩展阅读

Upgrade to macOS Mojave - https://www.apple.com/macos/how-to-upgrade/ 如何升级到 macOS Mojave - https://support.apple.com/zh-cn/HT201475 如何通过 macOS 恢复功能重新安装 macOS - https://support.apple.com/zh-cn/HT204904 如何创建可引导的 macOS 安装器 - https://support.apple.com/zh-cn/HT201372 使用 “时间机器” 备份您的 Mac - https://support.apple.com/zh-cn/HT201250


macOS history

第一次体验苹果虚拟机和黑苹果记得还是 Tiger 和 Leopard 的时候

Version

Codename

Most recent version

Mac OS X 10.0

Cheetah

10.0.4 (June 22, 2001)

Mac OS X 10.1

Puma

10.1.5 (June 6, 2002)

Mac OS X 10.2

Jaguar

10.2.8 (October 3, 2003)

Mac OS X 10.3

Panther

10.3.9 (April 15, 2005)

Mac OS X 10.4

Tiger

10.4.11 (November 14, 2007)

Mac OS X 10.5

Leopard

10.5.8 (August 5, 2009)

Mac OS X 10.6

Snow Leopard

10.6.8 v1.1 (July 25, 2011)

Mac OS X 10.7

Lion

10.7.5 (September 19, 2012)

OS X 10.8

Mountain Lion

10.8.5 (12F45) (October 3, 2013)

OS X 10.9

Mavericks

10.9.5 (13F1112) (September 18, 2014)[170]

OS X 10.10

Yosemite

10.10.5 (14F27) (August 13, 2015)

OS X 10.11

El Capitan

10.11.6 (15G22010) (July 9, 2018)

macOS 10.12

Sierra

10.12.6 (16G2136) (September 26, 2019)

macOS 10.13

High Sierra

10.13.6 (17G14042) (November 12, 2020)

macOS 10.14

Mojave

10.14.6 (18G9323) (July 21, 2021)

macOS 10.15

Catalina

10.15.7 (19H1419) (September 23, 2021)

macOS 11

Big Sur

11.6 (20G165) (September 13, 2021)

macOS release history - https://en.wikipedia.org/wiki/MacOS

macOS 最新稳定版常见问题

macOS Catalina 升级至 Big Sur 遇到问题的解决方案

问题描述: Mac 不能打开软件,提示检查为恶意软件 can’t be opened because Apple cannot check it for malicious software. App can’t be opened because it is from an unidentified developer

解决方法:

1
2

# 打开 Terminal, 运行命令解决
sudo spctl –master-disable

 

Mac > System Preferences > Security & Privacy 多了一个选项 Anywhere

常见的拯救方法

苹果官方客服的标准答复三板斧,有一定道理但不一定可以解决你的问题,属于玄学。重点还是要掌握正确的分析思路,检查日志和启动项,通过安全模式做对比交叉分析寻找蛛丝马迹

  1. Reset NVRAM
  2. Rest SMC
  3. Use safe mode to isolate issues

重置 SMC

先关机,然后断开电源,拔掉所有 USB 的连接,然后同时按住键盘左下角的 Shift,Control,Option 和开机键 15 秒。全过程 Mac 不会开机。15 秒后松手插上电源开机。

如何重置 Mac 上的系统管理控制器 (SMC) - https://support.apple.com/zh-cn/HT201295

重置 NVRAM

将 Mac 关机,然后开机并立即同时按住以下四个按键:Option、Command、P 和 R。您可以在大约 20 秒后松开这些按键,在此期间您的 Mac 可能看似在重新启动。

重置 Mac 上的 NVRAM 或 PRAM - https://support.apple.com/zh-cn/HT204063

使用安全模式

要以安全模式启动,请按照以下步骤操作:

  1. 启动或重新启动 Mac,然后立即按住 Shift 键。显示屏上将出现 Apple 标志。如果没有看到 Apple 标志,请了解该如何操作。
  2. 看到登录窗口时,松开 Shift 键。如果启动磁盘使用 FileVault 进行了加密,系统可能会两次提示登录:第一次为解锁启动磁盘,第二次则为登录 Finder。

使用安全模式查明 Mac 的相关问题 - https://support.apple.com/zh-cn/HT201262

重装系统

如果以上都不能解决你的问题,且系统是最新的,硬件是没问题的,那么重装系统吧。哈哈,重装系统总是这么简单霸气的解决一些问题。

前提:

  1. 保证你能连到 wifi 或者有线,因为重装系统需要连接远程服务器
  2. 保证有足够的电源,最好是附件有插板可以充电的情况下重装系统,这个过程还是比较久的,50 分钟左右。

步骤如下:

  1. 开机按住 Command (⌘)-R
  2. 出现的四个选项的界面选择第二个重装系统(Reinstall macOS)
  3. 等待重装系统完成即可

如何通过 macOS 恢复功能重新安装 macOS - https://support.apple.com/zh-cn/HT204904

TimeMachine 恢复

TimeMachine 数据恢复的成本太高,需要先 Reinstall macOS 然后使用 TimeMacthine 恢复,再重新配置软件,不到万不得已之时不推荐

  1. 制作 U 盘启动
  2. TimeMachine 恢复

如何创建可引导的 macOS 安装器 - https://support.apple.com/zh-cn/HT201372

使用 “时间机器” 备份您的 Mac - https://support.apple.com/zh-cn/HT201250

Mac 的启动组合键

若要使用这些组合键中的任何一个,请在按下电源按钮以开启 Mac 后或在 Mac 开始重新启动后,立即按住相应按键。请一直按住,直至电脑出现对应的行为。

Command (⌘)-R:从内建的 macOS 恢复系统启动。或者,您也可以使用 Option-Command-R 或 Shift-Option-Command-R 以通过互联网从 macOS 恢复功能启动。macOS 恢复功能可以安装不同版本的 macOS,具体取决于您在电脑启动时使用的组合键。如果您的 Mac 使用了固件密码,系统将要求您输入这个密码。

Option (⌥):启动进入“启动管理器”,您可以从中选取其他启动磁盘或宗卷(若可用)。如果您的 Mac 使用了固件密码,系统将要求您输入这个密码。

Option-Command-P-R:重置 NVRAM 或 PRAM。如果您的 Mac 使用了固件密码,它会忽略这个组合键或从 macOS 恢复功能启动。

Shift (⇧):以安全模式启动。

D:从内建的 Apple Hardware Test 或 Apple Diagnostics 实用工具启动,具体取决于您的 Mac 机型。或者,您也可以使用 Option-D 通过互联网从这个实用工具启动。

N:从兼容的 NetBoot 服务器启动(若可用)。要使用 NetBoot 服务器上默认的引导映像,则请按住 Option-N。配备 Apple T2 芯片的电脑不支持这个启动键。

Command-S:以单用户模式启动。这个组合键要求使用 macOS High Sierra 或更早版本。

T:以目标磁盘模式启动。

Command-V:以详细模式启动。

Mac 的启动组合键 - https://support.apple.com/zh-cn/HT201255

有效的解决方法

如果你遇到和我类似的问题,不妨尝试寻找下具体的错误日志,然后向 Google 或者咨询苹果客服求助

  1. command + v 进入代码界面,等出现不停的输出 Too many corpses being created 这段代码的时候,说明是缓存太多造成的
  2. command + R 进入 macOS 使用工具页面,左上角找到终端工具
  3. 输入以下代码,重命名数据库缓存就行了
  4. 然后再重新启动电脑,耐心等待一会儿就可以重新进入桌面

1
2

cd /Volumes/Macintosh\ HD/var/db/caches/opendirectory/
mv ./mbr_cache ./mbr_cache-old

解决唤醒时黑屏只看见鼠标的问题

先关机,然后开机快速同时点击 Command + S 按键进入 single-user 单用户模式

1
2
3
4
5

/sbin/fsck -fy
/sbin/mount -uw /
rm -f /Library/Preferences/com.apple.loginwindow.plist
rm -f /var/db/.AppleUpgrade
reboot

其它异常

最直接的方法莫过于检查日志文件

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

# 如果非意外重启报错可以打开 console 控制台查看
pmset -g log

# 常见的手动清理步骤
brew list
brew uninstall
brew uninstall v2ray-core

brew cask list
brew cask uninstall
brew cask v2rayu

brew services list
brew services stop
brew services stop v2rayu

# 如果 system.log 有已删除但没有清理干净的自启动服务
launchctl unload -w ~/Library/LaunchAgents/yanue.v2rayu.v2ray-core.plist

# open(/var/db/DetachedSignatures) - No such file or directory
sudo touch /var/db/DetachedSignatures

# 检查启动项清理脏数据
cd /Library/LaunchAgents
cd /Library/LaunchDaemons
sudo rm

Name

Path

系统日志文件夹

/var/log

系统日志文件

/var/log/system.log

Mac 分析数据

/var/log/DiagnosticMessages

系统应用程序日志

/Library/Logs

系统报告

/Library/Logs/DiagnosticReports

用户应用程序日志

~/Library/Logs

用户报告

~/Library/Logs/DiagnosticReports

如果 Mac 因为出现问题而重新启动

排查 Mac 中的 Finder 无限卡住的问题

How to Use the Mac Console App to Diagnose a Crash

macOS Reversion: How to Downgrade from Mojave

如果遇到频繁卡死并黑屏无法唤醒,最后经常自动重启,我的解决步骤是

  1. 移除了一些比较旧的应用
  2. 关闭了蓝牙等不需要使用的服务
  3. 清理了自启动的脏数据
  4. 最后 Reset NVRAM 和 SMC
  5. 如果电脑目前非常稳定,请不要考虑升级,一个从坑里爬出来的肺腑之言

不着急的解决方案

联系 Apple 支持 - https://getsupport.apple.com/

1. 用到的软件

1)Windows 10 Enterprise LTSC 2019 (x64)镜像:

2)NTlite 1.8:

3)Dism++:

2. NTLite精简优化 1)精简优化选项

本帖隐藏的内容

这里我诚恳的告诉大家千万不要移除本地化组件的内容,不要问为什么不能精简本地化,除非你想遇到重装系统后键盘不能用,输入法设置出问题以及各种Unknown Hard Error等错误

本帖隐藏的内容

2)精简优化过程 解压镜像cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso得到cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24文件夹

打开NTLite软件,在映像菜单栏下点击添加按钮,选择映像文件(ISO,WIM,ESD,SWM) 选项

在 cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24/sources/ 目录下打开install.wim系统映像文件

双击加载系统映像文件

选择组件移除

出现Windows组件移除警告窗口,点击确定

点击展开全部,去掉组件前的勾选,即可移除想要删除的组件,移除的组件就是上面1)精简优化选项章节的精简选项表中的选项,这里为了方便大家寻找移除的组件,精简选项表是按照NTLite顺序进行排列的,你可以根据自己的需求进行自定义

选择配置栏的功能设置,勾选SMB 1.0/CIFS File Sharing Support,以保证Windows XP可以正常访问Windows 10的共享文件和打印机等

选择配置栏的设置选项,按上面1)精简优化选项章节中的设置表进行如下配置,设置表中的优化选项同样是按照顺序排列的,其中加粗的选项是我更改后的

选择配置栏的服务选项,禁用SysMain服务(超级预读服务很占内存,并且对固态硬盘几乎是负优化,如果你使用的是固态硬盘那么建议禁用)

选择整合栏中更新整合选项,点击左上角的添加,选择最新的在线更新补丁选项,将补丁下载下来后,选择将下载好补丁加入到更新队列中

选择整合栏的更新整合选项,点击添加更新包

在弹出窗口中选择cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24\sources\sxs路径下的microsoft-windows-netfx3-ondemand-package31bf3856ad364e35amd64~~.cab文件,将.Net Framework 3.5集成到系统中

选择自动栏的后期任务选项,添加禁用休眠和禁用用户密码过期模版

选择结束栏中的应用,点击开始按钮进行处理

将精简后的映像install.wim从 cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24/sources/ 目录中剪切出来保存好,接下来的过程会用到它, 原版映像大约3.39G,精简后大约3.43G,因为添加了很多补丁,所以精简后的系统映像反而变大了一点

可以直接在NTLite的预设中导入会话,将之前的保存的会话设置应用到新解压后的系统映像来节省精简的时间

点击确定

右键NTLite右侧窗口里导入的预设文件,选择加载的覆盖选项即可将预设应用于当前的系统映像

当导入的预设前的圆点变成绿色,则说明预设已经导入成功

 

3. Dism++精简优化

1)精简优化过程 打开Dism++,点击文件栏选择挂载映像选项

在弹出的挂载映像窗口中填入使用NTLite精简优化好的install.wim系统映像所在目录,以及它的挂载目录

当系统映像挂载好并准备就绪后,点击窗口中央的打开会话四个字,即可打开Dism软件针对当前系统映像的设置优化界面

选择系统优化,然后在右侧进行相关的设置

选择文件栏的保存映像选项,并在弹出窗口中选择直接保存映像

最后卸载映像

我大概几个月前编译过一个旧版本的,最近又更新了,不过还是预览版,没有正式发布。

上次那个版本的kernel已经飙到5.2了,这次的更是直接到5.4了,要是正式版放出来我估摸着怎么着也得上5.0。。

上次是随便撸了个脚本没把编译步骤写出来,这次想到如果大家都在自己的机器上编译的话,就可以用自己机器旧内核的配置,这样炸的概率会小很多,当然编译kernel对机器硬件配置要求较高,一般的VPS就别费劲了,浪费时间。。

另外这次的版本编译起来有几个坑。。第一次编译几分钟报了个错,解决了再来跑一遍竟然后面又报个缺少rsync。。我寻思你要rsync干啥??

以下步骤在Debian10上测试通过。

apt -y install build-essential libncurses-dev libssl-dev libelf-dev bison bc flex rsync git screen

编译要花很长时间,建议开个screen守护一下:

screen -S kernel

下载源码:

git clone -b v2alpha https://github.com/google/bbr.git cd bbr

使用当前机器的旧内核配置,并自动帮你把新内核上的新功能选项以默认值进行配置:

make olddefconfig

打开图形化菜单:

make menuconfig

选择Networking support:

选择Networking options:

选择TCP: advanced…:

然后在里面你可以看到BBR2的新选项,这里有两种编译方式,M是构建为模块,*是直接构建到内核:

如果这里选为*的话,你可以在下面的Default TCP…内把默认的拥塞控制协议直接设置为BBR2:

这样安装好这个内核后就不需要去动sysctl.conf了,默认就开启BBR2。

当然你用模块也可以,就是需要自己加载模块罢了。设置好了后SAVE一下退出这个界面即可。

下面是我踩过的坑,解决办法,手动编辑.config:

nano .config

把里面的这一行注释掉或者留空里面的值:

CONFIG_SYSTEM_TRUSTED_KEYS=“debian/certs/debian-uefi-certs.pem”

为节省编译时间,关闭DEBUG:

CONFIG_DEBUG_INFO=n

做好上面这些后,现在就可以开始编译了:

make deb-pkg LOCALVERSION=-imlala -j$(nproc)

编译时间视你的机器性能而定,看看片锻炼下身体,回来应该就编译好了,在上级目录有可用的deb包,使用dpkg安装然后重启:

cd .. dpkg -i linux-image-5.4.0-rc6-imlala_5.4.0-rc6-imlala-1_amd64.deb
dpkg -i linux-headers-5.4.0-rc6-imlala_5.4.0-rc6-imlala-1_amd64.deb
reboot

直接编译到内核的使用下面的方法查看BBR2算法是否已经生效:

sysctl net.ipv4.tcp_congestion_control

正常的话会回显:

net.ipv4.tcp_congestion_control = bbr2

编译为模块的需要自己手动加载模块再配置sysctl.conf使其生效:

modprobe tcp_bbr2
echo “tcp_bbr2” >> /etc/modules
echo “net.ipv4.tcp_congestion_control = bbr2” >> /etc/sysctl.conf
sysctl -p

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

本文将指导使用 archinstall 安装 Arch Linux 和 KDE 桌面环境。

前言

众所周知,安装 Arch Linux 是一件非常复杂并痛苦的事情,您需要一定的 Linux 基础,然后使用命令行进行硬盘分区,安装自己需要的软件,Arch Linux 官方也并未提供 GUI 安装程序,所以很多想尝试 Arch Linux 的用户都会被劝退在安装这一步骤上。

archinstall 是一个 Python 写的 Arch Linux 安装向导程序,我们可以很方便地使用 archinstall 安装 Arch Linux。

Arch Linux 发布 2022.05.01 的 iso 后,已经默认集成了 archinstall,于是您可以参考本教程无痛安装 Arch Linux,为了方便期间,本教程的安装是基于 VMware Workstation,理论上和你本地挂载 ISO 安装并无区别。

准备工作

首先,获取安装映像,您可以在下载页面下载最新的 iso 镜像文件,您可以选择速度最快的 mirror 进行下载,这里推荐两个下载链接

国外用户,使用官方的镜像:

https://mirror.pkgbuild.com/iso/latest/archlinux-x86_64.iso

国内用户,使用清华大学的镜像:

https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/latest/archlinux-x86_64.iso

下载后您需要准备个 U 盘或移动硬盘,然后使用一些工具,比如 Rufus,这里不再阐述,其他方法请参考这里

另外,您需要确认主板 BIOS 里没有奇奇怪怪的设置,比如某些针对 Windows 系统的设置,比如快速启动、CSM 安全启动、TPM 模块等都设置需要自己调整,否则默认配置可能会导致安装完 Arch Linux 后无法进入系统引导。

安装 Arch Linux 系统

启动进入引导后,我们会看到熟悉的 Arch Linux 界面:

默认进入后即可看到 Live CD 已经正常工作:

我们可以运行 installation_guide 命令查看安装文档,当然都是英文的,对英语不好的朋友也可以直接参考中文的文档说明

按 Q 退出,我们可以直接运行 archinstall 进行图形化安装向导:

然后我们会看到 archinstall 的向导界面:

目前我们能看到的选项有:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Select Archinstall language
Select keyboard layout
Select mirror region
Select harddrives
Select bootloader
Use swap
Specify hostname
Set root password
Specify superuser account
Specify user account
Specify profile
Select audio
Select kernels
Additional packages to install
Configure network
Select timezone
Set automatic time sync (NTP)
Additional repositories to enable

然后我们就一步一步来安装:

Select Archinstall language 这里可以选择 archinstall 的界面语言,很可惜,截止本文发布,并没有中文。

Select keyboard layout 选择键盘布局,默认情况你的键盘布局应该都是 us,除非你是德国等国家的用户,那么请自行选择。

Select mirror region 可以选择最合适的镜像,建议选择和您当前网络一致的国家或地区:

记得按空格选择,然后按回车继续。

Select harddrives 可以选择安装的硬盘,请自行选择需要安装的硬盘,切记看清楚硬盘大小,不要装错了硬盘最后拍大腿:

选择硬盘后会让您选择如何分区,如果没有特殊需求,直接选择 Wipe all selected drives and use a best-effort default partition layout,这样会把你的硬盘全部格式化,切记备份重要数据,不然安装了以后拍大腿:

然后会询问您硬盘分区格式,可选 btrfsext4f2fs 或 xfs,如果没有特殊需求,可以选最常用的 ext4

然后会询问您是否要对 /home 目录单独分区,这里主要存放用户的数据,默认建议单独分区,实际操作中会分配大概 80% 的硬盘空间给 /home 目录,你也可以一股脑都分给 /,请自行决定:

完成后会多出一个 Set encryption password 选项,如果您需要对硬盘加密,可以选择,如果没需要可以跳过。

然后我们直接跳过 Select bootloader 和 Use swap,因为他已经自动给您设置好了,然后如果您喜欢的话,可以给您的机器设置一个 hostname 和 root 密码,如果没有特殊需求,也可以跳过 Specify hostname 和 Set root password,我们直接来到 Specify superuser account,设置一个拥有 sudo 权限的超级用户,这个用户是日常登录和操作使用,请务牢记用户名和密码:

输入用户名:

输入密码,Linux 终端下输入密码是不显示的,不要以为自己产生幻觉输错了:

可能会提示您的密码太弱,自行斟酌是否需要修改:

然后再输入一次密码进行验证:

成功后选择 Confirm and exit 即可:

然后我们也可以跳过其他选项,直接来到 Configure network

因为我们希望安装 KDE 桌面环境,所以选择 Use NetworkManager

如果是服务器环境,可以选择 Manual configuration 手工配置网络。

然后我们选择时区,进入 Select timezone

按照您本地的时区来选择,可以使用 / 然后输入前几个字符快速搜索,比如 /shanghai

一切准备就绪,我们可以选择 Save configuration 来保存配置,也可以直接选 Install 进行安装:

系统会提示 Would you like to chroot into the newly created installation and perform post-installation configuration?,这里我们直接选择 Yes,然后进入安装:

霹雳哗啦安装完毕后,我们可以安装一些常用的软件,比如 KDE 桌面环境:

1
pacman -S plasma-meta plasma packagekit-qt5

没有特殊需求都选择默认一路回车即可:

安装 KDE 比较慢,因为软件包较大,请耐心等待安装完成。

安装完成后开启 sddm

1
systemctl enable sddm

然后我们使用 exit 命令退出并使用 reboot 命令重启:

安装并配置 Arch Linux 的软件

重启后我们就可以看到熟悉的登录界面啦:

登录后会发现除了个桌面啥东西都没有,此时我们可以按键盘 CTRL + ALT + F2 进入 tty2 终端:

输入用户名和密码登录:

然后开始安装一些常用软件,比如 KDE 的终端软件 Konsole 和文本编辑器 Kate:

1
sudo pacman -S konsole kate

安装完成后,我们可以按键盘 CTRL + ALT + F1 重新进入 KDE 桌面环境,然后按 Win 键搜索 konsole 进入终端:

这里推荐一些常规和必要的软件包:

如果您是 Intel 的 CPU:

1
sudo pacman -S intel-ucode

如果您是 AMD 的 CPU:

1
sudo pacman -S amd-ucode

如果您是 AMD 的 GPU:

1
sudo pacman -S xf86-video-amdgpu mesa

如果您是 NVIDIA 的 GPU:

1
sudo pacman -S nvidia mesa

如果您是 Intel 的 GPU:

1
sudo pacman -S xf86-video-intel mesa

关于 Arch Linux 下 GPU 配置可以参考这里这里

然后安装一些常见的工具包:

1
sudo pacman -S inetutils iproute2 iputils procps-ng psmisc sysfsutils which wget nano vim sudo unzip mtr traceroute dnsutils lsb-release ca-certificates bash-completion logrotate openssh less rsync

部分软件是需要自行开启并设置开机自启动的,比如 OpenSSH

1
systemctl enable --now sshd

然后安装个浏览器,Linux 下还是推荐用 Firefox

1
sudo pacman -S firefox

安装完成后可以然后按 Win 键搜索 firefox 并右键图标使用 Add to Desktop 创建桌面快捷方式:

此时桌面上就有 Firefox 的图标啦:

解决中文显示乱码问题

我们会遇到一个问题,此时打开中文网页都是乱码:

而且网页里包含的 Emoji 🤣也是一个个方框哦,所以我们参考这里这里,首先安装字体包:

1
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji

然后使用 Konsole 创建一个 .config/fontconfig/fonts.conf 文件

1
2
3
cd ~
mkdir -p .config/fontconfig
vim .config/fontconfig/fonts.conf

复制以下内容,使用 vim 编辑文件,按 i 开始编辑,按 Ctrl + Shift + V 或 Shift + Insert 或直接在 Konsole 里右键 Paste,然后粘贴以下内容后,完成后按 ESC 键,然后输入 :wq 完成编辑:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'>
<!-- ${XDG_CONFIG_HOME}/fontconfig/fonts.conf
- vim:ft=xml:fenc=utf-8:noet:ts=3:sw=3:
-->
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Color Emoji</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Color Emoji</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono</family>
<family>Noto Color Emoji</family>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK TC</family>
<family>Noto Sans Mono CJK JP</family>
</prefer>
</alias>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
<edit mode="assign" name="dpi">
<double>96</double>
</edit>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcdlight</const>
</edit>
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
<edit mode="assign" name="size">
<int>15</int>
</edit>
</match>
<dir>~/.fonts</dir>
</fontconfig>

然后清理字体缓存:

1
fc-cache -fv

清理完事后会提示 fc-cache: succeeded,然后我们使用 fc-match -s grep 'Noto Sans CJK' 命令查看中文字体是否生效:

然后重新登录用户,或者直接 sudo reboot 重启电脑,再次打开 Firefox 即可看到中文字体完美显示:

安装中文输入法

参考这里,我们直接安装 fcitx5:

1
sudo pacman -S fcitx5-im fcitx5-qt fcitx5-gtk fcitx5-chinese-addons fcitx5-pinyin-zhwiki

然后修改全局变量环境文件

1
sudo vim /etc/environment

加入以下内容:

1
2
3
4
5
6
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
INPUT_METHOD=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

重启后即可生效,在 KDE 里按 Win 键搜索 Input Method 后进入 Input Method 即可配置输入法:

选择 Input Method,然后点击 Add Input Method...

搜索 pinyin 然后添加简体中文下的 Pinyin

点击 Add 后记得点击 Apply 生效,然后我们可以看到任务栏右下角的键盘图标,右键即可看到 Pinyin 输入法,可以点击 restart 生效任何修改的配置:

第一次打开拼音输入法会提示你是否需要开启云拼音预测,可以按照自己的喜好选择:

然后我们随便打开一个文本编辑器,按 Ctrl + 空格 即可开启拼音输入法:

配置第三方源

Arch Linux 官方提供了一些第三方源,这里我们推荐 AUR 和 Archlinuxcn

安装 AUR 的包管理助手 yay :

1
2
3
4
5
6
7
8
sudo pacman -S base-devel git
cd ~
mkdir -p .local
mkdir -p .local/opt
cd .local/opt
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

国内网络的用户可能无法流畅安装编译 yay,需要一些魔法操作,请自行解决。

也可以直接安装打包好的二进制包:

1
2
3
4
5
6
7
8
sudo pacman -S git base-devel
cd ~
mkdir -p .local
mkdir -p .local/opt
cd .local/opt
git clone https://aur.archlinux.org/yay-bin.git
cd yay-bin
makepkg -si

然后即可使用 yay -S 来安装 AUR 中的软件,比如安装 Microsoft Edge 浏览器:

1
yay -S microsoft-edge-stable-bin

没有特殊需求的话一路回车即可安装。

也可以使用 yay -Syu 直接更新系统和 AUR 仓库里的软件:

1
yay -Syu

添加 Archlinuxcn 源:

修改 /etc/pacman.conf 文件,加入:

1
2
[archlinuxcn]
Server = https://repo.archlinuxcn.org/$arch

国内网络用户可以使用清华大学的源:

1
2
[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

然后更新系统并安装 archlinuxcn-keyring 包:

1
2
sudo pacman -Syu
sudo pacman -S archlinuxcn-keyring

如果遇到类似这样的错误提示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
gpg: key B3D53065DB03D61E was created 10631 seconds in the future (time warp or clock problem)
==> Appending keys from archlinuxcn.gpg...
gpg: key B3D53065DB03D61E was created 10631 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10631 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10631 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10631 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10631 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)
gpg: key B3D53065DB03D61E was created 10630 seconds in the future (time warp or clock problem)

说明你本地的系统时间没有和 NTP 服务器同步,我们可以手工打开:

1
2
sudo timedatectl set-ntp 1
sudo timedatectl status

然后删除旧的 GPG Key 缓存文件并重新生成:

1
2
3
sudo rm -fr /etc/pacman.d/gnupg
sudo pacman-key --init
sudo pacman-key --populate

然后重新安装 archlinuxcn-keyring 即可正常工作。

请注意 AUR 里的很多软件分两种发布形式,一种是带 -bin 结尾的二进制包,安装后直接可用,一种是不带的,就是从源码编译安装,本地不一定能装的上,请自行选择。

参考教程

本教程仅适合有一定 Linux 基础和动手能力的小伙伴,如果您想从头开始学习安装一个 Arch Linux,那么这两个教程一定很适合您学习

推荐软件

最后秀一下我的 Arch Linux:

image.png

前言

这篇教程来详细讲解如何正确的设置 Ad­Guard Home ,来更有效的防止 DNS 污染以及去广告。与其它 Ad­Guard Home 教程的只讲方法、不讲逻辑的胡乱设置不同,认真看完这篇教程你会收获大量的知识和启发。

设置

常规设置

文字介绍已经很好理解了,按需设置即可。重点是以下几个,如果你尚处于单身状态,那么就不要开启,否则会影响生理卫生知识的学习。

  • 使用 AdGuard【家长控制】服务:如果家中有尚未成年的孩子,建议开启,屏蔽成人内容。
  • 强制安全搜索:在 Bing、Google、Yandex、YouTube 等网站上强制使用安全搜索,屏蔽 NSFW 内容。

 

 

DNS 设置

 

 

上游 DNS 服务器

AdGuard 文档中给出了一些知名的 DNS 服务器供选择。

根据所在网络环境的不同推荐以下两组支持 ECS 功能的 DNS 服务器。如果有科学魔法爱国上网需求,你应该部署两个 Ad­Guard Home ,通过 DNS 分流才能达到较为理想的防污染和去广告效果。

  • 中国大陆网络环境推荐选择腾讯 (DNSPod) 和阿里云的公共 DNS 。使用它们你会惊奇的发现偶尔某些不存在的网站都是能正常解析的,只不过解析的结果并不是离你的代理服务器最近的 IP ,所以效果并不理想,而且非常不稳定。

    TIPS: 中国大陆不推荐使用任何海外的 DNS ,因为延迟很高且都受到了不同程度的干扰,可用性不高,强行设置只会得到减速效果或者报错。

    1
    2
    3
    4
    tls://dns.pub
    https://dns.pub/dns-query
    tls://dns.alidns.com
    https://dns.alidns.com/dns-query
  • 国际网络环境,比如海外的 VPS 或者给科学魔法爱国上网软件做 DNS ,则推荐使用 Google 和 Quad9 的公共 DNS。给科学魔法爱国上网软件使用的前提是它们必须在魔法名单中。

    1
    2
    3
    4
    tls://dns.google
    https://dns.google/dns-query
    tls://dns11.quad9.net
    https://dns11.quad9.net/dns-query

如果你看过《AdGuard Home 是什么?为什么无法去广告?》那篇文章,那么你一定还记得 DoT/​DoH 技术。所以这里的上游 DNS 自然是要选择 DoT/​DoH 加密技术的服务器的,可以防止 DNS 解析记录被劫持、篡改以及跟踪。缺点是可能对解析速度会有些许影响,毕竟 TCP 协议不如 UDP 来得有效率,且加解密需要一点时间,不过在机器性能不错且网络通畅的情况下其实是可以忽略的,都是毫秒级别的差距。

上游 DNS 服务器输入框下面有几个单选项,字面理解应该是解析策略、模式之类的选项,官方暂时没有给出详细介绍,所以博主根据字面含义和自身实际体验总结如下:

  • 负载均衡:使用加权随机算法来选择最快的服务器。用到了算法,这就很玄学了。实际其实就是随机选择一个上游 DNS 服务器中的一个进行解析请求,哪个延迟低就更偏向于用哪一个。
  • 并行请求:同时请求所有上游 DNS 服务器,取最快给出的响应结果,所以解析速度很快。在上游 DNS 服务器设置合理的情况下属于万金油方案,解析速度和访问速度都很快。所以也非常适合上游 DNS 服务器连接延迟大和不稳定的情况,就比如科学魔法爱国上网使用场景。
  • 最快的 IP 地址:同时请求所有上游 DNS 服务器,在所有响应结果中选出延迟最低且可用的 IP。因为要等待所有上游 DNS 服务器响应结果,而且还要测试 IP 延迟及可用性,所以解析速度会很慢。只适合上游 DNS 服务器延迟特别低且网络非常稳定的场景,否则实际使用中可能会遇到首次打开网页非常慢,甚至可能打不开,要多刷新几次。再者低延迟 IP 不一定速度就快,还要看实际负载情况,所以这个方案的实际可用性是最差的。

Bootstrap DNS 服务器

Boot­strap DNS 服务器(引导 DNS 服务器)的作用只是解析上游 DoT/​DoH 技术 DNS 服务器的域名,所以这里需要填写使用 UDP 协议的传统 DNS 服务器 IP 地址。

 

同样的这里根据网络环境的不同推荐两组:

  • 中国大陆

    1
    2
    3
    4
    119.29.29.29
    119.28.28.28
    223.5.5.5
    223.6.6.6
  • 国际

    1
    2
    3
    4
    8.8.8.8
    8.8.4.4
    9.9.9.11
    149.112.112.11

设置完点击测试上游服务器,没有问题点保存即可。

TIPS: 这里也可以留空,使用后面将要提到的 DNS 重写功能把 DoT/​DoH DNS 服务器的域名直接指向它的 IP 是一种更优雅的使用方式。

DNS 服务设定

  • 速度限制0
  • 使用 EDNS :前面提及的上游 DNS 服务器都是支持 EDNS (ECS) 的,它有助于获取到更合适的 CDN 节点,建议勾选。
  • 使用 DNSSEC : 用于效验 DNS 记录的签名,防止 DNS 缓存被投毒,建议勾选。勾选后会在日志页面请求列显示小绿锁图标。
  • 禁用 IPv6 :丢弃 IPv6 的 DNS 查询。在本地网络和网站都支持 IPv6 会优先使用 IPv6 去访问网站,但目前 IPv6 的建设还处于初级阶段,大多数地区的 IPv6 网络体验都一般。还有一些代理软件对 IPv6 支持不佳,开启后可能会影响国际互联网的访问。如果对此没有特殊需求,那么直勾选即可,这样既不影响 BT 软件连接 IPv6 网络,又可以优先使用 IPv4 来上网。如果只有 IPv4 ,那么是否勾选没有区别。

 

 

DNS 缓存配置

先简单科普一下 TTL ,它是英语 Time To Live 的简称,中文翻译为 “存活时间”。放在 DNS 解析中意为一条域名解析记录在 DNS 服务器中的存留时间,单位是秒。

正常情况下 TTL 默认 0 即可,即从上游 DNS 服务器获取 TTL 值。如果你所部署的网络环境到上游 DNS 服务器的延迟比较高,那么可以适当增加 TTL 值,让缓存更持久,短时间内请求同样域名的解析会直接从缓存中读取,实现秒解析。不过 TTL 值不宜过大,不然会导致记录不能及时更新,结果是网站无法正常打开。据博主观察目前多数域名的 TTL 值普遍在 300 以内,所以给出以下设置参考值:

  • 覆盖最小 TTL 值:600
  • 覆盖最大 TTL 值:3600

 

 

加密设置

设置管理页面使用 HTTPS 加密以及 Ad­Guard Home 自身的 DoH/​DoT 功能,如果不对外开放服务,只是在本地局域网使用是用不到的。对外开放 DNS 服务在中国大陆可能会有 “法律” 风险,而部署在国外网络速度缓慢,所以对于普通用户而言加密设置就成了摆设。

 

客户端设置

在这里可以单独设置每个设备单独使用的上游 DNS 及过滤规则,需要将设备 DNS 设置为 Ad­Guard Home 服务器的在 IP ,或者使用下面将要提到的 DHCP 设置。每个人的需求不一样,所以这个部分就不详细说明了。

 

DHCP 设置

使用 Ad­Guard Home 作为 DHCP 服务器去代替路由器上的 DHCP 服务器,这个功能的主要作用是自动分配 Ad­Guard Home 的 DNS 给到设备,然后配合客户端设置去做精细化 DNS 和过滤规则设置。除非是你的路由设备的 DHCP 功能缺斤少两,否则一般是用不到的。目前这个功能处于实验阶段,稳定性还有待考证。有兴趣的小伙伴可以自己去深入研究,这里不做过多赘述。

 

过滤器

DNS 封锁清单

这里是人民群众喜闻乐见的去广告环节。

 

吐槽:封锁清单这个词严重怀疑是机翻,而下面的绿色按钮是添加阻止列表。博主在查看 Ad­Guard Home 的源码后发现简体中文的翻译有很多不统一的地方,然后花了几个小时帮助他们改进了大量的翻译,可能在后续的版本中就不再叫封锁清单了。

使用官方默认的 AdGuard DNS filter 规则的效果对于中国大陆的网络而言属于聊胜于无,所以需要添加一些其它的规则。然而规则并不是越多越好,多了会影解析速度,真正需要的是高质量。博主个人比较推荐 anti-AD 和 halflife 这两个规则。

规则列表 点击查看

名称

简介

地址

AdGuard DNS Filter

AdGuard 官方维护的广告规则,涵盖多种过滤规则

https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt

AdAway

AdAway 官方的去广告 Host 规则

https://adaway.org/hosts.txt

ADgk

适用于 AdGuard for Android 的去广告规则,去视频 APP 广告、开屏广告

https://banbendalao.coding.net/p/adgk/d/ADgk/git/raw/master/ADgk.txt

anti-AD

命中率高、兼容性强

https://anti-ad.net/easylist.txt

halflife

涵盖了 EasyList China、EasyList Lite、CJX ‘s Annoyance、乘风视频过滤规则,以及补充的其它规则

https://cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad.txt

EasyList

Adblock Plus 官方维护的广告规则

https://easylist-downloads.adblockplus.org/easylist.txt

EasyList China

面向中文用户的 EasyList 去广告规则

https://easylist-downloads.adblockplus.org/easylistchina.txt

EasyPrivacy

反隐私跟踪、挖矿规则

https://easylist-downloads.adblockplus.org/easyprivacy.txt

Xinggsf 乘风通用

国内网站广告过滤规则

https://gitee.com/xinggsf/Adblock-Rule/raw/master/rule.txt

Xinggsf 乘风视频

视频网站广告过滤规则

https://gitee.com/xinggsf/Adblock-Rule/raw/master/mv.txt

MalwareDomainList

恶意软件过滤规则

https://www.malwaredomainlist.com/hostslist/hosts.txt

Adblock Warning Removal List

去除禁止广告拦截提示规则

https://easylist-downloads.adblockplus.org/antiadblockfilters.txt

Fanboy’s Annoyances List

去除页面弹窗广告规则

https://easylist-downloads.adblockplus.org/fanboy-annoyance.txt

 

DNS 允许清单

在这里你可以设置排除封锁清单中的被屏蔽的域名。比如做淘宝客、广告联盟之类的人群可能会用得到,毕竟封锁清单基本涵盖了他们的业务范围。

 

DNS 重写

在这里你可以方便的把一个域名指向一个 IP ,简单来说这个功能相当于 hosts 。

最典型的一个使用场景是把 DoH/​DoT DNS 服务器的域名直接指向它们的 IP ,这样就不再需要进行我查我自己这样浪费时间的迷惑操作了,可进一步加快解析的速度。一般来说 DoT/​DoH DNS 服务器的 IP 是固定的,而且 IP 地址和它们自家的传统 DNS 服务器的 IP 是一致的。这里需要注意的是处在公测阶段的 DNS­Pod 是个例外 (难怪腾讯云做不过阿里云,这种细节上的东西很能体现出是否专业)。

 

已阻止服务

在这里你可以一键禁止访问一些热门网站和服务,比如 Face­book 、Twit­ter 。

 

自定义过滤规则

在这里你可以自定义符合 ad­block 语法或 Hosts 语法的规则,以及检查过滤域名是否被过滤。具体如何使用可以参考页面上的示例和官方文档。

 

尾巴

到这里 Ad­Guard Home 的设置就算是介绍完了,有简体中文,而且 UI 逻辑很清晰,很容易上手。

我这里用的是nginx替代字符串的方法,在appnode下仅供参考

location ~ ^/.+\.php(/$) { sub_filter ‘//cdnjs.cloudflare.com/ajax/libs’ ‘//cdn.staticfile.org’; sub_filter ‘//cdn.datatables.net’ ‘//cdn.staticfile.org/datatables’; sub_filter_once off;
……..

因为是虚拟机下使用,下载虚拟机专用的镜像

https://alpinelinux.org/downloads/    Virtual板块下载86_64镜像

当前 http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/x86\_64/alpine-virt-3.12.1-x86\_64.iso

创建虚拟机 当前alpine内核是5.4,虚拟机创建及初始化过程略过

apk update && apk upgrade && apk add sudo nano

下载并安装smartdns  from https://github.com/pymumu/smartdns

wget https://github.com/pymumu/smartdns/releases/download/Release33/smartdns.1.2020.09.08\-2235.x86\_64\-linux\-all.tar.gz
tar xvf smartdns.1.2020.09.08-2235.x86_64-linux-all.tar.gz && cd smartdns && chmod +x ./install && mkdir mkdir /etc/default && ./install -i

rc-service smartdns stop

mv /etc/smartdns/smartdns.conf /etc/smartdns/smartdns.conf.bak
nano /etc/smartdns/smartdns.conf
server-name smartdns
bind :53 bind-tcp :53 cache-size 1536 prefetch-domain yes
serve-expired yes
log-level info
server-tls 208.67.222.222:853
#server-https https://dns.twnic.tw/dns-query
server-tls 45.32.55.94:853 server-https https://cloudflare\-dns.com/dns\-query
server-https https://neatdns.ustclug.org/resolve
server-https https://doh.dns.sb/dns\-query
server-https https://public.dns.iij.jp/dns\-query
server-https https://dns.rubyfish.cn/dns\-query
server-https https://dns.dns\-over\-https.com/dns\-query
server-https https://jp.tiar.app/dns\-query
server-https https://i.233py.com/dns\-query
server 223.5.5.5:53 server 114.114.114.114:53 conf-file /tmp/whitelist.conf
conf-file /tmp/blacklist.conf
ipset /tracker.publicbt.com/block
ipset /tracker.publicbt.com/b- address /tracker.publicbt.com/- address /publicbt.com/- address /www.publicbt.com/- address /*.publicbt.com/-

取消DHCP DNS自动覆盖

nano /usr/share/udhcpc/default.script 用#注释RESOLV_CONF=“/etc/resolv.conf”

修改本地DNS为127.0.0.1

nano /etc/resolv.conf
nameserver 127.0.0.1

启动smartdns并测试

/usr/sbin/smartdns 测试 nslookup -querytype=ptr smartdns

开机启动,默认的服务没法启动,未知

/usr/sbin/smartdns

nano /etc/local.d/init_nextcloud.start #!/bin/sh
/usr/sbin/smartdns
chmod +x /etc/local.d/init_nextcloud.start

rc-update add local

添加守护

apk add monit
mv /etc/monitrc /etc/monitrc.bak
nano /etc/monitrc set daemon 10 #10s循环监控
set logfile syslog
check process smartdns with pidfile /var/run/smartdns.pid
start program = “/usr/sbin/smartdns” with timeout 10 seconds
stop program = “/usr/bin/killall smartdns” with timeout 10 seconds
chmod 0700 /etc/monitrc 测试守护配置 monit -t 启动 rc-service monit start
monit start all #忽略有个报错
添加启动 rc-update add monit

一键安装docker

curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
#创建docker #https://hub.docker.com/r/adguard/adguardhome

docker pull adguard/adguardhome

docker run --name adguardhome\
    --restart unless-stopped\
    -v /root/adguardhome/workdir:/opt/adguardhome/work\
    -v /root/adguardhome/confdir:/opt/adguardhome/conf\
    -p 3000:3000/tcp\
    -p 36886:36886/tcp\
    -d adguard/adguardhome

#3000为管理端口 第一setup 管理端口80改3000
#36886为https端口 默认443 需修改

设置参考# https://www.nange.cn/dns-over-https-for-adguard.html

appnode为例
反代后端路径  /dns-query
如果填/会暴露 /dns-query
请求路径 自己生成一个随机数 如  /oOnZY74WyMWFuM34sgCDv2V2LB 这个就是藏起来的

appnode let’s生成证书  把证书复制到ahm

验证工具
wget https://github.com/ameshkov/dnslookup/releases/download/v1.4.8/dnslookup-linux-amd64-v1.6.0.tar.gz
tar zxf dnslookup-linux-amd64-v1.4.8.tar.gz && cd linux-amd64
dnslookup www.google.com https://dns.123.com/oOnZY74WyMWFuM34sgCDv2V2LB