大环境准备

操作系统

高通官方推荐比较老的 Ubuntu 14.04, 18.04 LTS等,但我不信邪,偏用 Debain 12.

软件包

系统软件包

  1. Python2 & pip2
    安装 Python 2.7 并设置 /usr/bin/python 为 python2
    首先引入 Debian 11 的主软件源,并执行 sudo apt update
    随后安装 python2python2-minimal 包。

    sudo rm -f /usr/bin/python
    sudo ln -s /usr/bin/python2 /usr/bin/python
    ​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌‌​​‌​‌​​‌​​‌‌‌‍​‌‌​‌‌‌‌‌‌‌​​‌​‌‍​​‌‌​​​‌​​​​​​​‍​​‌‌​‌​‌‌​‌​​​​‍​​‌‌‌​​‌‌‌‌‌‌‌​‍​‌​‌‌​​‌‌‌‌‌​‌​‍‌‌​‌‌‌‌‌‍‌​‌‌‌‌​‌‍‌​‌​‌‌​​‍‌​‌​‌‌‌‌‍‌‌​‌‌‌‌‌‍​​​​​​​‌‌‌​‌​​‌‍​‌‌‌​‌​​​​‌​‌‌‌​‍​​‌‌‌​​‌‌‌‌‌​​​‍​‌​‌‌​​‌​‌​‌​​​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​‌‌​​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​‌​​​​​‍‌​‌‌​​‌​‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌​‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌​​‌‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌​​‍‌​​​​‌‌​‍‌​​‌​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌‌​‌​​​‌‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​‌​​​‌‌‍‌​​​‌‌‌​‍‌​​​‌​‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​​‌​​‌​‍‌‌​‌​​‌​‍‌​​‌‌​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌‌‌​​‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌‌​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​‌​​‌‌‍‌​​‌​​​​‍‌​​​‌‌‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌​‌​​​‌‌‍‌​​‌‌‌​‌‍‌​​​‌​‌​‍‌​​‌​‌‌​‍‌​​‌​​‌‌‍‌​​‌‌​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌‌​‌​​‌​‍‌​​‌‌​​​‍‌​​​‌​‌​‍‌​​‌​‌‌​‍‌​​‌‌​‌‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌‌​​‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌‌​‌​​‌​‍‌​​​‌‌‌​‍‌​​​‌​‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​​‌​​‌​‍‌‌​‌​​‌​‍‌​​​‌‌​​‍‌​​‌​​​​‍‌​​‌‌‌​​‍‌‌​‌​​‌​‍‌​​‌‌‌​‌‍‌​​​‌‌​​‍‌​​​‌‌‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

    安装 pip2 并安装 python2 相关库。
    (如果有 pip3,则修改 pip 链接到 pip2)

    pip install pycryptodome future six
  2. OpenSSL 1.1.1
    Debian 12 自带 OpenSSL 3,而且版本会越来越新,因此我们需要手动编译安装 OpenSSL 1.1.1,并且将其设置为默认 openssl 命令的执行程序。
    2.1. 编译 OpenSSL 1.1.1

    wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz
    tar zxf openssl-1.1.1w.tar.gz
    cd openssl-1.1.1w
    ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
    make -j$(nproc)
    make install

    2.2. 链接并设置为默认程序

    sudo mv /usr/bin/openssl /usr/bin/openssl3
    sudo ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl1
    sudo ln -s /usr/bin/openssl1 /usr/bin/openssl
  3. GCC 9 & g++ 9
    由于高通的 Bootloader (XBL) 源码中包含 EDK II 项目代码,又由于 EDK II 旧版的部分代码没有修复在新版 GCC 编译器上出现的问题,因此除非手动修改部分程序(如 GetFds)的代码,否则我们还需要安装 GCC 9 和 g++ 9。

    sudo apt update && sudo apt install gcc-9 g++-9

高通软件包

编译高通的系统组件还需要高通自己修改的 LLVM 和 Linaro GCC 等工具,通常情况我们只需要保证下载的工具的主要版本(X.Y)匹配即可,对于小的 Rev 则可以选用最新的。

  1. 下载 Linaro GCC 4.9-2014.07
    此工具可以直接在 Linaro 网站上下载。
  2. 下载 Qualcomm Snapdragon LLVM Compiler for Linux
    我们需要下载 v4.0.17 和 v8.0.3 两个版本,高通要求其私有 Linux 软件包只能通过 QPM3 下载,由于 QPM3 无法在 Debian 12 上正常运行(截至2025年1月17日),所以我们可以直接在高通 QCS8250 的产品页面上,登录高通账号下载。

也可以在 Ubuntu 18.04 中安装 QPM3,登录高通账号下载安装后手动导出。

下载后解压到特定目录,并记住每个版本文件夹的路径。(如/home/levi/toolchains/qualcomm-sd-llvm-4.0.17等)

编译板支持包 BSP

登录高通 ChipCode 门户,在 Product 中选择产品 QCS8250,选择 qcs8250-la-2-0_ap_standard_oem,进入页面后复制仓库地址。提前设置 http.followRedirectstrue,随后使用 git clone 下载。

需要注意,1.x本和 2.0 的包目录结构不一样,会在外面套一个用于分类软件包的文件夹。例如在 1.x 版本的 BSP 中,直接就是 boot_images/ 文件夹,但在 2.0 中会变成 BOOT.XF.3.2/boot_images/

p.s. 高通就把 Board Support Package 翻译成“板支持包”。

环境准备

  1. Bootloader (XBL) 编译环境准备
    高通在 QCS8250 的 2.0 版本的 BSP 中引入了 UEFI (EDK II),所以编译 XBL 的过程中也编译了 EDK II 的部分源码,因此需要确保 EDK II 的 BaseTools 被正确编译。(否则编译过程会报错 7000,提示无法调用 minigzip)
    执行命令:

    cd <workspace>/qcs8250-la-2-0_ap_standard_oem/BOOT.XF.3.2/boot_images/BaseTools
    make

    需要注意,编译时脚本会自动设置 Sectools 签名策略为 MULTIPLE_DEFAULT_SIGN,不需要再手动设置 Sectools 签名策略。Sectools 的签名策略有下面几个选项:
    DEFAULT_SIGN, DEFAULT_INTEGRITY_SIGN_ATTR, DEFAULT_SIGN_UPDATE_UNSIGN, DEFAULT_UNSIGN, DEFAULT_SUBFOLDER_SIGN, DEFAULT_SUBFOLDER_INTEGRITY_SIGN_ATTR, SUBFOLDER_MULTIPLE_SIGN_AND_ENCRYPT, MULTIPLE_DEFAULT_SIGN, MULTIPLE_DEFAULT_SIGN_ENCRYPT
    如果需要设置的话,直接使用 export 命令设置任意一个策略为 1 就好了,需要注意的是,每次只有一个签名策略被启用,不能同时有两个以上。

还需要注意,如果没有安装和使用 OpenSSL 1.1.1 版本,编译过程会因为 Sectools 失败而中止。

QcomPkg/toolchainconfig.json 中修改 CLANG40CLANG80LINUX 项的值为你安装的 Qualcomm Snapdragon LLVM for Linux 对应的 4.0.X8.0.3 的目录。

编译

使用高通提供的用户手册内的编译命令进行编译即可。为防止泄密,不贴出编译命令,毕竟高通给的所有文件里都有水印,还写着“Confidential - May Contain Trade Secrets”(笑)。

困惑和问题

  1. 观察 Bootloader (XBL) 的编译过程发现,在固件签名时,似乎使用的是默认的 secimagev3.xml 配置文件,为什么不用 QCS8250 (SM8250) 的专用配置文件 sm8250_secimage.xml 呢?

前言

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​​‌‌​‌​​‌​​‌‌‌‌‍​​​‌‌​‌‌​‌‌​‌‌‌‍​​‌‌​​​‌‌​‌​​‌‌‍‌‌​‌‌‌‌‌‍‌​‌‌‌‌​​‍‌​​‌​‌‌‌‍‌​​​‌‌​‌‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌‌​‌‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​​‌‌​‌‍‌‌​​‌‌​‌‍‌‌​‌​‌​​‍‌‌​‌‌‌‌‌‍​‌​‌‌‌​‌​​​‌‌​​‍​‌‌​‌​‌​​​​‌​​‌​‍​‌​​‌​​​‌‌‌​‌‌​‍​‌​‌‌‌​‌​​‌​‌‌‌‍​​‌‌‌​​​​‌​‌‌‌‌‍​​​​‌‌​‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​‌‌​​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​‌​​​​​‍‌​‌‌​​‌​‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌​‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​​​‍‌‌​‌​​‌​‍‌‌​​‌‌​‌‍‌‌​​‌‌​​‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌​​‍‌​​​​‌‌​‍‌​​‌​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌‌​‌​​​‌‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​‌​​​‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌​‍‌​​​‌​‌‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌​​‌​‌‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌​​‌‌​‌‌‍‌​​‌​‌‌​‍‌​​​‌‌​​‍‌​​‌‌‌‌​‍‌​​‌‌‌​‌‍‌​​‌​​‌‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​​‌​‌‌‍‌​​‌​‌‌‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌​​​‌‍‌​​‌​​​​‍‌​​​‌​‌‌‍‌​​‌​‌‌​‍‌​​‌‌​​‌‍‌​​‌​‌‌​‍‌​​‌‌‌​​‍‌​​‌‌‌‌​‍‌​​​‌​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​​‍‌​​‌​​​‌‍‌‌​‌​​‌​‍‌​​‌​​​​‍‌​​‌‌​​‌‍‌‌​‌​​‌​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​​‌‌​​‍‌​​‌‌​‌​‍‌​​‌‌‌​​‍‌​​​‌​‌​‍‌​​​‌‌​‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌‌​‌‌‍‌​​‌​​​​‍‌​​​‌​​​‍‌​​‌​​​‌‍‌​​‌​​‌‌‍‌​​‌​​​​‍‌​​‌‌‌‌​‍‌​​‌‌​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌‌​‌​​‌​‍‌​​‌‌​​‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌‌​‌​​‌​‍‌​​‌‌​​​‍‌​​‌​​​​‍‌​​‌​​​​‍‌​​‌‌​​​‍‌​​‌​​‌‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌‌‌​​‍‌​​‌​‌‌‌‍‌​​​‌‌​‌‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

Google Chrome 新版本浏览器特别烦人,下载文件总会扫描浪费时间,在设置中关闭“安全浏览”禁止扫描又会提示已禁用“安全浏览”,无法验证文件安全性。

解决方案

使用 Chrome Enterprise Policy 即企业策略关闭相关限制。
对于 Windows 平台可以使用注册表来导入,在HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome中添加下面四项 DWORD 十六进制值
{alert type="info"}
如果该注册表目录不存在,创建即可
{/alert}

  • DisableSafeBrowsingProceedAnyway=1
  • SafeBrowsingEnabled=0
  • InsecureFormsWarningsEnabled=0
  • DownloadRestrictions=0

{message type="warning" content="下面的方法测试无效,但也可以尝试"/}
打开 Chrome 内部设置 URL: chrome://settings/content/insecureContent 在“允许显示不安全内容”中添加[*.]com[*.]net[*.]top[*.]xyz[*.]cn[*.]su

前言

重装 Windows 11 系统后开机,引导界面转圈半天后蓝屏报错 INACCESSIBLE_BOOT_DEVICE,查阅资料发现是 Intel VMD 技术导致的,由于安装的系统镜像内没有 Intel VMD 驱动,导致无法识别可启动的引导设备,从而导致蓝屏。

解决方案

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌​‌‌‌​‌​​​‌‌​​‍​‌‌​‌​‌​​​​‌​​‌​‍‌‌​‌‌‌‌‌‍‌​‌‌​‌‌​‍‌​​‌​​​‌‍‌​​​‌​‌‌‍‌​​‌‌​‌​‍‌​​‌​​‌‌‍‌‌​‌‌‌‌‌‍‌​‌​‌​​‌‍‌​‌‌​​‌​‍‌​‌‌‌​‌‌‍‌‌​‌‌‌‌‌‍​‌‌‌​‌‌​​​​‌‌‌​​‍​‌​‌‌‌​​‌​​‌‌​​‍‌‌​‌‌‌‌‌‍‌​‌‌​‌‌​‍‌​‌‌​​​‌‍‌​‌‌‌‌‌​‍‌​‌‌‌‌​​‍‌​‌‌‌‌​​‍‌​‌‌‌​‌​‍‌​‌​‌‌​​‍‌​‌​‌‌​​‍‌​‌‌​‌‌​‍‌​‌‌‌‌​‌‍‌​‌‌​​‌‌‍‌​‌‌‌​‌​‍‌​‌​​​​​‍‌​‌‌‌‌​‌‍‌​‌‌​​​​‍‌​‌‌​​​​‍‌​‌​‌​‌‌‍‌​‌​​​​​‍‌​‌‌‌​‌‌‍‌​‌‌‌​‌​‍‌​‌​‌​​‌‍‌​‌‌​‌‌​‍‌​‌‌‌‌​​‍‌​‌‌‌​‌​‍‌‌​‌‌‌‌‌‍​‌‌‌‌​‌‌​​‌​​​‌​‍​‌​​​‌‌‌​‌‌​​​​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​‌‌​​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​‌​​​​​‍‌​‌‌​​‌​‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌​‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​​​‍‌‌​‌​​‌​‍‌‌​​‌‌​‌‍‌‌​​‌‌​​‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌​​‍‌​​​​‌‌​‍‌​​‌​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌‌​‌​​​‌‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​‌​​​‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌​‍‌​​​‌​‌‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌​​‌​‌‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌​​​‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌‌‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​​‌​‌‌‍‌​​‌​‌‌‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​​‌​​​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌‌​‌‌‍‌​​‌​​​​‍‌​​​‌​​​‍‌​​​‌‌​​‍‌‌​‌​​‌​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌‌‌‌​‍‌​​‌‌‌​​‍‌​​‌‌‌​​‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​​​‌‌​​‍‌​​‌​‌‌​‍‌​​‌‌‌​‌‍‌​​‌​​‌‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌‌‌​‌‍‌​​‌​​​​‍‌​​‌​​​​‍‌​​​‌​‌‌‍‌‌​‌​​‌​‍‌​​‌‌​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌‌‌​​‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌‌‌​‌‍‌​​‌​​‌‌‍‌​​​‌​‌​‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​​‌‌​​‍‌​​‌‌‌​​‍‌​​​‌‌​‌‍‌​​‌‌​‌​‍‌​​‌‌​‌​‍‌​​‌​​​‌‍‌‌​‌​​‌​‍‌​​​‌‌‌‌‍‌​​‌‌‌‌​‍‌​​‌​​​‌‍‌​​‌​‌‌​‍‌​​‌‌‌​​‍‌‌​‌​​‌​‍‌​​‌‌​‌​‍‌​​​‌‌​‌‍‌​​​‌‌​‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

重启到主板 BIOS,找到 VMD 相关选项,关闭即可。

前言

使用某些脚本创建了一些拥有系统权限的系统文件,无法删除,突然想起微软的“祖宗之法”——管理员取得所有权

教程

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​​​​‌​​​‌​‌‌‌‌​‍​​​‌​‌‌‌‌‌‌‌​​‌‍​‌​‌​‌‌‌​‌​​‌‌‌‍​‌​‌‌​​​​‌​‌​​‌‍​‌​​​​​​‌‌​‌​​​‍​​‌‌‌​‌‌​‌‌‌‌‌‌‍​​‌‌​​​‌‌‌‌​‌‌​‍​​‌‌​​​‌​‌‌‌‌​​‍​​‌​​‌‌​​​‌​‌‌‌‍​‌​‌‌‌​​‌‌‌​​‌‌‍​‌‌‌​‌‌‌‌​​‌​‌‌‌‍​​‌‌​‌​​‌‌‌‌​​​‍​‌‌​​​‌​​​​‌​​‌‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​‌‌​​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​‌​​​​​‍‌​‌‌​​‌​‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌​‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​​‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌‌‌‌‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌​​‍‌​​​​‌‌​‍‌​​‌​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌‌​‌​​​‌‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​‌​​​‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌​‍‌​​​‌​‌‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌​​‌​‌‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌​‌​‌​‌‌‍‌​​‌‌‌‌​‍‌​​‌​‌​​‍‌​​‌‌​‌​‍‌​​‌​​​​‍‌​​​‌​​​‍‌​​‌​​​‌‍‌‌​‌​​‌​‍‌​‌​‌​​​‍‌​​‌​‌‌​‍‌​​​‌​‌‌‍‌​​‌​‌‌‌‍‌‌​‌​​‌​‍‌​‌‌‌‌‌​‍‌​​‌‌​‌‌‍‌​​‌​​‌​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​‌​‌‌​‍‌​​​‌‌​​‍‌​​​‌​‌‌‍‌​​​‌‌​‌‍‌​​‌‌‌‌​‍‌​​​‌​‌‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌‌​‌​​‌​‍‌​‌​‌‌‌‌‍‌​​​‌‌​‌‍‌​​‌​‌‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌​​‌‌‍‌​​‌‌​‌​‍‌​​‌‌​​​‍‌​​‌‌​‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

保存下面的代码到注册表 .reg 文件后执行导入。                     
需要注意:如果使用记事本则确保文件编码为 ANSI 而非 UTF-8,如果使用 VSCode 等则确保文件编码为 GB 2312

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@="管理员取得所有权"
"Icon"="C:\\Windows\\System32\\imageres.dll,102"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\exefile\shell\runas2]
@="管理员取得所有权"
"Icon"="C:\\Windows\\System32\\imageres.dll,102"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\exefile\shell\runas2\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="管理员取得所有权"
"Icon"="C:\\Windows\\System32\\imageres.dll,102"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

前言

总是忘记 tmux 咋用(保存当前会话和进程到后台运行),写篇文章记录一下。    

教程

新建 session

命令:tmux [new -s <name>]           
注:会话 ID 从 0 开始递增。

分离 session

  1. 快捷键:CTRL+B > D   
  2. 命令:tmux detach

打开 session

命令:tmux attach -t <ID/name>              

终止 session

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​​‌​‌​‍‌​​​​‌‌‌‍‌‌​‌‌‌‌‌‍​​‌‌​​​‌‌‌‌‌‌‌‌‍​‌​​​​‌‌‌​​​‌‌‌‍​​​‌​‌​‌‌​‌​‌‌‌‍​‌​‌​‌‌‌​​​​​‌​‍​‌‌​​​‌​​​‌‌​‌‌‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​‌‌​​‌‌‍‌​​‌‌​‌​‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​‌​​​​​‍‌​‌‌​​‌​‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​​‌​​‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌​‌‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​​‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌‌‌‌‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​‌​‌​​‍‌​​​​‌‌​‍‌​​‌​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌‌​‌​​​‌‍‌​​​‌‌​​‍‌​​​‌​‌​‍‌​‌​​​‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌​‍‌​​​‌​‌‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌​​‌​‌‌​‍‌​​‌‌‌‌​‍‌​​‌​​‌‌‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌​​​‌​‌‌‍‌​​‌​‌‌‌‍‌​​‌‌​‌​‍‌‌​‌​​‌​‍‌​​‌​​‌​‍‌​​‌​​​​‍‌​​​‌‌​​‍‌​​​‌​‌‌‍‌‌​‌​​‌​‍‌​​​‌​‌​‍‌​​​‌‌​​‍‌​​‌‌​‌​‍‌​​‌‌​​‌‍‌​​​‌​‌​‍‌​​‌​​‌‌‍‌‌​‌​​‌​‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​​‌​​‌​‍‌​​‌‌‌‌​‍‌​​‌​​​‌‍‌​​‌‌​‌‌‍‌​​​‌‌​​‍‌‌​‌​​‌​‍‌​​‌​​​​‍‌​​‌‌​​‌‍‌‌​‌​​‌​‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​​‌​‌​‍‌​​​​‌‌‌‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

命令:tmux kill-session -t <ID/name>   

切换 session 

命令:tmux switch -t <ID/name>

重命名 session

命令:tmux rename-session -t <ID> <new-name>