-
Notifications
You must be signed in to change notification settings - Fork 0
/
content.json
1 lines (1 loc) · 235 KB
/
content.json
1
{"meta":{"title":"Eric","subtitle":"","description":"Never give up!","author":"Eric","url":"https://ericclose.github.io","root":"/"},"pages":[{"title":"","date":"2023-11-07T09:14:02.072Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"404.html","permalink":"https://ericclose.github.io/404.html","excerpt":"","text":"404 很抱歉,您访问的页面不存在 可能是输入地址有误或该地址已被删除"},{"title":"","date":"2023-11-07T09:14:02.073Z","updated":"2023-11-07T09:14:02.073Z","comments":true,"path":"about/index.html","permalink":"https://ericclose.github.io/about/","excerpt":"","text":"Eric 关于本人我是一个网瘾少年,有事没事都喜欢坐在电脑桌前玩电脑。性格内向,不善言辞,与大多数同龄人格格不入。以下是关于我的个人说明: 社交应用:主要使用telegram。也有玩qq,微信(但是对二者并无任何好感) 游戏:不怎么玩游戏,比较难以接受手游 影视:比较偏向科幻电影,但不喜欢超级英雄类的电影。对抖音快手等短视频应用有较为强烈的反感 音乐:比较喜欢轻柔的音乐,也喜欢古风。 阅读:大量地碎片化阅读,主要使用RSS阅读器获取资讯,平时没有阅读书籍的习惯。 饮食:嗜盐如命,也喜欢吃辣的。不大喜欢甜食,但是对蛋糕有所偏爱。 宗教信仰:坚定的无神论者。不敬鬼神,但从世俗的角度来看,我依然尊重持有宗教信仰的他人。对宗教信仰的理解,一句话就是:无非就是一种自我的心灵慰籍罢了 政治观点:没有系统的了解过政治,但是至少持有这种观点:不论是实行何种社会体制,我都无法接受政府(不透明的、不加节制的)进行网络、言论、思想方面的审查。"},{"title":"所有分类","date":"2023-11-07T09:14:02.073Z","updated":"2023-11-07T09:14:02.073Z","comments":true,"path":"categories/index.html","permalink":"https://ericclose.github.io/categories/","excerpt":"","text":""},{"title":"","date":"2023-11-07T09:14:02.073Z","updated":"2023-11-07T09:14:02.073Z","comments":true,"path":"friends/index.html","permalink":"https://ericclose.github.io/friends/","excerpt":"友链","text":"友链 留言规范友链要求各位大佬想交换友链的话可以在下方留言哦~ 12345- title: Eric avatar: https://cdn.jsdelivr.net/gh/ericclose/cdn-assets/img/avatar.jpeg url: https://ericclose.github.io keywords: [计算机, 萌新] description: To be completed... 注解 title 名字 avatar 头像链接 url 博客链接 keywords 标签 description 描述 这里没啥严格的加友链的要求啦,和我混个眼熟就可以来找我互加友链哟。"},{"title":"所有标签","date":"2023-11-07T09:14:02.073Z","updated":"2023-11-07T09:14:02.073Z","comments":true,"path":"tags/index.html","permalink":"https://ericclose.github.io/tags/","excerpt":"","text":""},{"title":"","date":"2023-11-07T09:14:02.073Z","updated":"2023-11-07T09:14:02.073Z","comments":false,"path":"test/index.html","permalink":"https://ericclose.github.io/test/","excerpt":"","text":"测试 bilibili YouTube"}],"posts":[{"title":"H3C Magic NX30 Pro 官方 OpenWrt 安装教程","slug":"install-openwrt-on-h3c_magic-nx30-pro","date":"2023-10-25T07:41:05.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"install-openwrt-on-h3c_magic-nx30-pro.html","permalink":"https://ericclose.github.io/install-openwrt-on-h3c_magic-nx30-pro.html","excerpt":"导语:本文将指引您如何在 H3C Magic NX30 Pro 安装官方 OpenWrt。因为这台路由器出厂就启用了 Telnet 服务,所以可以更方便的刷入第三方固件,但是您在此之前依然需要完成一些准备工作。","text":"导语:本文将指引您如何在 H3C Magic NX30 Pro 安装官方 OpenWrt。因为这台路由器出厂就启用了 Telnet 服务,所以可以更方便的刷入第三方固件,但是您在此之前依然需要完成一些准备工作。 事前准备 1 台有网口的电脑(如无网口,可配带网口的扩展坞)、2 条网线、1 台配置好 Web 管理密码的 H3C Magic NX30 Pro 完成 NX30 Pro 的网络连接配置(因为需要在 NX30 Pro 上安装 ssh 的软件包,我们需要其能连接互联网)。故连接网线的方式: ⑴. 如果您有一台在役(能上网)的旧路由器。网线 1 一端连接旧路由器的 LAN 口,对端连接 NX30 Pro 的 WAN 口;网线 2 一端连接 NX30 Pro 的 LAN 口,对端连接电脑(或扩展坞)的网口 ⑵ . 如果您只有一台 NX30 Pro,也一样的需要让其能正常访问网络。此时网线 1 一端是入户网口或者是光猫的网口,对端连接 NX30 Pro 的 WAN 口;网线 2 一端连接 NX30 Pro 的 LAN 口,对端连接电脑(或扩展坞)的网口 启用电脑的 Telnet 服务: 「Controll Panel」控制面板 → 「Programs」程序 → 「Turn Windows features on or off」关闭或启用 Windows 特性,确保以下功能项处于开启状态: Telnet Client 待刷写镜像及工具的下载: 文件名 描述 下载 openwrt-*-preloader.bin BL2 页面 openwrt-*-bl31-uboot.fip FIP 同上 openwrt-*-initramfs-recovery.itb initramfs 镜像 同上 openwrt-*-squashfs-sysupgrade.itb Sysupgrade 镜像 同上 Tftpd64-4.64-setup.exe TFTP 工具安装包 链接 ⚠️ 为了避免无线局域网的干扰,可以暂时将电脑的无线网络断开。 启用 ssh 服务12345678910111213# 打开 cmd 窗口,Telnet 命令登录到设备终端## 用户名为 H3C、密码为您此前初始配置的 Web 管理密码telnet 192.168.124.1 99# 获取 dropbear 软件包,并启用 ssh 服务curl -o /tmp/dropbear.ipk https://downloads.openwrt.org/releases/packages-19.07/aarch64_cortex-a53/base/dropbear_2019.78-2_aarch64_cortex-a53.ipkopkg install /tmp/dropbear.ipk/etc/init.d/dropbear enable/etc/init.d/dropbear start# 配置 ssh 登录的密码,建议设置成和 Web 管理密码一致passwd# 设置完密码 exit 退出登录终端、或直接关闭窗口 分区备份12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152# 打开 cmd 窗口,ssh 命令登录到路由器终端ssh [email protected]# 查看分区表root@NX30Pro:~# cat /proc/mtddev: size erasesize namemtd0: 08000000 00020000 "spi0.0"mtd1: 00100000 00020000 "BL2"mtd2: 00080000 00020000 "u-boot-env"mtd3: 00200000 00020000 "Factory"mtd4: 00200000 00020000 "FIP"mtd5: 04000000 00020000 "ubi"mtd6: 00600000 00020000 "pdt_data"mtd7: 00600000 00020000 "pdt_data_1"mtd8: 00100000 00020000 "exp"mtd9: 02580000 00020000 "plugin"# 备份原厂固件root@NX30Pro:~# dd if=/dev/mtd5 of=/tmp/mtd5_ubi131072+0 records in131072+0 records out67108864 bytes (64.0MB) copied, 28.450201 seconds, 2.2MB/s# 导出原厂固件至电脑## 你可以使用 WinSCP 之类的 GUI 工具查看路由器的 /tmp 目录,导出至您的电脑## 也可参考命令导出方法:新开一个 cmd 窗口,执行命令导出至指定目录scp [email protected]:/tmp/mtd5_ubi D:\\Downloads\\backup\\# 删除 /tmp/mtd5_ubi## 因为闪存空间有限,我们仍需要单独备份几个分区,故将已导出的固件删除## 回到登陆 ssh 的终端窗口,执行命令root@NX30Pro:~# rm /tmp/mtd5_ubi# 单独备份(小)分区root@NX30Pro:~# dd if=/dev/mtd1 of=/tmp/mtd1_BL22048+0 records in2048+0 records out1048576 bytes (1.0MB) copied, 0.390332 seconds, 2.6MB/sroot@NX30Pro:~# dd if=/dev/mtd3 of=/tmp/mtd3_Factory4096+0 records in4096+0 records out2097152 bytes (2.0MB) copied, 0.786793 seconds, 2.5MB/sroot@NX30Pro:~# dd if=/dev/mtd4 of=/tmp/mtd4_FIP4096+0 records in4096+0 records out2097152 bytes (2.0MB) copied, 0.798879 seconds, 2.5MB/s# 导出分区镜像至电脑,像此前一样用 WinSCP 工具或用命令导出:scp [email protected]:/tmp/mtd1_BL2 D:\\Downloads\\backup\\scp [email protected]:/tmp/mtd3_Factory D:\\Downloads\\backup\\scp [email protected]:/tmp/mtd4_FIP D:\\Downloads\\backup\\# 回到登陆完 ssh 的窗口,删除已导出镜像root@NX30Pro:~# rm /tmp/mtd* 刷写过程 刷写 BL2 和 uboot 12345678910111213141516171819## 本文下载的镜像存储在电脑的 D:\\Downloads\\ 目录下## 刷写前,用 WinSCP 或命令将用到的镜像导至路由器的 /tmp 目录下# cmd 窗口执行命令参考:scp D:\\Downloads\\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-preloader.bin [email protected]:/tmp/scp D:\\Downloads\\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-bl31-uboot.fip [email protected]:/tmp/# 回到 ssh 的终端窗口,刷写到各自分区# 发现 BL2 分区提示不能写入,这个可以暂时忽略root@NX30Pro:~# cd /tmp/root@NX30Pro:/tmp# mtd write *-preloader.bin BL2Could not open mtd device: BL2Can't open device for writing!root@NX30Pro:/tmp# mtd write *-bl31-uboot.fip FIPUnlocking FIP ...Writing from openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-bl31-uboot.fip to FIP ...root@NX30Pro:/tmp# client_loop: send disconnect: Connection reset 将电脑设置为静态 IP 「控制面板」→「网络和共享中心」→「更改适配器设置」→ 找到有线网卡,鼠标右键点击 →「属性」→ 双击「Internet 协议版本 4(TCP/IPv4)」→ 使用以下 IP 地址: IP 地址: 192.168.1.254 子网掩码: 255.255.255.0 默认网关: 192.168.1.1 填写完成,确认保存即可。 将文件 openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb 重新命名为 openwrt-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb 安装 tftpd64 ,然后将 openwrt-mediatek-filogic-h3c_magic-nx30-pro-initramfs-recovery.itb 移动至 tftpd64 安装目录,双击其主程序 tftpd64.exe 启动 物理断电重启下路由器,即可看到程序执行 tftp 恢复的进度条,可通过 tftpd64 程序的 Log viewer 栏查看日志,判断是否执行成功。 等待完成 tftp 恢复后设备完成启动(可以 ping 下 192.168.1.1 ,通了就说明起来了),最后 ssh 登录设备并执行 sysupgrade 完成固件刷写。 123456789101112# 将 sysupgrade 镜像传输至路由器的 /tmp 目录,cmd 窗口执行命令:scp D:\\Downloads\\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-squashfs-sysupgrade.itb [email protected]:/tmp/# tftp 恢复写入了一个用于临时过渡的 OpenWrt 固件,我们可以通过 ssh 命令登录其终端:ssh [email protected]# 刷写 OpenWrt 固件root@OpenWrt:~# sysupgrade -F -n /tmp/*-squashfs-sysupgrade.itbTue Oct 24 12:31:18 UTC 2023 upgrade: Commencing upgrade. Closing all shell sessions.Command failed: Connection failedroot@OpenWrt:~# Connection to 192.168.1.1 closed by remote host.Connection to 192.168.1.1 closed. 经过上述操作,我们就完成了 OpenWrt 官方固件的刷写 重新刷写此前未刷入的 BL2 分区虽然不知道 BL2 分区的作用,但是 OpenWrt 的首次引入设备支援的 commit 的作者有提到,强迫症的我还是想要刷进去,我们可以这么做: 1234567891011121314151617181920212223242526# 清除临时过渡固件的密钥信息,否则 ssh 登录或用 scp 命令传输文件会报错ssh-keygen -R 192.168.1.1## 将需要用到的镜像导至路由器的 /tmp 目录下# cmd 窗口执行命令参考:scp D:\\Downloads\\openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-preloader.bin [email protected]:/tmp/# ssh 登录到设备终端ssh [email protected]# 同步仓库源,安装 kmod-mtd-rw 内核模块root@OpenWrt:~# opkg update && opkg install kmod-mtd-rw# 将分区配置为可读写root@OpenWrt:~# insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1# 刷写 BL2 分区root@OpenWrt:~# mtd write /tmp/*-preloader.bin BL2Unlocking BL2 ...Writing from openwrt-23.05.0-mediatek-filogic-h3c_magic-nx30-pro-preloader.bin to BL2 ...# 对了,OpenWrt 默认没设置 ssh / Luci Web 的密码。可以命令设置下:root@OpenWrt:~# passwd# 重启路由器root@OpenWrt:~# reboot 最后,各位不要忘记将电脑的网络设置改回自动获取 IP 哦。 Luci 主题的安装123456789# ssh 登录到设备终端ssh [email protected]# 安装 luci-theme-material 主题opkg updateopkg install luci-theme-material# 安装 Luci 中文语言包(可选)opkg install luci-i18n-base-zh-cn ShellClash 的安装至于为什么不安装 OpenClash 或其他之类的工具?那是因为它们太占用闪存空间了,加之目前 OpenWrt 的闪存布局暂时给 /overlay 的大小就 22.2 MB,能装软件包的挂载分区就小的可怜。至于如何安装及使用 ShellClash 不是本文的重点,请直接移步 ShellClash 作者的教程: 本地安装 ShellClash 的教程 至此,本文完。","categories":[{"name":"Router","slug":"Router","permalink":"https://ericclose.github.io/categories/Router/"}],"tags":[{"name":"OpenWrt","slug":"OpenWrt","permalink":"https://ericclose.github.io/tags/OpenWrt/"},{"name":"ShellClash","slug":"ShellClash","permalink":"https://ericclose.github.io/tags/ShellClash/"}]},{"title":"如何解决 Virtualized Intel VT-x/EPT is not supported on this platform... 的问题","slug":"virtualized-intel-vt-x-ept-is-not-supported-on-this-platform","date":"2023-05-19T08:36:58.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"virtualized-intel-vt-x-ept-is-not-supported-on-this-platform.html","permalink":"https://ericclose.github.io/virtualized-intel-vt-x-ept-is-not-supported-on-this-platform.html","excerpt":"Virtualized Intel VT-x/EPT is not supported on this platform. Continue without virtualized Intel VT-x/EPT? VMware Workstation does not support nested virtualization on this host. Module ‘HV’ power on failed. Failed to start the virtual machine. 我在 Windows 11 宿主机上,通过 VMware Workstation 运行 Red Hat Enterprise Linux,并试图在其之上运行 KVM 虚拟机。遇到了上述报错信息,大意是提醒 VT-x / EPT 不受支持,检测到在宿主机不支持 nested virtualization (嵌套虚拟化,可以简单理解为虚拟机之上运行虚拟机)。 经过一番折腾捣鼓,我发现这是 Windows 上的几个坑点导致的,下面我来具体说明下我是如何解决这个问题的。","text":"Virtualized Intel VT-x/EPT is not supported on this platform. Continue without virtualized Intel VT-x/EPT? VMware Workstation does not support nested virtualization on this host. Module ‘HV’ power on failed. Failed to start the virtual machine. 我在 Windows 11 宿主机上,通过 VMware Workstation 运行 Red Hat Enterprise Linux,并试图在其之上运行 KVM 虚拟机。遇到了上述报错信息,大意是提醒 VT-x / EPT 不受支持,检测到在宿主机不支持 nested virtualization (嵌套虚拟化,可以简单理解为虚拟机之上运行虚拟机)。 经过一番折腾捣鼓,我发现这是 Windows 上的几个坑点导致的,下面我来具体说明下我是如何解决这个问题的。 步骤总览(确保完成以下事项): BIOS 已启用 VT-x 禁用 Hyper-V 相关 Windows 特性 禁用 Windows Security 的内存完整性功能 BIOS 启用 VT-x 选项VT-x (Virtualization Technology on the x86 platform),是英特尔在 x86 平台下的虚拟化技术,我们需要确保 BIOS 是否已启用该选项。不同电脑主板厂商进入 BIOS 的按键不一,建议自行搜索,然后找到 VT-x (Virtualization Technology) 启用即可。 我本人以 HP 的笔记本为例,开机的时候快速点按 F10,即可进入 BIOS 界面。 「BIOS Setup Utility」主界面 → 「Configuration」配置 → 「Virtualization Technology」项改为「Enabled」启用。 禁用 Hyper-V 相关 Windows 特性当 Windows 启用了 Hyper-V 之后,VT-x 将不会起作用。 然而如果您的系统使用了 WSL 或 WSA 之类的功能,则会启用 Hyper-V 这一功能特性。为了解决嵌套虚拟化遇到的报错问题,我们必须关闭 Hyper-V 的相关功能选项,以避免冲突。 「Controll Panel」控制面板 → 「Programs」程序 → 「Turn Windows features on or off」关闭或启用 Windows 特性,确保以下与 Hyper-V 可能相关的所有功能项处于关闭状态: Hyper-V Virtual Machine Platform Windows Hypervisior Platform Windows Sandbox Windows Subsystem for Linux 禁用 Windows Security 的内存完整性功能Windows Security 的「Memory integrity」内存完整性功能也与 VT-x 存在冲突,需要禁用该功能。 「Windows Security」Windows Defender 安全中心 → 「Device security」设备安全 → 「Core isolation」内核隔离 → 「Core isolation details」内核隔离详细信息 → 确保「Memory integrity」内存完整性处于关闭状态: 「Memory integrity」内存完整性 最后,重启设备即可。还是不得不说 Windows 越来越坑了 🤣。","categories":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/categories/Windows/"}],"tags":[{"name":"虚拟化","slug":"虚拟化","permalink":"https://ericclose.github.io/tags/%E8%99%9A%E6%8B%9F%E5%8C%96/"}]},{"title":"摩托罗拉 Edge S Pro 国行系统转换为海外欧洲零售版(支持 OTA)","slug":"How-to-Convert-Edge-S-Pro-to-Retail-Europe","date":"2023-04-26T12:39:48.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"How-to-Convert-Edge-S-Pro-to-Retail-Europe.html","permalink":"https://ericclose.github.io/How-to-Convert-Edge-S-Pro-to-Retail-Europe.html","excerpt":"本文将指引您将 Edge S Pro 国行系统转换为欧洲零售版的系统,并使其可以正常接收 OTA 更新。 至于我为什么要这么做?避开 Lenovo / Motorola 的远程施法只是其中一点 🤣。我最主要的理由是:欧洲地区的 GDPR (通用数据保护条例),地表最强隐私保护法规了解一下。","text":"本文将指引您将 Edge S Pro 国行系统转换为欧洲零售版的系统,并使其可以正常接收 OTA 更新。 至于我为什么要这么做?避开 Lenovo / Motorola 的远程施法只是其中一点 🤣。我最主要的理由是:欧洲地区的 GDPR (通用数据保护条例),地表最强隐私保护法规了解一下。 前情提要USB 驱动的安装 点击以展开 请确保已正确安装 Motorola USB 驱动官网官方版本在缺乏某些运行环境(如 Visual C++ 等)的情况下,Windows 上安装可能会报错,安装不上(且无有效提示信息)Motorola-USB-Drivers-win推荐,该版本无需依赖运行环境库也可以正常安装(仅需 Windows 10 v1607 及以上版本)。是我从 Google USB 驱动 和 Motorola Rescue and Smart Assistant 提取而来,克隆或下载整个仓库,通过以管理员模式运行 bat 脚本,即可完成驱动的安装) 配置 ADB 的环境变量 点击以展开 配置 ADB 的环境变量的步骤ADB 下载ADB 环境变量的配置方法:Windows 10 及以上版本:按下 Win 键,键入 「environment variables」或『环境变量』,搜索预览结果选择编辑系统环境变量;『环境变量』→ 双击「系统变量」中的『PATH』→ 『新建』,在文本框输入 adb.exe 所在目录的绝对路径,如『D:\\Program Files\\platform-tools』,最后保存即可。 基础常识 点击以展开 知悉启用 USB 调试的方法『Settings』设置 →『About Phone』关于手机 → 快速连续点击『Build number』版本号,直至提示已启用开发者选项;『Settings』设置 →『System』系统 →『Developer options』开发者选项 →『USB debugging』USB 调试知悉如何将手机启动至 bootloader 模式方法 1:设备处于关机状态下,长按『电源键』&『音量 -』,直至设备启动至 bootloader 模式后即可松开按键方法 2:设备启用 USB 调试之后,用数据线将手机与电脑连接,通过 cmd 执行命令 adb reboot bootloader 重启至 bootloader 模式知悉如何将手机启动至 recovery 模式方法 1:设备处于关机状态下,长按『电源键』&『音量 +』,直至设备启动至 recovery 模式后即可松开按键方法 2:设备启用 USB 调试之后,用数据线将手机与电脑连接,通过 cmd 执行命令 adb reboot recovery 重启至 recovery 模式 解锁 bootloader 点击以展开 请确保设备已经解锁 bootloader解锁 Motorola 设备的 bootloader 有以下影响,请自行决定是否解锁:原则上意味着放弃保修资格解锁操作将会清除设备数据解锁 bootloader 后设备 DRM 等级将从 L1 降低至 L3(目前发现欧版更新至 Android 13 又恢复成 L1)解锁后设备启动将会提示“设备已解锁 bootloader”解锁 bootloader - Motorola 官网 重要分区的备份 点击以收起 ⚠️ 备份重要的分区cid:用于分配 CPU ID、手机区域代码、bootloader 解锁标识符等。主管设备能刷入的固件persist:主管出厂的一些数据,例如 IMEI、蓝牙,WIFI MAC 地址、设备 SN 等参数下载 LineageOS 19.1 配套的 recoveryLineageOS 19.1 recovery 下载地址(最新版本的 LineageOS 20 的 boot.img 必须与 dtbo 和 vendor_boot 配套刷入才能正常使用,19.1 的则可以独立使用)将手机重启至 bootloader 模式,通过命令刷入 Lineage recovery123# <boot.img_路径> 不需要手动填写,直接将 boot.img 拖至 cmd 窗口会自动填写路径fastboot flash boot <boot.img_路径># 实例:fastboot flash boot D:\\Downloads\\boot.img将手机重启至 recovery 模式,通过 Lineage recovery(「Advanced」高级 →「Enable ADB」启用 ADB shell),电脑使用命令进行备份:123456789101112# 访问 shell,shell 环境以 `pstar:/ #` 开头adb shell# /tmp 是临时挂载目录,重启会自动清除,我们将 cid 和 persist 暂时导出至 /tmp 目录dd if=/dev/block/bootdevice/by-name/cid of=/tmp/ciddd if=/dev/block/bootdevice/by-name/persist of=/tmp/persist# 退出 shell 环境exit# 将导出的 cid 和 persist 所在的 tmp 目录整个导出,备份至电脑的目录# 请根据自身情况,妥善选择备份至的电脑路径,如:D:\\Downloads\\adb pull /tmp/ D:\\Downloads\\ 固件的下载及刷写 Edge S Pro / Edge 20 Pro / pstar 欧洲零售版(RETEU)固件下载: 固件链接 选择最新的版本下载即可 RETEU 固件的刷写: 此处我们需要用到 motorola_flash_xml 工具(很多人喜欢用 TinyFastbootScript 刷机工具,感兴趣的可以自行去研究)协助我们生成 fastboot 刷写脚本,而本文使用的工具依赖于 Python。所以我们的操作如下: 首先下载并安装 Python 最新版 ⚠️ 安装的时候,确认勾选「Add python.exe to PATH」添加 python.exe 到 PATH 的选项,其他保持默认即可。 克隆或下载 motorola_flash_xml 整个仓库 将 RETEU 的固件 *.zip 解压到 motorola_flash_xml.py 所在的目录(即 flashfile.xml 与 motorola_flash_xml.py 处于同一目录) 通过 cmd 执行以下命令: 12345678# 将 cmd 的路径切换至 motorola_flash_xml.py 所在的目录,如:cd /d D:\\repo\\motorola_flash_xml# 生成刷写脚本:python motorola_flash_xml.py# 刷写 RETEU 固件:flash_all.bat 执行完上述操作之后,RETEU 的系统就刷写进去了。 软件通道的转换操作修改软件通道之后,您的设备将可以正常接收欧洲零售版的 OTA 更新。操作方法如下: 将手机重启至 bootloader 模式 更改『Software channel』软件通道为 reteu 设备处于 bootloader 模式下,cmd 键入命令: 1fastboot oem config carrier reteu 您仍需要将设备恢复出厂设置之后,软件通道的修改才能生效 『Software channel』软件通道 的查看: 『Settings』设置 →『About Phone』关于手机 →『Software channel』软件通道 FAQ 关于回锁 bootloader 的问题(点击以展开) Motorola 零售机的 bootloader 有三种模式:oem_locked:bootloader 的出厂状态flashing_unlocked:解锁 bootloader 后的状态flashing_locked:通过命令回锁的状态。回锁(flashing_locked)有以下影响:回锁不能恢复您的保修资格(因为 bootloader 状态与出厂不符),且并不能恢复 DRM 等级;如果您刷的是匹配地区的官方固件(且未经任何修改,如未装 Magisk 等),回锁您可能仍能正常启动;但如若刷了其他区域的固件或第三方固件,回锁可能只会直接导致变砖;回锁可能会导致您无法通过官方的解锁方法再次解锁 bootloader 关于系统降级的问题(点击以展开) Motorola 全部机型的 Bootloader 和基带 (Baseband Part) 部分存在熔丝级防降级机制,刷入之后很可能无法降级回许久未更新的国行系统。多数情况下,基带版本降级可能会导致设备 IMEI 丢失或手机信号丢失的情况,更新版本后则可恢复正常。 关于 Google 账户锁的问题 初次刷入 RETEU 的系统不存在 Google 账户锁,可以跳过不登陆 Google 账户。但如果您已经登陆过 Google 账户,未退出 Google 账户或通过 recovery 抹除设备(而非通过系统设置恢复出厂设置),再次使用 RETEU 固件则会触发 Google 账户锁(开机向导状态下,通知栏左上角有个 🔒 的标志,则为触发 Google 账户锁)。可以通过 Lineage recovery(「Advanced」高级 →「Enable ADB」启用 ADB shell)使用命令抹除 frp 分区解决:123adb shelldd if=/dev/zero of=/dev/block/bootdevice/by-name/frp bs=512 count=1024exit抹除完 frp 分区后,请再进入系统设置完成一次正常的恢复出厂设置(否则您可能会遇到一些奇奇怪怪的问题,如无法通过 apk 安装软件等) 截图展示 收到 OTA 更新的相关截图: 更新后关于手机截图:","categories":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/categories/Android/"}],"tags":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/tags/Android/"},{"name":"Motorola","slug":"Motorola","permalink":"https://ericclose.github.io/tags/Motorola/"}]},{"title":"如何安装 Microsoft Store 版本的 Office","slug":"how-to-install-office-from-microsoft-store","date":"2023-03-22T06:37:53.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"how-to-install-office-from-microsoft-store.html","permalink":"https://ericclose.github.io/how-to-install-office-from-microsoft-store.html","excerpt":"有别于 Office Tool Plus 工具部署安装 Click-to-Run 版本的 Office,本文将指引您通过第三方的解析网站从微软商店获取 UWP 版本的 Office ,并使之可以顺利地在新版本的 Windows 环境下侧载安装。","text":"有别于 Office Tool Plus 工具部署安装 Click-to-Run 版本的 Office,本文将指引您通过第三方的解析网站从微软商店获取 UWP 版本的 Office ,并使之可以顺利地在新版本的 Windows 环境下侧载安装。 优缺点 优点 缺点 应用商店版本的 Office 没有 Click-to-Run 组件,不存在后台。 应用商店版本的 Office 安装包非常大,仅基本包就超过 Click-to-Run 安装包的总大小。 应用商店版本的 Office 卸载很快,而且组件可以直接单独安装。 应用商店版本的 Office 只能在支持 UWP 应用的 Windows 10 及以上系统版本上运行。 应用商店版本的 Office 可以自动适配系统语言,不需手动下载语言包。 应用商店版本的 Office 仅提供 32-bit,而 Click-to-Run 可以自选 32-bit 或 64-bit 版本 获取相关安装包 第三方的 Microsoft Store 应用下载解析网站:Microsoft Store - Generation Project 通过该解析网站,解析 App Installer、Office 任一组件的商店 URL 链接即可得到所需直链(包括 Office 基础包:Microsoft Office Desktop Apps)。 💡Tips:考虑到兼容性问题,建议 Office 基础包(Microsoft Office Desktop Apps)及任一 Office 组件的版本一致。 💡Tips:因为 Chromium 等浏览器新版本已经禁用了在 https 站点直接点击下载 http 链接的文件,请将解析得到的 http 直链复制到新的标签页,才可顺利下载。 名称 商店链接 下载文件名 sha1sum App Installer link Microsoft.DesktopAppInstaller_2021.1207.203.0_neutral_~_8wekyb3d8bbwe.AppxBundle 6e7d34b433bcb76f203843647186c72f0bdc83b3 Microsoft Office Desktop Apps ❌ Microsoft.Office.Desktop_16051.16130.20306.0_neutral_~_8wekyb3d8bbwe.AppxBundle ae9b639d7ef8f4a9c0c7b52036e7a4abaaf2e6c0 Word link Microsoft.Office.Desktop.Word_16051.16130.20306.0_neutral_~_8wekyb3d8bbwe.AppxBundle a60c3f15fd94b0c13429a4d0cd993239956418d0 Excel link Microsoft.Office.Desktop.Excel_16051.16130.20306.0_neutral_~_8wekyb3d8bbwe.AppxBundle f04b25e5c123c555e3f673cc5efb8acfe9d65696 PowerPoint link Microsoft.Office.Desktop.PowerPoint_16051.16130.20306.0_neutral_~_8wekyb3d8bbwe.AppxBundle c46b8ee31d12b92172fc8aded888b9c4c7e7f8b4 OneNote link Microsoft.Office.Desktop.OneNote_16051.16130.20306.0_neutral_~_8wekyb3d8bbwe.AppxBundle b63f14bb5a9886580abf7f5b09262d7fe899144f … … … … 安装说明要想在新版本的 Windows 环境下顺利安装 Microsoft Store 版本的 Office,请依照以下次序安装即可: 首先,请先鼠标右键选择下载好的 App Installer 安装包 Microsoft.DesktopAppInstaller_2021.1207.203.0_neutral_~_8wekyb3d8bbwe.AppxBundle,鼠标点击确认安装旧版本的 App Installer。如果不安装这个旧版本的 App Installer,可能在您的系统上如(Windows 11)将会报错“Error in parsing the app package.”: 然后再安装基础包 Microsoft Office Desktop Apps,之后任意次序安装各 Office 组件即可。 关于激活只要拥有正版授权的用户(包括目前大多数笔电预装的 Microsoft Office 家庭和学生版授权),都可以直接在 Microsoft Store 版本的 Office 登录自己的微软账号或者输入密钥激活即可。 如果需要使用 KMS 激活,具体做法可参考:[技能扩展] 安装 Microsoft Store 版本的 Office","categories":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/categories/Windows/"}],"tags":[{"name":"Office","slug":"Office","permalink":"https://ericclose.github.io/tags/Office/"},{"name":"Microsoft Office","slug":"Microsoft-Office","permalink":"https://ericclose.github.io/tags/Microsoft-Office/"},{"name":"Microsoft Store","slug":"Microsoft-Store","permalink":"https://ericclose.github.io/tags/Microsoft-Store/"}]},{"title":"官方 OpenWrt 无 Web 页面 (Luci)?手动编辑配置文件实现宽带拨号 (PPPoE)","slug":"pppoe-without-luci","date":"2022-10-21T02:56:31.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"pppoe-without-luci.html","permalink":"https://ericclose.github.io/pppoe-without-luci.html","excerpt":"导语:官方 OpenWrt 默认情况不包含 Luci Web 页面。虽然默认启用了 DHCP 可以直接从网关自动获取 IP 或 DNS,但是如果您是需要配置该设备连宽带拨号 (PPPoE) 的,没有 Luci 页面的情况下该如何操作呢?本文将会教您如何通过手动配置的方法实现 PPPoE 拨号:","text":"导语:官方 OpenWrt 默认情况不包含 Luci Web 页面。虽然默认启用了 DHCP 可以直接从网关自动获取 IP 或 DNS,但是如果您是需要配置该设备连宽带拨号 (PPPoE) 的,没有 Luci 页面的情况下该如何操作呢?本文将会教您如何通过手动配置的方法实现 PPPoE 拨号: PPPoE 网络连接打开系统的终端(在 Windows 的用户打开 cmd 或 Windows Terminal),通过输入命令 ssh [email protected] 登录至设备,然后执行命令: 1vim /etc/config/network 找到配置文件中的 config interface 'wan' 这一块,按照如下格式填写: 1234567891011121314151617......config interface 'wan' option device 'eth1' option proto 'pppoe' option username 'username' option password 'password' option ipv6 'auto' option peerdns '0' list dns '223.5.5.5' list dns '119.29.29.29'config interface 'wan6' option device 'eth1' option proto 'dhcpv6'...... 配置文件各项解释如下: device ‘eth1’ : 网卡设备为 eth1,不同设备可能具有不同的网卡设备名。保持该项配置不变 proto ‘pppoe’ : 协议默认是 dhcp,我们需要将此改为 pppoe 以进行宽带拨号 username ‘username’ : 该项为运营商 (ISP) 提供的宽带账户名,将 ‘username’ 改为您实际的账户名即可 password ‘password’ : 该项为运营商 (ISP) 提供的宽带密码,将 ‘password’ 改为您实际的密码即可 ipv6 ‘auto’ : ipv6 自动获取 peerdns ‘0’ : 是否从上级网关获取 DNS(通常为运营商 ISP 提供的 DNS),0 为不获取 list dns ‘x.x.x.x’ : 手动分配的 DNS,我这里设置了 2 个阿里的公共 DNS 服务器,您可以根据您自身需求更改此项 配置文件修改完之后,重启下网络服务即可: 1/etc/init.d/network restart 修改设备 LAN IP如果您使用的是官方 OpenWrt,设备默认 LAN IP 是 192.168.1.,但如果您的网络环境中有其他设备(常见的如如运营商的光猫设备)使用了同样的 LAN IP,这将会导致您前面无法通过 ssh 登录至设备,此时您需要修改设备的 LAN IP。 为确保不受其他设备的影响,请先暂时移除设备的 WAN 口线缆,仅使用 1 个 LAN 口与您的电脑相连,然后此时通过 ssh [email protected] 登录至设备,执行命令修改: 123uci set network.lan.ipaddr="192.168.2.1"uci commit network/etc/init.d/network restart 上面我将设备的 LAN IP 修改为 192.168.2.1,您可以根据您自身情况修改。 安装 Luci(可选项)通过上面的操作,您的设备应该已经可以正常联网了,如果您还是想要 Luci Web 页面,您可以通过下列命令安装即可: 12345678# 更新软件包仓库信息opkg update# 安装 Luciopkg install luci# 安装 Luci 中文语言包opkg install luci-i18n-base-zh-cn 安装完成后您便可以通过浏览器访问设备的 LAN IP 进入 Luci 页面了。","categories":[{"name":"OpenWrt","slug":"OpenWrt","permalink":"https://ericclose.github.io/categories/OpenWrt/"}],"tags":[{"name":"OpenWrt","slug":"OpenWrt","permalink":"https://ericclose.github.io/tags/OpenWrt/"},{"name":"PPPoE","slug":"PPPoE","permalink":"https://ericclose.github.io/tags/PPPoE/"}]},{"title":"在 Debian 10 上 Redis 的安装及其安全配置","slug":"how-to-install-and-secure-redis-on-debian-10","date":"2021-02-17T13:57:12.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"how-to-install-and-secure-redis-on-debian-10.html","permalink":"https://ericclose.github.io/how-to-install-and-secure-redis-on-debian-10.html","excerpt":"","text":"Redis 是一种基于内存的键值对存储数据库,其以灵活性、性能和广泛的语言支持而闻名。本教程将会演示如何在 Debian 10 服务器上安装和安全地部署 Redis。 先决条件要完成本教程,您需要使用一个拥有 sudo 权限的非 root 用户和基本的防火墙配置的服务器。 当你准备好开始时,使用拥有 sudo 权限的用户登录到你的服务器,然后继续下面的工作。 安装和配置 Redis更新你的本地 apt 软件包缓存并安装 Redis: 12sudo apt updatesudo apt install redis-server 在这之后,需要对 Redis 的配置文件进行一个重要的修改,该文件是在安装过程中自动生成的。使用你喜欢的文本编辑器对其进行编辑: 1sudo vim /etc/redis/redis.conf 在文件中,找到 supervised 项,此项允许你声明使用 init 将 Redis 作为一个服务来进行管理。默认情况下 supervised 被设为 no,所以我们将其改为 systemd: 随后只需要重启一下 Redis 服务: 1sudo systemctl restart redis 测试 Redis在对 Redis 的配置进行任何进一步的更改之前,最好确保 Redis 能按照预期的方式运行。首先检查 Redis 服务是否正在运行: 1sudo systemctl status redis 如果运行时没有任何错误,这个命令将产生类似于下面的输出: 123456789101112131415* redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2021-02-18 12:53:46 CST; 4s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 9790 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Main PID: 9791 (redis-server) Tasks: 4 (limit: 544) Memory: 1.8M CGroup: /system.slice/redis-server.service `-9791 /usr/bin/redis-server 127.0.0.1:6379Feb 18 12:53:46 debian systemd[1]: Starting Advanced key-value store...Feb 18 12:53:46 debian systemd[1]: redis-server.service: Can't open PID file /run/redis/redis-server.pid (yet?) after start: No suchFeb 18 12:53:46 debian systemd[1]: Started Advanced key-value store. 在这里,你可以看到 Redis 正在运行( active (running) ),并且已经被设置为 enabled(每次服务器启动时启动)。 要测试 Redis 是否正常运行,可使用命令行客户端连接到服务器: 1redis-cli 使用 ping 命令测试连通性: 1127.0.0.1:6379> ping 1PONG PONG 这个输出意味着服务器的连通性是没问题的。接下来检查是否能正常创建一个 key 并设置值: 1127.0.0.1:6379> set test "It's working!" 1OK 执行下列指令获取指定 key 的值: 1127.0.0.1:6379> get test 假设一切正常,你就能检索到你存储的值: 1"It's working!" 确认可以取值后,退出 Redis 命令提示符,回到 shell: 1127.0.0.1:6379> exit 作为最后一项测试,我们将检查 Redis 是否能够在停止或重启后仍能持久化数据。要做到这一点,你可以: 首先 sudo systemctl restart redis 重启 Redis 实例。 redis-cli 连接到服务器,get test 尝试获取先前给 test 设定的值。 如果没有异常,那就说明你的 Redis 已经就绪。然而,它的一些默认配置是不安全的,为恶意行为者提供了攻击和访问你的服务器及其数据的机会。本教程中的其余步骤涵盖了 Redis 官方网站规定的缓解这些漏洞的方法。 Redis 的 bind 参数编辑 Redis 配置文件 /etc/redis/redis.conf : 1sudo vim /etc/redis/redis.conf 找到这一行,你会看到这么一行: 默认情况下,Redis 只能从本地回环网络接口( localhost )访问,并不会暴露给公网接口,这样子是相对更安全的。即 bind 127.0.0.1 ::1。 如果在正常业务中 Redis 服务的确需要公网上的其他机器对其访问,可以通过在 bind 项后追加服务器的公网接口 IP。 可以使用 ip addr show 查看当前 Linux 服务器上的网络接口。 12345678910111213eric@debian:~$ ip addr show1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq state UP group default qlen 1000 link/ether 00:16:13:4b:af:50 brd ff:ff:ff:ff:ff:ff inet 107.xxx.xxx.245/24 brd 107.189.30.255 scope global dynamic ens3 valid_lft 2589688sec preferred_lft 2589688sec inet6 fe80::216:13ff:fe4b:af50/64 scope link valid_lft forever preferred_lft forever 我当前有两个网络接口: 网络接口 说明 lo 本地回环接口 ens3 公网接口 所以在 bind 后面加多一个公网接口的 IP,地址为 107.xxx.xxx.245(IP 地址中的 x 是为了隐去我的 IP 地址的部分位数)。 /etc/redis/redis.conf1bind 127.0.0.1 ::1 107.xxx.xxx.245 然后 sudo systemctl restart redis 重启下 redis 服务即可,这样配置 Redis 就会监听本地回环接口和公网接口了。 要检查这个变化是否已经生效,可以使用 ss 或 netstat 来验证: 1ss -an | grep 6379 1sudo netstat -lnp | grep redis 接下来你还需要添加一个防火墙规则,假设你使用 ufw 来管理防火墙并想要允许指定的远程机器的 IP(即客户端的公网 IP) 访问 Redis 服务,你可以运行以下命令: 1sudo ufw allow proto tcp from <CLIENT_IP_ADDRESS> to any port 6379 将 <CLIENT_IP_ADDRESS> 改为客户端的公网 IP 完成后,你可以使用 redis-cli 工具通过 ping Redis 服务器来测试连接,可以在另一台机器(作为客户端)中执行命令: 1redis-cli -h <REDIS_IP_ADDRESS> ping 将 <REDIS_IP_ADDRESS> 改为 Redis 服务端的公网 IP(本文的例子为 107.xxx.xxx.245,请自行根据你的情况作出修改),没有问题的话该命令将返回 PONG 的响应。 配置 Redis 密码密码是直接在 Redis 的配置文件 /etc/redis/redis.conf 中配置的,所以再次编辑配置文件 /etc/redis/redis.conf : 1sudo vim /etc/redis/redis.conf 找到 SECURITY 部分可以看到有一行被注释(即 # 开头)的项: /etc/redis/redis.conf12. . .# requirepass foobared 删去开头的 # 和空格,将默认的密码 foobared 改成你想要的密码。当然为了更安全,与其自己编写密码,你也可以选择使用一个简单的命令生成复杂度更高的密码(该命令将显示给定字符串的 SHA256 校验和),如: 1echo "HelloWorld" | sha256sum 切记:要创建一个独特的密码,请将 "" 中的字符串(即 HelloWorld)改为任何其他单词或短语。 修改后的配置文件将如下所示: 重启 redis 服务之后连接到 redis: 12sudo systemctl restart redisredis-cli 直接尝试给指定 key 设置一个值: 1127.0.0.1:6379> set key1 10 不出意外的话会报错,因为你没有通过验证。输出报错信息如下: 1(error) NOAUTH Authentication required. 所以你需要使用 auth 命令进行验证: 1127.0.0.1:6379> auth your_redis_password 请将 your_redis_password 改为您在 Redis 配置文件中的密码。 验证通过后就能正常使用 Redis 了。 禁用或重命名危险命令Redis 内置的另一个安全功能可以禁用或重命名某些被认为是危险的命令,如 FLUSHDB,FLUSHALL,DEBUG 等。一些被认为是危险的命令(以下并非完整列表)包括: FLUSHDB FLUSHALL KEYS PEXPIRE DEL CONFIG SHUTDOWN BGREWRITEAOF BGSAVE SAVE SPOP SREM RENAME DEBUG 你是否应该禁用或重命名一个命令取决于你的具体需求,如果你知道你永远不会使用一个可能被滥用的命令,那么你可以禁用它(也可设置为一些复杂的、难以猜测的名字)。 同样的,编辑配置文件 /etc/redis/redis.conf 的 SECURITY 部分设置。 要禁用一个命令,只需将其重命名为一个空字符串(用一对引号表示,中间没有字符),如下所示: /etc/redis/redis.conf12345. . .rename-command FLUSHDB ""rename-command FLUSHALL ""rename-command DEBUG "". . . 要重命名一个命令,请给它另一个名字(一些复杂的或难以猜测的名字,但至少应该让你自己很容易记住),如下面的例子所示: /etc/redis/redis.conf1234. . .rename-command SHUTDOWN SHUTDOWN_MENOTrename-command CONFIG ASC12_CONFIG. . . 修改完配置文件后,最后重启 Redis 服务就好了。 总结在本教程中,您安装并配置了 Redis,验证了您的 Redis 安装是否正常运行,并使用其内置的安全功能使其不易受到恶意行为者的攻击。请记住,一旦有人登录到你的服务器,就很容易规避我们设置的 Redis 特定安全功能。因此,最重要的安全功能是你系统的防火墙。","categories":[{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/categories/Linux/"}],"tags":[{"name":"Redis","slug":"Redis","permalink":"https://ericclose.github.io/tags/Redis/"},{"name":"Debian","slug":"Debian","permalink":"https://ericclose.github.io/tags/Debian/"}]},{"title":"一文教您使用 Sandboxie Plus 运行 QQ 桌面版","slug":"run-qq-with-sandboxie-plus","date":"2021-01-20T07:26:57.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"run-qq-with-sandboxie-plus.html","permalink":"https://ericclose.github.io/run-qq-with-sandboxie-plus.html","excerpt":"图片来源:Pixiv 导语:腾讯 QQ/Tim 会获取用户浏览器(Chrome、IE 以及其它 Chromium 内核浏览器)的历史访问记录,在读取后会根据数据对信息情况进行分类。腾讯 QQ/Tim 会使用 MD5 比较历史记录中的搜索链接,链接包括淘宝、天猫、京东。搜索链接匹配之后,腾讯 QQ/Tim 还会使用 MD5 比较搜索的关键字,如古着、融资、股票等。 众多网友进行一波分析谈论得了出上述结论,而腾讯的回应则是『读取浏览器数据是为了用户好』。本文将介绍如何使用 Sandboxie Plus 防范 QQ 读取个人隐私,希望能给您一些帮助。","text":"图片来源:Pixiv 导语:腾讯 QQ/Tim 会获取用户浏览器(Chrome、IE 以及其它 Chromium 内核浏览器)的历史访问记录,在读取后会根据数据对信息情况进行分类。腾讯 QQ/Tim 会使用 MD5 比较历史记录中的搜索链接,链接包括淘宝、天猫、京东。搜索链接匹配之后,腾讯 QQ/Tim 还会使用 MD5 比较搜索的关键字,如古着、融资、股票等。 众多网友进行一波分析谈论得了出上述结论,而腾讯的回应则是『读取浏览器数据是为了用户好』。本文将介绍如何使用 Sandboxie Plus 防范 QQ 读取个人隐私,希望能给您一些帮助。 相关背景 QQ 正在尝试读取你的浏览记录 - V2EX | 📁归档 关于 QQ 读取 Chrome 历史记录的澄清 - 看雪论坛 | 📁归档 也论腾讯拿你的历史记录做了点啥- Lion Yang & Epics of Anticensorship | 📁归档 如何看待 QQ 扫描读取所有浏览器的历史记录? - 腾讯QQ的回答 - 知乎 | 📁归档 相关评论(点击以展开) 『判断用户是否恶意登录』还需要读取淘宝、天猫、京东搜索记录,看用户是否搜了炒股、股票、融资、融券、古着、VINTAGE 吗?判断用户登陆风险安全还要启动之后 10 分钟才扫描吗?你 TM 自己信吗?反正我是不信。 – from Epics of Anti-Censorship我就想知道 —— 淘宝、天猫、京东的搜索链接匹配和官方说的拦截恶意程序有什么关系。再问几个不懂的问题:腾讯:读取浏览器历史用以判断用户登录安全风险的情况,读取的数据用于在PC QQ的本地客户端中判断是否恶意登录。①. 为什么要在登陆后十分钟进行检测?判断是否为恶意登录不应该在登录时进行吗?②. 检测的关键字为什么是电商地址、股票、融资这几个关键词?你怎么通过这几个关键词来判断是不是恶意登录?③. 知乎的热搜为什么直接被撤了?④. QQ这篇回答的评论为什么还要审核?–from 火绒安全实验室公众号文章评论区 操作流程操作视频 ⚠ 视频没有任何配音和字幕,建议直接对照文章进行操作。 图文教程准备相关文件 Sandboxie Plus 安装包(Sandboxie-Plus*.exe) 前往「Sandboxie Plus 的下载页」,根据您操作系统位数(x86 为 32 位,x64 为 64 位)进行选择下载。 QQ 桌面版 Appx 包(*.appx) 将「QQ 桌面版(Microsoft Store)」的链接复制到「Online link generator for Microsoft Store」的输入框,渠道选择「Retail 零售」。确认,等待页面载入后,选择最大的文件进行下载。 QQ PC 版安装包(QQ*.exe) 直接前往「QQ PC 版」页面下载。 操作要点 说明:要在沙盒运行微软商店版的 QQ(无 qqprotect.exe)之前得先在沙盒里安装一次 QQ PC 版(安装启动一次之后就可以卸载),否则无法启动,就是这么玄学 🤣。 安装 Sandboxie Plus 安装路径,选择你想要的路径就行,如我选择 G:\\Program Files\\Sandboxie-Plus。其他选项默认 启用 Windows 10 Core UI 兼容选项 ⚠ 如果不对此进行操作,将会导致沙盒里的应用无法使用系统内置的输入法输入中文。 Sandboxie Plus 菜单栏「Options」 -> 「Global Settings」 -> 「Software Compatibility」 -> 启用「Windows 10 Core UI」,点击「Apply」。 Sandboxie Plus 文件系统根目录的设置 ⚠ 如果不对此进行操作,沙盒里的文件将会默认存储到系统盘。 可以通过 Sandboxie Plus 菜单栏「Options」 -> 「Global Settings」 -> 「Advanced Options」-> 「Sandbox file system root」修改路径,如我修改成 G:\\Sandboxie\\%SANDBOX%,最后点击「Apply」。 移除默认的沙盒「DefaultBox」 默认的沙盒我们不需要,留着没用,不如删了。 鼠标右键选中,选择「Remove Sandbox」。 新建沙盒 Sandboxie Plus 菜单栏「Sandbox」 -> 「Create New Box」,输入名字,其余选项默认即可。 设置沙盒的资源访问权限 ⚠ 目前 Sandboxie Plus 暂不支持资源访问的白名单模式,所以编写规则略显麻烦,不过据 Sandboxie Plus 项目成员 DavidXanatos 的回复说在计划中了,那么就让我们拭目以待吧。 鼠标右键选中您新建的沙盒,「Sandbox Options」,左栏「Resource Access」,「Add File/Folder」,可根据您的需求,借鉴以下内容填写。 Closed:拒绝对资源的所有访问(包括读写),例如对包含敏感数据的文件或文件夹的访问。 1234567891011%UserProfile%\\AppData\\Local\\Google # Chrome 浏览器数据%UserProfile%\\AppData\\Local\\Microsoft # Edge 浏览器数据%UserProfile%\\.ssh # SSH 数据%UserProfile%\\.gnupg # GPG 数据%UserProfile%\\.config # Clash 数据%AppData%\\clash_win # Clash 数据%UserProfile%\\.bash_history # Git Bash 历史记录%UserProfile%\\.gitconfig # Git 配置文件D:\\ # D 盘E:\\ # E 盘F:\\ # F 盘 解压 QQ 桌面版 Appx 包(*.appx) 使用解压缩软件(如 7-zip)解压 QQ 桌面版 Appx 包(*.appx),找到 QQ 文件夹,再用解压缩软件将 QQ 文件夹打包成 zip 格式,命名为 QQ.zip。 移动相关文件到合适的位置 因为我这边下载的文件默认路径在 F:\\Downloads,而 F 盘已经被我设为拒绝访问,故需要将文件放置到拒绝资源访问权限规则之外的位置。如将 QQ.zip 和 QQ PC 版安装包(QQ*.exe)移动至 G:\\。 安装 QQ PC 版到沙盒 直接鼠标右键选中 QQ*.exe,选择「Run Sandboxed」,然后流程如往常安装软件一样,自定义安装,选择安装路径和个人文件夹保存位置(当然和前面一样,必须是拒绝资源访问权限规则之外的位置),如分别为 G:\\Program Files 和 G:\\Documents,安装完成后启动过一次再退出就可以了。 卸载 QQ PC 版 Sandboxie Plus 主界面鼠标右键选中您创建过的沙盒,「Run」 -> 「Run Explorer」,这样也就是在沙盒里打开资源管理器了。找到安装路径下的 QQUninst.exe,具体路径如 G:\\Program Files\\Tencent\\QQ\\QQUninst.exe,双击,完成卸载后再将 G:\\Program Files\\Tencent 整个文件夹删除。 在沙盒打开的资源管理器中将 QQ.zip 解压 鼠标右键选中文件,「Open with 打开方式」 -> 「Windows Explorer 资源管理器」,然后将 QQ 文件夹复制到合适的位置,如 G:\\ 启动 QQ 并创建快捷方式 在 Sandboxie Plus 主界面,找到 QQ 的主进程,鼠标右键选中,「Create Shortcut 创建快捷方式」放到桌面就可以了,下次想要在沙盒运行 QQ 只需要直接双击桌面上的快捷方式咯","categories":[{"name":"Software","slug":"Software","permalink":"https://ericclose.github.io/categories/Software/"}],"tags":[{"name":"Sandboxie Plus","slug":"Sandboxie-Plus","permalink":"https://ericclose.github.io/tags/Sandboxie-Plus/"},{"name":"QQ","slug":"QQ","permalink":"https://ericclose.github.io/tags/QQ/"},{"name":"沙盒","slug":"沙盒","permalink":"https://ericclose.github.io/tags/%E6%B2%99%E7%9B%92/"}]},{"title":"V2Ray (WebSocket + TLS + Web + Cloudflare) 手动配置详细说明","slug":"V2Ray-TLS-WebSocket-Nginx-with-Cloudflare","date":"2021-01-08T11:56:15.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"V2Ray-TLS-WebSocket-Nginx-with-Cloudflare.html","permalink":"https://ericclose.github.io/V2Ray-TLS-WebSocket-Nginx-with-Cloudflare.html","excerpt":"先决条件 在开始操作之前,建议你先了解以下基础知识: 使用 ssh 命令或 ssh 客户端登录远程服务器 使用 vim 或其他编辑器的最基本的操作","text":"先决条件 在开始操作之前,建议你先了解以下基础知识: 使用 ssh 命令或 ssh 客户端登录远程服务器 使用 vim 或其他编辑器的最基本的操作 购买 VPS 购买 VPS 的说明(点击以展开) Hmmm… 本人学生党(穷 ➕ 没有办理国际信用卡),买境外的 VPS 不太方便。我找了相对便宜的(没有活动时的价格最低为 $3.71 / 月)且支持使用支付宝的 VPS 提供商 —— CloudCone。注册登录没太多好说的,唯一的建议就是注册的时候填写国外的邮箱(Cloudcone 将会通过这个邮箱告知你 VPS 的 IP 地址和 root 用户的初始密码)。这里简单说下如何通过支付宝进行充值:填写完支付宝关联的邮箱地址(如支付宝未与任何邮箱关联,请自行搜索相关内容),会跳转至支付宝扫码付款的页面,付款成功就可新建 VPS 实例了。新建实例部分,本文以 Debian 10 为例,您也可以使用其他 Linux 发行版本。如您使用其他 Linux 发行版本,本教程后续的部分命令或许会有些许差异(如软件包的安装等),当然本文对您仍具有参考意义。主机名按照框内灰色字体的格式填写即可。新建实例成功后,请注意查看你注册账号时的邮箱,是否收到包含服务器公网 IPv4 地址和 root 用户初始密码的电子邮件。 初始化 VPS 具体步骤 ssh 登录到远程服务器的 root 用户后再完成以下操作:更新系统已知的软件包列表、升级系统上的所有软件包、移除不再需要的依赖软件包:1apt update && apt upgrade && apt autoremove正经的 Linux 用户不会用 root 干所有的事情,如果这么做的话将会很危险。创建一个普通的用户,并让它可以通过 sudo 指令用 root 权限执行命令是一般的解决方案。在用 sudo 之前,我们需要先安装 sudo 这个软件包:1apt install sudo新建一个普通用户,本文新建名为 eric 的用户( -m 为用户创建相应的 home 目录,-s 选项使用 /bin/bash 作为用户的 shell,-G 并将其添加到 sudo 用户组中),创建好后第2行命令给 eric 用户设置一个密码:12useradd -m -s /bin/bash -G sudo ericpasswd eric相关建议(可选操作)相关建议为了安全起见,建议你完成下列操作:禁止通过 SSH 登录到 root 用户限制 SSH 通过用户密码来登录,并实现 SSH 仅能通过密钥登录服务器在操作之前,你需要先将本机公钥添加到远程服务器首先确认下本机是否生成过 SSH 密钥。Git Bash 上执行命令 ls ~/.ssh 查看是否有 id_* 和 id_*.pub 这两个文件(其中 * 是生成密钥的签名类型),如果没有则需要通过 ssh-keygen 生成,在 Git Bash 中执行命令:1ssh-keygen -t ecdsa如果已生成过 SSH 密钥,你现在就可以通过命令将本机的公钥信息添加到远程服务器中,执行命令后会让你确认信息,输入 yes,然后输入服务器用户的登录密码:123456789$ ssh-copy-id eric@服务器IP地址......Are you sure you want to continue connecting (yes/no/[fingerprint])? yes......eric@服务器IP地址's password:完成该操作之后就可以免密登录服务器了,如果要禁用远程登录 root 用户和使用密码登录的方式,点击下面的『操作要点』展开 操作要点 禁止通过 SSH 登录到 root 用户编辑 /etc/ssh/sshd_config/etc/ssh/sshd_config12345......PermitRootLogin no......限制 SSH 通过用户密码来登录编辑 /etc/ssh/sshd_config/etc/ssh/sshd_config12345......PasswordAuthentication no......编辑完配置文件后,sudo systemctl restart sshd 重启下服务器的 sshd 服务 安装 V2Ray 前的准备 正经的 Linux 用户不会用 root 干所有的事情,如果这么做的话将会很危险。所以使用普通用户,再通过 sudo 指令用 root 权限执行命令是坠吼的。 使用普通用户通过 ssh 登录到你的远程服务器后再完成以下操作: 时间校准 对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以系统时间一定要正确,只要保证时间误差在 90 秒 之内就没问题。 1234sudo timedatectl set-ntp true # 启用 NTP 服务sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime # 将时区设为“亚洲/上海”sudo hwclock --systohc # 将硬件时钟调整到与当前系统时间一致date -R # 以 RFC 5322 格式输出日期和时间。例如 Mon, 18 Jan 2021 11:04:16 +0800 执行完之后,终端显示的时间如果正确,那么就没问题了。 防火墙初始化 本文将使用 ufw 来管理系统的防火墙 123sudo apt install ufwsudo ufw enablesudo ufw allow 'OpenSSH' 安装相关软件包 更新系统已知的软件包列表、升级系统上的所有软件包、移除不再需要的依赖软件包: 1sudo apt update && sudo apt upgrade && sudo apt autoremove 安装编辑器 vim(后续编写配配置文件需要,当然你也可以使用其他编辑器) 1sudo apt install vim 安装所需要的依赖软件包: 1sudo apt install curl openssl 安装并配置 V2Ray下载 V2Ray 安装脚本12curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.shcurl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-dat-release.sh 安装 V2ray 主程序1sudo bash install-release.sh 安装最新发行的 geoip.dat 和 geosite.dat geoip.dat:IP 数据文件 geosite.dat:域名数据文件 1sudo bash install-dat-release.sh 配置 V2Ray使用 vim 编辑 V2Ray 的配置文件: 1sudo vim /usr/local/etc/v2ray/config.json 清空文件原有内容,然后输入以下内容: /usr/local/etc/v2ray/config.json123456789101112131415161718192021222324252627282930313233343536373839404142434445464748{ "log":{ "loglevel":"warning" }, "routing":{ "domainStrategy":"AsIs", "rules":[ { "type":"field", "ip":[ "geoip:private" ], "outboundTag":"block" } ] }, "inbounds":[ { "listen":"127.0.0.1", "port":10000, "protocol":"vmess", "settings":{ "clients":[ { "id":"9dfe7fee-d08f-44f8-ad2d-300d4c9c3a0e", "alterId":0 } ] }, "streamSettings":{ "network":"ws", "wsSettings":{ "path":"/ray" } } } ], "outbounds":[ { "protocol":"freedom", "tag":"direct" }, { "protocol":"blackhole", "tag":"block" } ]} port:V2Ray 的 WebSocket 所监听的内网端口,取值范围是 1 ~ 65535,但为了避免端口占用,所以不能填常用的端口号(如 22 是 ssh 的端口号,80 是 HTTP 的端口号,443 是 HTTPS 的端口号等),此处设我为 10000 id:用户的主 ID。可通过 UUID 生成器 - v2fly 或者 Online UUID Generator 生成(任选其中一个网站生成就行),此处我设为 9dfe7fee-d08f-44f8-ad2d-300d4c9c3a0e alterId:根据新 V2Ray 白话文指南 – VMess,推荐值为 0,代表启用 VMessAEAD network:传输协议。设为 WebSocket,即 ws path:WebSocket 所使用的 HTTP 协议路径。可自定义,例如我设为 /ray 咳咳,上面的配置文件想要照抄的话至少 id 取不一样的值就好 🤣 注册域名 注册域名的说明 域名可通过网站 NameSilo 进行申请注册,这个站点最低可花 $0.99 即可注册申请一年的域名,同时还支持免费启用 WHOIS privacy(WHOIS 隐私服务大致的意思是:从 WHOIS 记录中删除您的个人联系信息)。在 NameSilo 注册完登录账号,然后搜索你想要的域名,选择域名。选择最便宜的就行(至于续费域名的费用比较高,所以建议是域名过期后再换就行):点击 Add 之后,会跳转如下界面(此处注意关掉自动续费,打开 WHOIS 隐私服务):支付方面,NameSilo 也是支持支付宝进行支付的,填写支付宝相关联的邮箱地址,然后进行扫码支付。付款成功后点击页面里的「Account Domains 账户所属域名」栏里的数字然后跳转到信息填写页面,这些信息可以通过美国虚拟信息生成器生成然后进行填写(其中带 * 号的为必填项)填写完信息后,点击 🌏 图标管理域名的 DNS,然后在 DNS 管理页面点击 ❌ 删除所有的记录注册完域名记得前往您的电子邮箱查收来自 NameSilo 的邮件,必须点击 WHOIS 的邮箱验证链接,否则您的域名可能将被注销。 Cloudflare 接管域名解析完成前面的步骤后,我们将在这一步使用 Cloudflare 来接管域名的解析。 具体步骤 注册 Cloudflare 的账号,注册完账号之后,请前往邮箱查看来自 Cloudflare 的邮件,点击验证链接以验证您的电子邮箱。Cloudflare 官网添加站点,输入先前注册的域名即可。选择「免费计划」暂不添加 DNS 记录前往域名提供商(如前面介绍的 NameSilo),点击图示部分进行域名服务器的管理移除域名提供商预置的「域名服务器」,用 Cloudflare 提供的「域名服务器」替换之。「Submit 提交」完上述变更之后,等待若干分钟后域名的状态转为「active 激活」。然后点击「Done, check nameservers」。点击「Finish later」,然后再回到 Cloudflare 首页,等待若干分钟后「Pending Nameserver Update」会转为「active」,这时点进去。添加 DNS 记录如下图表添加 2 条记录就可以了。TypeNameIPv4 addressProxy [email protected]☁ ProxiedAwwwx.x.x.x☁ Proxied云朵被点亮(即 ☁ Proxied)意味着你的网站流量必须经过 Cloudflare,也可以说使用了 Cloudflare 的 CDN 节点。添加一条记录的示例 安装 Nginx 及其初始配置 具体步骤 请将本文中的 ericclose.xyz 替换成您注册的域名安装 Nginx1sudo apt install nginx配置防火墙1sudo ufw allow 'Nginx Full'配置 NginxNginx 在安装过程中会创建一个默认的服务器块。如果它仍然存在,请将其删除,因为你后面将为你注册的域名配置一个自定义服务器块1sudo rm /etc/nginx/sites-enabled/default使用如下命令,为你的域名创建目录1sudo mkdir -p /var/www/ericclose.xyz/html接下来,用 $USER 环境变量给当前的系统用户分配目录的所有权1sudo chown -R $USER:$USER /var/www/ericclose.xyz/html使用命令确保 web root 具有正确的权限1sudo chmod -R 755 /var/www/ericclose.xyz接下来,使用 vim 或其他编辑器创建 index.html 页面文件1vim /var/www/ericclose.xyz/html/index.html文件写入以下内容:/var/www/ericclose.xyz/html/index.html123456789<html> <head> <title>Welcome</title> </head> <body> <h1>Success! Your Nginx server is successfully configured. </h1><p>This is a sample page.</p> </body></html>我们需要创建一个服务器块,指向我们自定义的 web root。我们不直接修改默认的配置文件,而是新建一个文件1sudo vim /etc/nginx/sites-available/ericclose.xyz填写以下内容:/etc/nginx/sites-available/ericclose.xyz12345678910111213server { listen 80; listen [::]:80; root /var/www/ericclose.xyz/html; index index.html index.htm index.nginx-debian.html; server_name ericclose.xyz www.ericclose.xyz; location / { try_files $uri $uri/ =404; }}注意要记得修改配置文件中的 root 项和 server_name 项中的 ericclose.xyz,更改为您的域名即可。接下来,让我们通过在 sites-enabled 目录下创建一个符号链接来启用这个服务器块,Nginx 在启动时会在这个目录下读取配置文件:1sudo ln -s /etc/nginx/sites-available/ericclose.xyz /etc/nginx/sites-enabled/为了防止可能出现的内存问题,有必要调整 /etc/nginx/nginx.conf 文件中的一个值。1sudo vim /etc/nginx/nginx.conf找到 server_names_hash_bucket_size,将 # 符号去掉,取消这一行的注释。1234567...http { ... server_names_hash_bucket_size 64; ...}...接下来,测试一下 Nginx 文件中是否有语法错误。1sudo nginx -t最后,若你的配置测试没有遇到问题,重启 Nginx 来启用你的更改。1sudo systemctl restart nginx现在可以访问您注册的域名了,如下: 使用 Cloudflare 生成 TLS 证书和私钥、部署 Authenticated Origin Pulls生成 TLS 证书和私钥生成证书的方法有很多,新 V2Ray 白话文指南使用 acme.sh 生成证书,我这里的话则是通过 Cloudflare 网站生成🤣。 注意:「Cloudflare Origin Certificate」是一个只被 Cloudflare 信任的证书,不被浏览器所信任,所以使用「Cloudflare Origin Certificate」就必须在前面使用 Cloudflare 添加 DNS 记录时将云朵点亮,即 ☁ Proxied。如果不点亮云朵,您的网站将无法安全访问,同时代理也会无法正常连接。 – from HTTPS certificate not trusted with Cloudflare Origin Certificate 具体步骤 Cloudflare Origin CA 可以让你生成由 Cloudflare 签署的免费 TLS 证书,安装在你的 Nginx 服务器上,以此可以保护 Cloudflare 的服务器和你的 Nginx 服务器之间的连接。要使用 Origin CA 生成证书,请在浏览器中登录 Cloudflare 账户。选择您要保护的域名,并导航到 Cloudflare 仪表板的「SSL/TLS」部分。然后再从导航到「Origin Server」选项卡,然后单击「Create Certificate 创建证书」按钮。保留选择「Let Cloudflare generate a private key and a CSR」,「Private key type 私钥类型」我们选择「ECDSA」,关于 ECDSA 相较于 RSA 的优点请自行搜索。其余选项默认,「Next 下一步」即可然后你会看到一个对话框,里面有「Origin Certificate 源证书」和「Private key 私钥」。你需要将证书和私钥的内容写到你的服务器上。出于安全考虑,私钥信息仅显示一次,之后不会再显示,所以在点击「OK」之前,最好先将相关内容复制后妥善保管。你将使用服务器上的 /etc/ssl 目录来存放源证书和私钥文件。关于 Nginx 的相关配置将在后面讲解。在服务器上,使用用 vim 或其他文本编辑器编辑 /etc/ssl/cert.pem:1sudo vim /etc/ssl/cert.pem将先前保存的证书内容添加到文件中,然后保存并退出编辑器。在服务器上,使用用 vim 或其他文本编辑器编辑 /etc/ssl/key.pem:1sudo vim /etc/ssl/key.pem将先前保存的私钥内容添加到文件中,然后保存并退出编辑器。现在进入 Cloudflare 仪表板的「SSL/TLS」部分,导航到「Overview」选项卡,并将 SSL/TLS 加密模式改为「 Full (strict) 」。这将确保 Cloudflare 始终加密 Cloudflare 和你的 Nginx 服务器之间的连接。然后 Cloudflare 仪表板的「SSL/TLS」部分,导航到「Edge Certificates」选项卡,并将「Minimum TLS Version」改为「TLS 1.2」:部署 Authenticated Origin Pulls如果在 Nginx 服务器上设置了「Authenticated Origin Pulls」,就可以确保它只接受来自 Cloudflare 服务器的请求,防止任何其他人直接连接到 Nginx 服务器。要使「Authenticated Origin Pulls」正常工作,需要在 Cloudflare 中使用完全 SSL,并更新源 Web 服务器 SSL 配置。下载 authenticated_origin_pull_ca.pem,或者复制下文证书内容, 并将证书 authenticated_origin_pull_ca.pem 的内容写入到服务器的 /etc/ssl/cloudflare.crt 中。关于 Nginx 的相关配置下一节会讲解点击 Cloudflare 仪表板中的「SSL/TLS」部分,导航到「Origin Server」选项卡并打开「Authenticated Origin Pulls」选项 。 将证书 authenticated_origin_pull_ca.pem 的内容写入到服务器的 /etc/ssl/cloudflare.crt 中 你可以选择下载证书 authenticated_origin_pull_ca.pem,或者直接复制证书的内容: 1234567891011121314151617181920212223242526272829303132333435-----BEGIN CERTIFICATE-----MIIGCjCCA/KgAwIBAgIIV5G6lVbCLmEwDQYJKoZIhvcNAQENBQAwgZAxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMRQwEgYDVQQLEwtPcmlnaW4gUHVsbDEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzETMBEGA1UECBMKQ2FsaWZvcm5pYTEjMCEGA1UEAxMab3JpZ2luLXB1bGwuY2xvdWRmbGFyZS5uZXQwHhcNMTkxMDEwMTg0NTAwWhcNMjkxMTAxMTcwMDAwWjCBkDELMAkGA1UEBhMCVVMxGTAXBgNVBAoTEENsb3VkRmxhcmUsIEluYy4xFDASBgNVBAsTC09yaWdpbiBQdWxsMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMSMwIQYDVQQDExpvcmlnaW4tcHVsbC5jbG91ZGZsYXJlLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAN2y2zojYfl0bKfhp0AJBFeV+jQqbCw3sHmvEPwLmqDLqynI42tZXR5y914ZB9ZrwbL/K5O46exd/LujJnV2b3dzcx5rtiQzso0xzljqbnbQT20eihx/WrF4OkZKydZzsdaJsWAPuplDH5P7J82q3re88jQdgE5hqjqFZ3clCG7lxoBwhLaazm3NJJlUfzdk97ouRvnFGAuXd5cQVx8jYOOeU60sWqmMe4QHdOvpqB91bJoYQSKVFjUgHeTpN8tNpKJfb9LIn3pun3bC9NKNHtRKMNX3Kl/sAPq7q/AlndvA2Kw3Dkum2mHQUGdzVHqcOgea9BGjLK2h7SuX93zTWL02u799dr6Xkrad/WShHchfjjRnaL35niJUDr02YJtPgxWObsrfOU63B8juLUphW/4BOjjJyAG5l9j1//aUGEi/sEe5lqVv0P78QrxoxR+MMXiJwQab5FB8TG/ac6mRHgF9CmkX90uaRh+OC07XjTdfSKGRPpM9hB2ZhLol/nf8qmoLdoD5HvODZuKu2+muKeVHXgw2/A6wM7OwrinxZiyBk5HhCvaADH7PZpU6z/zv5NU5HSvXiKtCzFuDu4/Zfi34RfHXeCUfHAb4KfNRXJwMsxUa+4ZpSAX2G6RnGU5meuXpU5/V+DQJp/e69XyyY6RXDoMywaEFlIlXBqjRRA2pAgMBAAGjZjBkMA4GA1UdDwEB/wQEAwIBBjASBgNVHRMBAf8ECDAGAQH/AgECMB0GA1UdDgQWBBRDWUsraYuA4REzalfNVzjann3F6zAfBgNVHSMEGDAWgBRDWUsraYuA4REzalfNVzjann3F6zANBgkqhkiG9w0BAQ0FAAOCAgEAkQ+T9nqcSlAuW/90DeYmQOW1QhqOor5psBEGvxbNGV2hdLJY8h6QUq48BCevcMChg/L1CkznBNI40i3/6heDn3ISzVEwXKf34pPFCACWVMZxbQjkNRTiH8iRur9EsaNQ5oXCPJkhwg2+IFyoPAAYURoXVcI9SCDUa45clmYHJ/XYwV1icGVI8/9b2JUqklnOTa5tugwIUi5sTfipNcJXHhgz6BKYDl0/UP0lLKbsUETXeTGDiDpxZYIgbcFrRDDkHC6BSvdWVEiH5b9mH2BON60z0O0j8EEKTwi9jnafVtZQXP/D8yoVowdFDjXcKkOPF/1gIh9qrFR6GdoPVgB3SkLc5ulBqZaCHm563jsvWb/kXJnlFxW+1bsO9BDD6DweBcGdNurgmH625wBXksSdD7y/fakk8DagjbjKShYlPEFOAqEcliwjF45eabL0t27MJV61O/jHzHL3dknXeE4BDa2jbA+JbyJeUMtU7KMsxvx82RmhqBEJJDBCJ3scVptvhDMRrtqDBW5JShxoAOcpFQGmiYWicn46nPDjgTU0bX1ZPpTpryXbvciVL5RkVBuyX2ntcOLDPlZWgxZCBp96x07FAnOzKgZk4RzZPNAxCXERVxajn/FLcOhglVAKo5H0ac+AitlQ0ip55D2/mf8o72tMfVQ6VpyjEXdiIXWUq/o=-----END CERTIFICATE----- 使用 vim 编辑 /etc/ssl/cloudflare.crt,将证书内容粘贴进去即可: 1sudo vim /etc/ssl/cloudflare.crt Nginx 证书和密钥、反向代理的配置请将本文中的 ericclose.xyz 替换成您注册的域名 前面只是把证书和私钥的内容写入到服务器,Nginx 的相关配置并没有写,所以这一节就让我们完成它: 使用 vim 编辑文件 /etc/nginx/sites-available/ericclose.xyz: 1sudo vim /etc/nginx/sites-available/ericclose.xyz 修改后的文件如下: /etc/nginx/sites-available/ericclose.xyz123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354server { listen 80 default_server; listen [::]:80 default_server; server_name ericclose.xyz www.ericclose.xyz; return 301 https://$host$request_uri;}server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/ssl/cert.pem; ssl_certificate_key /etc/ssl/key.pem; ssl_client_certificate /etc/ssl/cloudflare.crt; ssl_verify_client on; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; # intermediate configuration ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; # HSTS (ngx_http_headers_module is required) (63072000 seconds) add_header Strict-Transport-Security "max-age=63072000" always; server_name ericclose.xyz www.ericclose.xyz; root /var/www/ericclose.xyz/html; index index.html index.htm index.nginx-debian.html; location / { try_files $uri $uri/ =404; } location /ray { if ($http_upgrade != "websocket") { return 404; } proxy_redirect off; proxy_pass http://127.0.0.1:10000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }} 注意要记得修改配置文件中的 server_name 项和 root 项的 ericclose.xyz,更改为您的域名即可。 配置文件中 proxy_pass http://127.0.0.1:10000; 的 10000 必须和前面 V2Ray 配置文件(/usr/local/etc/v2ray/config.json)中的 port 一致。 location /ray { ... } 这里的 /ray 必须与前面 V2Ray 配置文件中的 path 一致(相互对应)。 然后重启 nginx 服务: 1sudo systemctl restart nginx 现在您可以再次访问您注册的域名来判断配置是否正确,如无误将会看到您之前访问域名的页面,同时可以注意到浏览器已经显示是 HTTPS 链接了。 为了更具真实的网站伪装效果,您可以自行寻找些前端模板套上去(本文将不会赘述) 自启并启动相关服务12sudo systemctl enable v2ray nginx --now # 自启并启动 V2ray 和 Nginx 的服务sudo systemctl status -l v2ray nginx # 查看 V2ray 和 Nginx 服务的状态 VMess MD5 认证信息淘汰机制 VMessAEAD 协议已经经过同行评议并已经整合了相应的修改。 VMess MD5 认证信息 的淘汰机制已经启动。 自 2022 年 1 月 1 日起,服务器端将默认禁用对于 MD5 认证信息 的兼容。任何使用 MD5 认证信息的客户端将无法连接到禁用 VMess MD5 认证信息的服务器端。 在服务器端可以通过设置环境变量 v2ray.vmess.aead.forced = true 以关闭对于 MD5 认证信息的兼容。 或者 v2ray.vmess.aead.forced = false 以强制开启对于 MD5 认证信息 认证机制的兼容 (不受到 2022 年自动禁用机制的影响) 。 (v4.35.0+)– from 新 V2Ray 白话文指南 – VMess MD5 认证信息淘汰机制 为了禁用旧的 MD5 认证信息 的兼容,强制使用 VMessAEAD,我们可以这么做来给 v2ray.service 添加个环境变量: 123# 给 v2ray.service 创建个 override,而不是直接修改 v2ray.service 本身,以防止更新 V2Ray 后修改的内容失效sudo EDITOR=vim systemctl edit v2ray.service 用 vim 编辑器写入如下内容,:wq 保存并退出: 12[Service]Environment=V2RAY_VMESS_AEAD_FORCED=true 然后重启 v2ray 服务生效: 1sudo systemctl restart v2ray TCP BBR TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由 Google 设计的一种拥塞控制算法。自从 Linux Kernel 4.9 开始就引入了该算法,但默认没有启用,所以需要手动开启。 启用该算法仅需在 /etc/sysctl.conf 文件末尾追加两行内容: 12sudo bash -c "echo 'net.core.default_qdisc=fq' >> /etc/sysctl.conf"sudo bash -c "echo 'net.ipv4.tcp_congestion_control=bbr' >> /etc/sysctl.conf" 接下来你需要重启系统或者直接使用 systemctl 重载变更。 1sudo sysctl --system 您可以使用以下 sysctl 命令验证配置是否生效,如下: 1sudo sysctl net.core.default_qdisc 若输出结果为 net.core.default_qdisc = fq,则配置已生效 1sudo sysctl net.ipv4.tcp_congestion_control 若输出结果为 net.ipv4.tcp_congestion_control = bbr,则配置已生效 客户端配置(懒人方法) 关于客户端配置的说明 关于客户端配置文件的编写,可以先用 v2rayN 生成 vmess:// 链接,之后再通过 Subscription Converter 进行转换即可🤣。前往 V2RayN 下载页 找到 v2rayN-Core.zip 下载,然后解压后找到主程序 v2rayN.exe 双击运行。双击 v2rayN 的托盘图标,然后就会弹出主界面窗口。「服务器」 -> 「添加 Vmess 服务器」,然后请根据服务端的配置对内容进行填写。地址(address):可以填写您注册的域名(也可以是 Cloudflare 的 CDN IP,关于这个后面会讲)端口(port):HTTPS 端口号,即填写 443用户 ID(id):与 V2Ray 服务端的配置一致,也就是之前生成的 UUID,即 9dfe7fee-d08f-44f8-ad2d-300d4c9c3a0e额外 ID(alterId):与 V2Ray 服务端的配置一致,即 0加密方式(security):自动,即 auto别名(remarks):节点名称,可自定义,这里我取名为 node传输协议(network):WebSocket,即 ws伪装类型(type):none伪装域名(host):填写您注册的域名,我的是 ericclose.xyz路径(path):与 V2Ray 服务端的配置一致,即 /ray底层传输安全(tls):tls跳过证书验证(allowInsecure):是否允许不安全连接(用于客户端)。当值为 true 时,V2Ray 不会检查远端主机所提供的 TLS 证书的有效性,所以为了安全起见我们选择 false 。填写完成确认即可。如果你想要直接使用 v2rayN 进行代理上网的话,只需要鼠标右键点击 v2rayN 的托盘图标,启用 HTTP 代理,可以是全局或 PAC(proxy auto-config,代理自动配置) 模式,取决于你个人需求。此时如果你配置没出问题的话,那么你已经能够科学上网了。如果你想使用其他客户端,如 clash,Quantumult X 等。那么你需要在 v2rayN 主界面选中节点 node,点击「分享」,即可生成 vmess:// 链接。访问 Subscription Converter 网站,选择「基础模式」,复制生成的 vmess:// 链接到指定位置,选择你想要使用的客户端,最后「生成订阅链接」即可。 为了支持 VMessAEAD 请将您的客户端更新到最新版本!截至 2022 年 1 月 16 日,各平台客户端均已提供对 VMessAEAD 的支持: Clash for Windows v0.19.5 + ClashX v1.90.0 + Clash for Android v2.5.4 + Quantumult X v1.0.27 + 上述 Clash 各客户端版本,Clash 内核均升级至 v1.9.0 +,客户端的配置 ws-opts 处有所变动,请注意修改后使用,详见 Clash Wiki - All Configuration Options 。 Quantumult X v1.0.27 + 默认启用 Vmess AEAD(即 aead=true),配置可以不用修改 关于各个客户端的具体使用方法,不属于本文讨论的范畴。 优选 Cloudflare CDN 节点 IP直接通过本地的 DNS 解析您注册域名得到的 Cloudflare CDN 的 IP,有时可能速度很不理想,尤其是我使用的中国电信宽带到了晚上高峰期(20:00 ~ 24:00)的时候特别差劲。通过一个测试工具 CloudflareSpeedTest 优选出几个 Cloudflare 的 CDN 节点 IP,可以相对缓解这种情况。由于不同的运营商、不同的地域或不同的时间段,相同的 CDN 节点 IP 表现具有差异,所以建议就是各自在自己的网络环境下进行测试。 优选 Cloudflare CDN 节点 IP 的说明 CloudflareSpeedTest 项目 latest release 下载页根据您的操作系统和处理器架构进行选择下载,以我这边 Windows x64 为例子,我下载的是 CloudflareST_windows_amd64.zip,下载后进行解压。首先 cmd 切换到 CloudflareST.exe 所在的目录,如 F:\\Downloads\\CloudflareST_windows_amd64:1cd /d F:\\Downloads\\CloudflareST_windows_amd64此处我以我平常使用的命令加几个选项为例子:如需要找到 20 个平均延迟低于 300 ms 且下载速度高于 5 MB/s 的 IP 才会停止测速。1CloudflareST.exe -tl 300 -sl 5 -dn 20-tl: 平均延迟上限,只输出低于指定平均延迟的 IP-sl: 下载速度下限,输出高于指定下载速度的 IP-dn: 符合条件的 IP 数量,即指定输出符合延迟和下载速度要求的 IP 数量完整的使用方法请参考项目 README。当我们得到了一组优选 IP 后,如何使用这些 CDN 节点呢?我们只需要在 v2rayN 填写的地址(address)处,分别填写排名靠前的几个 IP 就行。具体操作:v2rayN 主界面鼠标右键选中原有的节点 node,选择「克隆所选服务器」,然后双击克隆得到的节点,将地址(address)修改为优选得到的 IP,如 104.31.79.91,别名(remarks)取自己喜欢的就好,如 node1。如想添加多几个节点,就多克隆几个。至于其他客户端的配置转换依然可以使用 Subscription Converter,将生成得到的数个 vmess:// 链接分行粘贴到 Subscription Converter 中,最后再生成订阅链接就完事了。P.S. 一条一条的生成 vmess:// 链接还是挺麻烦的,所以建议各位学会自己编写你所使用的客户端的配置文件 🤣","categories":[{"name":"Proxy","slug":"Proxy","permalink":"https://ericclose.github.io/categories/Proxy/"}],"tags":[{"name":"V2Ray","slug":"V2Ray","permalink":"https://ericclose.github.io/tags/V2Ray/"},{"name":"Cloudflare","slug":"Cloudflare","permalink":"https://ericclose.github.io/tags/Cloudflare/"},{"name":"科学上网","slug":"科学上网","permalink":"https://ericclose.github.io/tags/%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/"}]},{"title":"更改 Pixel / Pixel XL 的 modem 以支持中国电信","slug":"pixel-modem-mod-for-china-telecom","date":"2020-08-19T08:13:51.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"pixel-modem-mod-for-china-telecom.html","permalink":"https://ericclose.github.io/pixel-modem-mod-for-china-telecom.html","excerpt":"❗️ 注意:本教程仅适用于 Google Pixel (2016) 或 Google Pixel XL (2016),其他更新的机型并不适用。 高通现代的 SoC 理论上应该是支持众多 LTE 的频段,而很多针对中国大陆境外销售的手机可能对境内的运营商网络支持不够友好。Google Pixel 对于中国电信的支持情况就是一个例子,为了使中国电信能够在 Google Pixel 上正常使用,本教程教会告诉你如何通过非硬件层面上的方法(通过修改 modem )来实现这一目的。","text":"❗️ 注意:本教程仅适用于 Google Pixel (2016) 或 Google Pixel XL (2016),其他更新的机型并不适用。 高通现代的 SoC 理论上应该是支持众多 LTE 的频段,而很多针对中国大陆境外销售的手机可能对境内的运营商网络支持不够友好。Google Pixel 对于中国电信的支持情况就是一个例子,为了使中国电信能够在 Google Pixel 上正常使用,本教程教会告诉你如何通过非硬件层面上的方法(通过修改 modem )来实现这一目的。 基本要求为了能够正常完成本次操作,你首先需要确保以下内容: 配置好 ADB 的环境变量 不懂的话就请网上自行搜索“ADB 环境变量”,本文不会讲解这一基本操作(敬请见谅 知道如何进入 bootloader 模式 bootloader 模式:在设备关机的情况下,长按 音量-键 + 电源键 ,进入如下界面即可。 知道如何进入 recovery 模式 ①.在设备处于 bootloader 模式的情况下,通过 音量+键 或 音量-键 更换菜单选项,直到显示 Recovery mode ,然后 按 电源键 确认;②.随后手机会出现 No command 的界面;③.然后这时长按 电源键 ,3 秒后(电源键依然不要松),按一下 音量+键 (只要按一下就松开音量键),手机就会显示出 recovery 的功能菜单,如下第 3 张图所示。 确保已解锁 bootloader 关于解锁 bootloader 的操作可以看我上篇的文章的一个小节:确认是否可以解锁 bootloaderhttps://ericclose.github.io/Pixel-repairs-and-carriers.html#%E7%A1%AE%E8%AE%A4%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%A7%A3%E9%94%81-bootloader如果很不幸你的 Pixel 是 Verizon 版的就只能找某宝奸商付费解锁 bootloader 了。 ❗️ 注意:如果你不想或没空自己移植 modem,请直接跳过过下面 移植 modem 的环节(之后直接按教程刷入移植得到的 modem.img 即可): 点击跳过“移植 modem”环节 移植 modem ❗️ 注意:由于 Google Pixel 和 Google Pixel XL 使用的是相同的 modem(通过二者 modem.img 的 sha256sum 值相同得出的结论),所以通过修改得到的 modem 文件是通用的。 刷入最新的 factory image本教程是基于 Pixel 的最后一个系统版本修改 modem,所以请确保你的 Pixel 系统已是最新。factory image,即工厂镜像,通俗来说也就是所谓的“线刷包”。请根据你所持有的设备下载相应的工厂镜像: 设备 工厂镜像下载链接 Pixel sailfish-qp1a.191005.007.a3-factory-d4552659.zip Pixel XL marlin-qp1a.191005.007.a3-factory-bef66533.zip 将手机重启到 bootloader 模式 解压下载好的工厂镜像 找到 flash-all.bat 文件,双击即可 完成后手机会自动重启 备份 Pixel / Pixel XL 的 modem由于 Pixel /Pixel XL 的 Android 10 工厂镜像没有提供单独的 modem.img ,所以我们需要通过 TWRP(第三方 recovery)执行 dd 命令来实现对 modem 的备份。 设备 TWRP 下载链接 Pixel twrp-3.4.0-0-sailfish.img Pixel XL twrp-3.4.0-0-marlin.img 首先根据你所持有的设备下载好相应的 TWRP 将手机重启到 bootloader 模式 启动到 TWRP,即执行命令: 1fastboot boot *.img 命令里的 *.img 不需要手动输入,直接拖拽文件到 cmd 窗口即可,系统会自动填写文件相应的路径。如图: 最后,备份 modem 执行命令如下: 1234adb shelldd if=/dev/block/bootdevice/by-name/modem_a of=/sdcard/stock.imgexitadb pull /sdcard/stock.img F:\\Downloads 命令里的 F:\\Downloads 是备份的 modem (即 stock.img )存储在电脑上的路径,你可以自行修改,看图: 获取 OnePlus 3T 的 modem更改基带文件的总体思路是:提取相同型号处理器的设备的基带文件(这里使用的是 OnePlus 3T)。为了得到 OnePlus 的 modem,所以我们需要 OnePlus 的工厂镜像来提取 modem。 设备 工厂镜像下载链接 OnePlus 3T OnePlus3THydrogen_28_OTA_083_all_2002201900_bf0fc8385b5547c0.zip 首先下载 OnePlus 3T 的工厂镜像 从工厂镜像压缩包找到 /firmware-update/NON-HLOS.bin ,提取出来即可 移植 modem经过前期的准备工作,我们得到了 Pixel / Pixel XL 的 modem 镜像 stock.img OnePlus 3T 的 modem 镜像 NON-HLOS.bin 文件名 下载链接 stock.img 链接 NON-HLOS.bin 链接 通过挂载 modem 镜像,我们可以对镜像里的文件进行修改,为了接下来的操作,我们这里需要用到搭载 Linux 系统 的电脑或虚拟机。以下命令均在 Linux 上运行: 12345678910111213141516# 1. 创建挂载点(stock 用于挂载 Pixel 的原始 modem 镜像,oneplus 用于挂载 OnePlus 的 modem 镜像)mkdir stock oneplus# 2. 分别挂载 Pixel 和 OnePlus 的镜像,挂载到相应挂载点上sudo mount -o loop stock.img stock && sudo mount -o loop NON-HLOS.bin oneplus# 3. 创建目录sudo mkdir stock/modem_pr/mcfg/configs/mcfg_sw/generic/china# 4. 复制文件sudo cp -r oneplus/image/modem_pr/mcfg/configs/mcfg_sw/generic/china/ct stock/modem_pr/mcfg/configs/mcfg_sw/generic/china/# 5. ❗️ 注意:使用 vim (或其他编辑器)编辑文件,将文件中的数字加 1sudo vim stock/modem_pr/verinfo/ver_info.txt # 6. 同步sudo sync# 7. 从各自的挂载点卸载sudo umount stock oneplus# 8. 重命名 stock.img 为 modem.img mv stock.img modem.img 数字加 1输入的命令 完成上述命令后我们就移植得到了 modem.img 啦。 下载移植得到的 modem 镜像你可以使用自己移植得到的 modem 镜像( modem.img ),或者是下载本文提供的镜像: 文件名 下载链接 modem.img 链接 刷入 modem手机进入 bootloader 模式,刷入 modem 镜像( modem.img ),cmd 执行这行命令即可: 1fastboot --slot all flash modem *.img 命令里的 *.img 不需要手动输入,直接拖拽文件到 cmd 窗口即可,系统会自动填写文件相应的路径。如图: ❗️ 注意:刷入 modem 后必须恢复出厂设置,之后重启即可,执行以下命令: 123fastboot erase userdatafastboot erase frpfastboot reboot 网络去叉状态栏的网络信号有个叉,这是为什么呢,又该如何解决?详情请参见: (类)原生 Android 网络去叉/叹号 Android 5.0 - 10.0","categories":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/categories/Android/"}],"tags":[{"name":"Google","slug":"Google","permalink":"https://ericclose.github.io/tags/Google/"},{"name":"sailfish","slug":"sailfish","permalink":"https://ericclose.github.io/tags/sailfish/"},{"name":"marlin","slug":"marlin","permalink":"https://ericclose.github.io/tags/marlin/"},{"name":"Pixel","slug":"Pixel","permalink":"https://ericclose.github.io/tags/Pixel/"},{"name":"Pixel XL","slug":"Pixel-XL","permalink":"https://ericclose.github.io/tags/Pixel-XL/"},{"name":"modem","slug":"modem","permalink":"https://ericclose.github.io/tags/modem/"},{"name":"移植","slug":"移植","permalink":"https://ericclose.github.io/tags/%E7%A7%BB%E6%A4%8D/"}]},{"title":"查询 Google Pixel 保修信息以及判断是否为 Verizon (运营商) 版","slug":"Pixel-repairs-and-carriers","date":"2020-07-29T09:53:51.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"Pixel-repairs-and-carriers.html","permalink":"https://ericclose.github.io/Pixel-repairs-and-carriers.html","excerpt":"如果你想了解关于运营商版和无锁版 Pixel 的不同点,你可以展开下列内容看看: 运营商版 Pixel 的相关资料 根据你购买手机的区域,你可能需要解锁你的 Google Pixel 来切换运营商网络。所有通过 Google Store 购买的 Pixel 都会自动解锁,所以你不必考虑解锁运营商网络的问题——你可以自由地使用任一运营商。对于那些通过特定运营商或其他零售商购买 Pixel 的人,SIM 卡最长可能被锁定 2 年。在这种情况下,除非销售商解锁 SIM 卡或合约到期,否则手机只能使用该服务提供商提供的移动服务。如果您想在销售合约到期前解锁手机的 SIM 卡,请与您的移动服务提供商联系,以商讨可行的方案。“开发者选项”中的“OEM 解锁”选项,无法在 Verizon 版的 Pixel 机型上启用。 Verizon 版 Pixel 的 bootloader 经过加密无法解锁。资料来源:搭配任意移动网络使用 Pixel 手机How to unlock a Google Pixel phone, so you can switch carrier networks","text":"如果你想了解关于运营商版和无锁版 Pixel 的不同点,你可以展开下列内容看看: 运营商版 Pixel 的相关资料 根据你购买手机的区域,你可能需要解锁你的 Google Pixel 来切换运营商网络。所有通过 Google Store 购买的 Pixel 都会自动解锁,所以你不必考虑解锁运营商网络的问题——你可以自由地使用任一运营商。对于那些通过特定运营商或其他零售商购买 Pixel 的人,SIM 卡最长可能被锁定 2 年。在这种情况下,除非销售商解锁 SIM 卡或合约到期,否则手机只能使用该服务提供商提供的移动服务。如果您想在销售合约到期前解锁手机的 SIM 卡,请与您的移动服务提供商联系,以商讨可行的方案。“开发者选项”中的“OEM 解锁”选项,无法在 Verizon 版的 Pixel 机型上启用。 Verizon 版 Pixel 的 bootloader 经过加密无法解锁。资料来源:搭配任意移动网络使用 Pixel 手机How to unlock a Google Pixel phone, so you can switch carrier networks 保修信息查询 Google 保修信息查询 美国 点击上面的网站链接,会让你登录谷歌账号,随后跳转到美国地区的查询链接 https://store.google.com/us/repair 。如果你的 Pixel 是其他地区购买的, 你可能需要把链接里的 us 改成购买所在地的区域代码才能查询到信息,如 https://store.google.com/gb/repair (gb, Great Britain 的简写,为英国的区域代码)。 用手机拨号器拨打 *#06# ,可以看到手机的 IMEI 和序列号。IMEI 处的内容为 *************** / **,我们这里取 / 前面的内容(也就是前 15 位),输入到网站里即可获知 Pixel 的容量大小,机身颜色和保修截止日期等。有部分人可以查到 Unlocked(无运营商锁),Verizon(Verizon 运营商版),或者是 Refurbished(官翻机)之类的字样,而我这里却什么都查不到🤣。 Pixel 保修信息查询结果 确认是否可以解锁 bootloader 前往「Settings(设置) -> About phone(关于手机) -> Build number(版本号)」,连续点击版本号 7 次即可开启「开发者选项」。 确保手机能够正常访问国际互联网(如路由器翻墙,或手机开代理软件等) 前往「Settings(设置) -> System(系统) -> Adavanced(高级) -> Developer options(开发者选项)」,开启「OEM unlocking」选项。如若选项显示为灰色,且为不可开启的状态,则很可能是 Verizon 版(带运营商锁的版本),我手中的这台 Pixel 就是这样😂。 无法开启的 OEM unlocking 选项 开启「OEM unlocking」选项后,手机进入 bootloader 模式(手机在重启或开机的过程中,长按音量下键即可进入 bootloader 模式),可以看到 Product/Variant: sailfish-US-PVT 。US 指的是美国,PVT 则是指 产品验证测试阶段 (production validation test),这么来说也算是正常的销售商品;如若是 EVT 的话则是指 工程验证测试阶段 (engineering validation test),那么这种手机也就是俗称上的工程机了。 为了完成下面的操作,请确保满足以下条件: 了解什么是 cmd 你的电脑已经配置好 ADB 工具的环境变量(不懂的话就请网上自行搜索“ADB 环境变量”) 手机已通过数据线连接上电脑 完成上述步骤后,手机在 bootloader 模式尝试解锁 bootloader 的命令,电脑打开 cmd 执行: 1fasboot flashing unlock 如果你前面正常启用「OEM unlocking」选项的话,这时手机应该就会询问你是否解锁 bootloader。由于安全设计,如果你确认解锁 bootloader 手机将会删除所有的数据(即恢复出厂设置),取消则不会解锁 bootloader。(而我这边输入命令后,直接报错 FAILED (remote: Flashing Unlock is not allowed) ,也就根本不会询问是否解锁 bootloader。这也是正常的,因为我前面根本无法开启 OEM unlocking 的选项🥺。经过上面的操作,我基本可以确认我这台 Pixel 就是 Verizon 版的了…) 询问是否解锁 bootloader(图片来自互联网) 更简单的方法确认是不是 Verizon 版最后我查阅资料发现有个简单的方法确认 Pixel 是不是 Verizon 版本的,只需要这么做: 前往「Settings(设置) -> System(系统) -> Adavanced(高级) -> Developer options(开发者选项)」,开启「USB Debuging(USB 调试)」的选项。 然后 cmd 执行: 1adb start-server 期间手机会弹框问询是否允许此电脑对其进行调试,勾选「Always allow from this computer(总是允许此电脑调试)」 ,然后点击 Allow 即可。 最后 cmd 执行命令: 1adb shell getprop ro.boot.cid 如果返回的值为 VZW__001 ,那么很抱歉这个 Pixel 是 Verizon 版的;无运营商锁的版本的返回值应为 11111111。唉,不说了,我这台就是😂。 后续:最后我要说的是,尽管不能通过正常渠道解锁 Verizon 版 Pixel 的 bootloader。但是 Pixel 1 还是有办法解锁的(即使是 Pixel 1 最后更新的系统版本 —— 2019 年 12 月),我去了某宝找奸商花费了 50 RMB 成功解锁(为了避免广告嫌疑这里就不说店名了,可以搜索关键词:Pixel bl 锁","categories":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/categories/Android/"}],"tags":[{"name":"Google","slug":"Google","permalink":"https://ericclose.github.io/tags/Google/"},{"name":"pixel","slug":"pixel","permalink":"https://ericclose.github.io/tags/pixel/"},{"name":"sailfish","slug":"sailfish","permalink":"https://ericclose.github.io/tags/sailfish/"},{"name":"marlin","slug":"marlin","permalink":"https://ericclose.github.io/tags/marlin/"}]},{"title":"教您如何通过 Google 开机向导","slug":"google-setup-wizard","date":"2020-05-25T08:37:11.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"google-setup-wizard.html","permalink":"https://ericclose.github.io/google-setup-wizard.html","excerpt":"当你在没有退出 Google 帐号就刷机的情况下,只是通过 TWRP 直接格式化手机或者是刷了 OpenGapps 后可能会遇到无法跳过开机向导的情况。具体来说,也就是触发了 Android 的 FRP(Factory Reset Protection)机制,详情如下:","text":"当你在没有退出 Google 帐号就刷机的情况下,只是通过 TWRP 直接格式化手机或者是刷了 OpenGapps 后可能会遇到无法跳过开机向导的情况。具体来说,也就是触发了 Android 的 FRP(Factory Reset Protection)机制,详情如下: 需要验证 Google 账户 Android 原生的 FRP 机制,是从 Android 5.1 开始引入的。为了实现这个功能,手机有一个单独的分区,config 或 frp 来存放重置保护状态的相关信息。如果此分区里被标记为非正常重置且存放了特定加密存储后的 Google 账户信息,手机在非正常重置之后开机,会无法跳过 Wi-Fi 连接。连接到能访问到 Google 服务的热点之后,手机会强制搜索系统更新,并要求用户登录重置前使用的 Google 账户来验证用户的所有权。——引用自重置保护 / 谷歌锁 Factory Reset Protection 的解除方法 - LetITFly BBS 由于在中国大陆的网络环境下,Google 的服务器是无法正常联通的,所以就会出现难以通过 Google 开机向导的情况,下面我会介绍 3 种方法来教您如何解决这一困境。 解决方法解决方法如下,任选其中一种即可。 1. 点按四角法这个方法最简单,缺点是仅仅适用于通过刷入 OpenGapps 后开机遇到开机向导过不去的情况,你只要从左上角沿边缘顺时针点按图中所示的区域,即可直接跳过烦人的验证。注意不要误触到其他区域。 按数字顺序点击图中标记的地方即可 2. 局域网代理法这个操作稍显复杂,但通过局域网代理的方法我们可以在手机端没办法使用代理 app 翻墙的情况下,登录 Google 账户来完成向导配置,我个人会更偏好这种做法。 电脑端的操作 整体流程如下: 电脑启用代理软件 允许来自局域网的连接 记住本地 HTTP 代理端口 获取电脑的局域网(LAN)IP 首先,我们需要在同一局域网下的电脑里启用代理软件,这里以 Clash for Windows 为例。 启用代理软件后,如上图的标记,打开允许来自局域网的连接的选项,并记住代理软件的本地 HTTP 代理端口,等下会用到。 注意:即便是你使用的是不同的代理软件,如 SS / SSR / V2Ray 之类的,应该都是有允许来自局域网的连接的这个功能选项,你自己找找看,同时注意下你代理软件的本地 HTTP 代理端口(应该是和我的有所不同)。 然后你需要记住你电脑的局域网(LAN)IP,可以通过命令获取。Windows 用户在 cmd 执行 ipconfig ,而 Linux / macOS 用户在 terminal 执行 ifconfig 即可。 完成上述流程后,就轮到手机端的操作了。 手机端的操作 手机连接 Wi-Fi 填写完密码后,不要着急着连接。 展开「Advanced options 高级选项」->「Proxy 代理」-> 选择「Manual 手动」-> 在「Proxy hostname 代理主机名」填写你电脑的局域网(LAN)IP ->「Proxy port 代理端口」填写你所使用的代理软件的本地 HTTP 代理端口 -> 最后「Connect 连接」Wi-Fi。 手机端的配置 之后,你的手机就能通过连接局域网代理直接科学上网登录 Google 账户了,接下来应该不用我多说了。 3. 覆写分区法前面我们提到过 Google 账户信息是存放在 config 或 frp 分区上的,由于此分区不存在文件系统,所以我们的做法是往这个分区里填零,也就是覆写分区。 具体来说,我们需要知道当前设备的账户信息是存放在哪个分区。我们可以让手机进入 TWRP 之后,通过 USB 与电脑连接,然后在电脑终端上执行下列命令(请提前配置好 adb)获知手机的分区信息: 12adb shellls -l /dev/block/bootdevice/by-name 输出的结果比较长,注意找找输出的其中一行里是 frp 还是 config,以我的小米 6 为例,其中一行是: 123......lrwxrwxrwx 1 root root 15 1970-07-17 07:27 frp -> /dev/block/sda7...... 由此可知我的手机是将 Google 账户信息存放在 frp 上的,所以覆写 frp 分区的命令是: 1dd if=/dev/zero of=/dev/block/bootdevice/by-name/frp 如果你的手机是存放在 config 上,那么把上面一行的覆写命令里的 frp 改为 config 就行了。 可能有无法写入的特殊情况,如果遇到的话(没遇到就不用管)可以在覆写命令加上参数,最终命令如下: 1dd if=/dev/zero of=/dev/block/bootdevice/by-name/frp bs=512 count=1024 照理来说,上述 3 种方法都能奏效,根据你的实际情况选择就行,操作完成之后应该就能通过 Google 开机向导啦。","categories":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/categories/Android/"}],"tags":[{"name":"Google","slug":"Google","permalink":"https://ericclose.github.io/tags/Google/"},{"name":"FRP","slug":"FRP","permalink":"https://ericclose.github.io/tags/FRP/"},{"name":"账户锁","slug":"账户锁","permalink":"https://ericclose.github.io/tags/%E8%B4%A6%E6%88%B7%E9%94%81/"}]},{"title":"2020年 小米6 刷机 LineageOS 17.1 Official","slug":"install-lineageos-on-sagit","date":"2020-04-24T09:14:53.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"install-lineageos-on-sagit.html","permalink":"https://ericclose.github.io/install-lineageos-on-sagit.html","excerpt":"时至今日,依然有很多小米 6 的用户因为各种原因没有换手机,不得不说那些钉子户们也引起了雷军的注意,下面是雷军让钉子户们投票是想要继续使用小米 6 还是换新款的小米 10,又或者换其他手机。结果雷军的脸再次被钉子户们啪啪啪…","text":"时至今日,依然有很多小米 6 的用户因为各种原因没有换手机,不得不说那些钉子户们也引起了雷军的注意,下面是雷军让钉子户们投票是想要继续使用小米 6 还是换新款的小米 10,又或者换其他手机。结果雷军的脸再次被钉子户们啪啪啪… 再之后,小米推出 49 元换电池活动,49 元包含电池 + 人工费,不会收取其他费用。支持 15 款机型,包括小米 9 系列、MIX 2/S/3 等~ 网友:为啥没有小米 6… 然后雷军发话了:小米 6 钉子户们,你们开心吗?49 元换电池,希望大家能继续坚持 3 年!🐶 我本人来说不屑使用 MIUI,所以早早就刷上了我永远喜欢的 LineageOS,的确是美滋滋啊。 好了,不多说了,老司机带你们走一下刷机流程吧。 基本要求 重要提示:在实际操作之前,请至少完整阅读一次说明,以避免因为错过任何东西而导致出现问题! 确保你的电脑已经配置好 adb 和 fastboot 的环境变量,详情见这里。 解锁 bootloader 注意:以下步骤仅需要执行一次。 警告:解锁 bootloader 将清除设备上的所有数据!在继续之前,请确保您要保留的数据已备份到您的 PC 或您的 Google 帐户或其他位置。 下载小米官方解锁工具。 访问小米官方解锁网站,登录小米账号申请解锁权限,下载官方解锁工具。 开启开发者选项 「设置」->「全部参数」-> 连续点击「MIUI 版本」(直至开启开发者选项即可) 设备绑定小米账号 「设置」->「更多设置」->「开发者选项」->「设备解锁状态」(登录小米账号) 开启 USB 调试 「设置」->「更多设置」->「开发者选项」->「USB 调试」(开启即可)。 开启 OEM 解锁 「设置」->「更多设置」->「开发者选项」->「OEM 解锁」(开启即可)。 手机重启至 fastboot 模式 通过 USB 将设备连接到 PC。,由于前面已配置好 adb 和 fastboot 的环境变量,所以我们可以直接执行相应的命令。(如果手机有弹框是否允许此电脑调试,点击允许即可) 打开 cmd(命令提示符),执行下列命令 1adb reboot bootloader 执行完命令后就会进入 fastboot 模式(也就是米兔修 Android 机器人的界面) 解压运行小米官方解锁工具 解压完后,文件夹里找到 miflash_unlock.exe,双击运行即可。登录账号依照提示完成解锁即可。 什么?解锁 bootloader 还需要绑定小米账号满 72 小时(还得相对活跃地使用),可还行 (雷军:求求你们了,不要解锁!不要解锁!不要解锁!人家小米 6 还是处呢) 🐶保命 真正解锁 bootloader 的时候到了 陪伴了 MIUI 三个日夜,它终于满足了,我是一滴念想也没有了,所以它也便不再挽留我。此时重复步骤 4 ~ 步骤 7 即可。 刷机操作 下载 TWRP 前往这个页面,找到 *.img 文件下载即可。 通过 USB 将设备连接到 PC。 在电脑上,打开 cmd,然后输入: 1adb reboot bootloader 刷入 TWRP 在 cmd 上输入: 1fastboot flash recovery *.img 如果你用 Linux 或者 macOS 执行 fastboot 命令提示权限不足,请在 fastboot 之前加上 sudo,即(sudo fastboot flash recovery *.img) 命令里的 *.img 不需要手动输入,直接拖拽文件到 cmd 窗口即可,系统会自动填写文件相应的路径。如图: 重启进入 TWRP 执行命令重启 1fastboot reboot 执行完命令立马长按 音量 + ,直至进入 TWRP 即可。 格式化 Data 「TWRP主界面」->「Wipe」->「Format Data」(输入 yes,打钩确认格式化 data) 五清 「TWRP主界面」->「Wipe」->「Adavanced Wipe」-> 勾选「Dalvik / ART Cache」、「Cache」、「System」、「Data」、「Internal Storage」(切勿勾选到「Vendor」) -> 划过滑动条确认擦除 在刷入官方 LineageOS 之前您自 2019 年 8 月 4 日起必须使用 Android 9.0 MIUI 的 firmware。〖LineageOS 17.1 官方安装说明没有提到 firmware 版本的要求(之前 LineageOS 16 的安装说明有提过),所以估计是这个 firmware 或以上版本都可以,我还是用的这个 firmware〗 firmware 下载地址:https://osdn.net/projects/xiaomifirmwareupdater/storage/Stable/V10/sagit/ 刷入 firmware 过程:「TWRP主界面」->「Advanced」->「ADB Sideload」(划过滑条即可),然后电脑打开 cmd,输入命令: 1adb sideload *.zip 命令里的 *.zip 也是和之前刷 TWRP 一样也是不需要手动输入的,直接拖拽文件到 cmd 窗口即可,系统会自动填写文件相应的路径。 刷完后手机会自动退出 ADB Sideload 刷入 LineageOS 官方包 LineageOS for 小米 6 下载地址:https://download.lineageos.org/sagit 嗯~ o( ̄▽ ̄)o,我们下载最新的就行 刷入 LineageOS 过程::「TWRP 主界面」->:「Advanced」->「ADB Sideload」(划过滑条即可),电脑打开 cmd,输入命令: 1adb sideload *.zip 命令里的 *.zip 也是和之前刷 TWRP 和 firmware 一样的,也是不需要手动输入的,直接拖拽文件到 cmd 窗口即可,系统会自动填写文件相应的路径。 刷入 OpenGapps 以获取 Google 全家桶(可选项) OpenGapps 地址: https://opengapps.org/ 选择 ARM64,Android 10.0,Variant 根据需求进行选择 micro:有限的 Google Apps 如 Gmail,日历,Google Now 以及 Play 商店无法提供的额外功能 nano:最小化安装,但包括 Play 商店无法提供的额外功能 pico:获得 Google Play 功能的最低要求 tvstock:适用于 Android TV 设备的选项(电视的,和手机无关,别选这个) 上述选项的注释均由 Google 机翻,本人稍作改动,如有误导敬请谅解。本想推荐 aroma 的,文件虽然是最大的,但毕竟可以随自己心意安装组件。 ❗️ 由于 OpenGapps for Android 10 还存在一些问题,OpenGapps 在当前稳定版本中只启用了 micro 及其以下版本,只有等 OpenGapps 团队解决了相关问题,才会提供更大的包。所以现在强烈建议使用 nano 包 刷入 OpenGapps 也是和前面一样,都是用 adb sideload,这里就不再赘述了。 在完成上述内容后,开机前建议执行「Format Data」,分别擦除「Dalvik / ART Cache」、「Cache」、「Data」的操作(❗️ 不要选错了)。 开机测试。 ❗️ 我对于刷入 Magisk 的建议是,先看看是不是能正常开机,如果可以再刷 Magisk 还来得及。 所以现在刷入 Magisk 以获取 root 权限(可选项) 众所周知,如今主流的获取 root 权限的方案就是 Magisk(Magisk 是一款帮助 Android 设备获取 root 权限的开源工具)。 这里我介绍下 2 种方法。一种是通过 Adb Sideload 刷进去,另一种是通过 fastboot。(推荐使用 Adb Sideload 的方式,不推荐用 fastboot 方式刷是因为这种方式刷入 Magisk 的话,手机每次重启会卡开机动画,得手动进 TWRP 才能正常重启) adb sideload 方式fastboot 方式点此在页面找到最新的 Magisk-v版本号.zip 下载,以我当前的时间为例,目前最新的 Magisk 版本为 20.4,那么就是下载 Magisk-v20.4.zip。 adb sideload 刷入方式和前面说的没什么不同,这里就不说了。 最后再次开机后发现没有 Magisk Manger(Magisk 的管理 app)的话,点此在该页面找到最新的 Magisk Manger 的 apk 安装即可。❶ 点此在该页面找到 Magisk Manger 的 apk 安装即可。 ❷ 电脑上解压 LinegaeOS 的刷机包 *.zip,找到 boot.img,传到手机里。 ❸ 打开 Magisk Manager(Magisk 的管理 app,并不是 Magisk 本体),首页会显示 Magisk 未安装,点击旁边的「Install 安装」-> 然后弹框会询问你是否现在安装 Magisk ,你选「Install 安装」-> 再然后选「Select and Patch a File 选择并修补一个文件」,找到刚传的 boot.img,等 patch 完后会生成 内部存储/Download/magisk_patched.img 文件。最后把这个文件传回电脑,然后执行命令: 1fastboot flash boot *.img 一样的,命令里的 *.img 不需要手动填写,把 magisk_patched.img 拖拽到 cmd 就行。 搞定完一切后,刷机操作就完成了。我来展示下成果图吧(我装的 lawnchair 启动器)~ 成果图 常见问题 为什么我刷完机后,想要再进 TWRP 玩玩其他东西,但是需要输入密码,密码是什么? 答:这个密码是您设置的锁屏密码,默认情况下,您的设备是全盘加密的,这是为了安全着想而设计的(但是也不排除遭到他人强迫给出密码解密的可能),只有在正确的输入你的锁屏密码才能解密设备。 刷 OpenGapps 后无法通过开机向导该怎么办? 当你在没有退出 Google 帐号就刷机的情况下,只是通过 TWRP 直接格式化手机或者是刷了 OpenGapps 后可能会遇到无法跳过开机向导的情况。具体来说,也就是触发了 Android 的 FRP(Factory Reset Protection)机制,具体解决办法可以看看这篇文章。 (没遇到就不用管)如果遇到数据能上网,但打电话显示 sim 卡无信号或无法连接到移动网络该怎么办? 答:系统默认开启了 VoLTE,但是 VoLTE 是不可用的。(我本人电信卡作为主卡是遇到了的,我也不知道是不是我没有开通 VoLTE 的原因,又或者是电信卡的原因,还是这个官方 LineageOS 本身就不能用 VoLTE。)解决方法:「Settings 设置」->「Network and Internet 网络 & 互联网」->「Mobile network 移动网络」里选择出现问题的 sim 卡 ->「Advanced 高级」-> 找到「VoLTE 增强 4G LTE 模式(使用LTE服务来增强语音和其他通讯)」,把这个选项关了就行了。总之整完了这个,我测试了电信打电话,和数据上网也没什么问题了。 晚上关灯搞手机,手机按键的背光灯常亮看起来要瞎了,怎么把背光灯关掉? 答:最好的做法是睡觉不要玩手机! 好啦,告诉你吧。「设置」->「系统」->「按钮」->「背光灯」->「按键亮度」调节至 0% 就可以啦。 如何在状态栏里显示电池百分比和实时网速? 答关于电池百分比:在「Settings 设置」-> 「System 系统」->「Status bar 状态栏」-> 「Battery percentage 电池百分比」,建议选择「Next to the icon 图标旁边」。关于实时显示网速:在「Settings 设置」->「System 系统」->「Status bar 状态栏」->「Network traffic monitor 网络流量监视器」->「Display mode 显示模式」,选择「Upload and Download 上传和下载」->「Traffic mesurement units 流量测量单位」,选择 kB/s(记住得是大写的 B,小写的话就是 1000 比特每秒作为单位) 哪里可以获取 Google 相机? 答:我用的是俄罗斯的一位老哥 Alexey070315 搞的 Google 相机。现在最新版本是 2020-04-07 的 MGC_MIX2S_JOKER3.apk,点此下载安装即可。 手机连点两下亮屏,哪里可以取消? 答:其实这个是系统默认开启的双击屏幕的任意位置唤醒设备的功能。如果你想要关掉的话,你可以去「Settings 设置」->「Display 显示」->「Advanced 高级」->「Tap to wake 点击唤醒」选项关掉即可。 不习惯默认的“任务键在左,返回键在右”,需要在哪里设置反转呢? 答:你可以在「Settings 设置」->「System 系统」->「Buttons 按键」->「Additional buttons 更多按键」->「Swap buttons 交换按键」开启这个选项即可。 状态栏的 Wi-Fi 显示不可用或者是受限,这是为什么呢,又该如何解决? 详情请参见:(类)原生 Android 网络去叉/叹号 Android 5.0 - 10.0 本文完结,如有其他疑问可以在评论区留言,在我能力允许的情况下我会对此进行答复~","categories":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/categories/Android/"}],"tags":[{"name":"小米","slug":"小米","permalink":"https://ericclose.github.io/tags/%E5%B0%8F%E7%B1%B3/"},{"name":"sagit","slug":"sagit","permalink":"https://ericclose.github.io/tags/sagit/"},{"name":"LineageOS","slug":"LineageOS","permalink":"https://ericclose.github.io/tags/LineageOS/"}]},{"title":"Arch Linux with KDE 配置触控板手势","slug":"libinput-gestures-on-Arch-Linux-with-KDE","date":"2020-04-19T07:05:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"libinput-gestures-on-Arch-Linux-with-KDE.html","permalink":"https://ericclose.github.io/libinput-gestures-on-Arch-Linux-with-KDE.html","excerpt":"本文教你如何配置触控板的手势,以 Arch Linux 为例,桌面环境为 KDE。 libinput-gestures: 使用libinput在触摸板上执行动作手势 将当前用户加入到input组(您必须是input用户组的成员才具有读取触控板设备的权限) 1sudo gpasswd -a $USER input","text":"本文教你如何配置触控板的手势,以 Arch Linux 为例,桌面环境为 KDE。 libinput-gestures: 使用libinput在触摸板上执行动作手势 将当前用户加入到input组(您必须是input用户组的成员才具有读取触控板设备的权限) 1sudo gpasswd -a $USER input 注意,注销用户或重启以生效 安装 libinput-gestures 123git clone https://aur.archlinux.org/libinput-gestures.gitcd libinput-gesturesmakepkg -si 开启相应服务并设为开机自启 12libinput-gestures-setup autostartlibinput-gestures-setup start 编辑配置文件 12cp /etc/libinput-gestures.conf ~/.config/libinput-gestures.confvim ~/.config/libinput-gestures.conf 在文件的末尾追加如下内容 1234gesture swipe down 3 xdotool key ctrl+F12 # 三指下滑回到桌面gesture swipe up 3 xdotool key ctrl+F10 # 三指上滑查看窗口gesture swipe right 4 xdotool key meta+Tab # 四指右滑切换窗口gesture swipe left 4 xdotool key meta+Tab # 四指左滑切换窗口 然后在 「System Settings 系统设置」 -> 「Input Devices 输入设备」 -> 「Touchpad 触控板」 -> 启用 「Tap-to-click 轻触点击」 和 「Tap-and-drag 连续轻触2下拖拽」 最后,注销用户或重启生效。","categories":[{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/categories/Linux/"}],"tags":[{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/tags/Linux/"},{"name":"触控板","slug":"触控板","permalink":"https://ericclose.github.io/tags/%E8%A7%A6%E6%8E%A7%E6%9D%BF/"},{"name":"KDE","slug":"KDE","permalink":"https://ericclose.github.io/tags/KDE/"}]},{"title":"一文让你了解如何为 Git 设置代理","slug":"git-proxy-config","date":"2020-03-31T15:28:41.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"git-proxy-config.html","permalink":"https://ericclose.github.io/git-proxy-config.html","excerpt":"当您在克隆或从远程仓库获取数据时,很可能因为网络状况不佳遇到很慢甚至超时的情况,那么此时您可能需要配置 Git 的代理。 Git 支持的传输协议以及判断(点击展开) 在此之前需要先提一下,Git 支持的传输协议有 ssh、git、http 和 https 协议(此外,ftp 和 ftps 也可用于拉取,但在 Git 官方文档中提到是低效且过时的,不建议使用)。其原生传输协议(即 git:// URL)不做鉴权,在不安全的网络环境下应谨慎使用。要如何分辨 Git 使用的传输协议呢?可以通过 Git URL 来进行判断:sshssh://[user@]host.xz[:port]/path/to/repo.git/ 或 [user@]host.xz:path/to/repo.git/gitgit://host.xz[:port]/path/to/repo.git/http / httpshttp[s]://host.xz[:port]/path/to/repo.git/ftp / ftpsftp[s]://host.xz[:port]/path/to/repo.git/ 连接到 Git 仓库最常用的传输协议可以分为两类: HTTP / HTTPS 传输协议 SSH 传输协议","text":"当您在克隆或从远程仓库获取数据时,很可能因为网络状况不佳遇到很慢甚至超时的情况,那么此时您可能需要配置 Git 的代理。 Git 支持的传输协议以及判断(点击展开) 在此之前需要先提一下,Git 支持的传输协议有 ssh、git、http 和 https 协议(此外,ftp 和 ftps 也可用于拉取,但在 Git 官方文档中提到是低效且过时的,不建议使用)。其原生传输协议(即 git:// URL)不做鉴权,在不安全的网络环境下应谨慎使用。要如何分辨 Git 使用的传输协议呢?可以通过 Git URL 来进行判断:sshssh://[user@]host.xz[:port]/path/to/repo.git/ 或 [user@]host.xz:path/to/repo.git/gitgit://host.xz[:port]/path/to/repo.git/http / httpshttp[s]://host.xz[:port]/path/to/repo.git/ftp / ftpsftp[s]://host.xz[:port]/path/to/repo.git/ 连接到 Git 仓库最常用的传输协议可以分为两类: HTTP / HTTPS 传输协议 SSH 传输协议 使用 HTTP / HTTPS 传输协议连接到 Git 仓库的 URL 实例如下: 12http://github.com/cms-sw/cmssw.githttps://github.com/cms-sw/cmssw.git 使用 SSH 传输协议连接到 Git 仓库的 URL 实例如下: [email protected]:cms-sw/cmssw.gitssh://[email protected]/cms-sw/cmssw.git 预先准备在开始操作之前,你需要明确这些内容: 电脑已经安装了 Git(这不是废话吗,23333)。如果你是 Windows 用户,那么本文的命令你需要通过 Git Bash 来执行;如果你是 Linux 或 macOS 用户直接在终端运行即可。 知道如何用 vim 编辑文件,退出编辑的基本操作。 Git 使用 HTTP / HTTPS 传输协议的代理方法针对 Git 使用 HTTP / HTTPS 传输协议的代理方法如下: 针对所有域名的仓库: git config --global http.proxy <protocol>://<host>:<port> 命令注解(点击展开) --glboal 选项指的是修改 Git 的全局配置文件 ~/.gitconfig(而非各个 Git 仓库里的配置文件 .git/config)。<protocol> 指的是代理协议,如 http,https,socks5 等。<host> 为代理主机,如使用本地代理主机 127.0.0.1 或 localhost 等。<port> 则为代理端口号,如 clash 使用的 7890 或 7891 等。常见误用:git config --global https.proxy <protocol>://<host>:<port>,这一写法完全是错误的。请记住: Git 代理配置项正确写法为 http.proxy,并不支持 https.proxy 这一错误写法。如果想了解 <url> 的更多模式,如子域名等的情况,可参照 Git 的官方文档 。 或者针对特定域名的仓库: git config --global http.<url>.proxy <protocol>://<host>:<port> 命令注解(点击展开) --glboal 选项指的是修改 Git 的全局配置文件 ~/.gitconfig(而非各个 Git 仓库里的配置文件 .git/config)。<url> 指的是你需要使用代理的远程仓库,该 <url> 支持 HTTP / HTTPS 传输协议的格式:<url> 格式为 http://example.com 或 https://example.com<protocol> 指的是代理协议,如 http,https,socks5 等。<host> 为代理主机,如使用本地代理主机 127.0.0.1 或 localhost 等。<port> 则为代理端口号,如 clash 使用的 7890 或 7891 等。常见误用:针对 HTTPS 传输协议(即 https:// 开头)的 <url> 代理,命令写成 “git config --global https.https://github.com.proxy protocol://127.0.0.1:7890” ,这一写法完全是错的。请记住:请记住: Git 代理配置项正确写法为 http.<url>.proxy,并不支持 https.<url>.proxy 这一错误写法。如果想了解 <url> 的更多模式,如子域名等的情况,可参照 Git 的官方文档 。 实例 针对 Git 使用 HTTP / HTTPS 传输协议的代理方法,在 Windows,Linux,macOS 上用户的操作均是一样的。 也许你光看我上面的内容还看不明白,不妨我们来看下实例部分: 此处以 Clash for Windows 为例子。如图: Clash for Windows 既支持 HTTP / HTTPS 协议代理,也支持 SOCKS v5 协议代理。如果你使用其他的代理软件,你可以根据你使用的代理软件的代理协议和本地端口号参考本文修改即可。 针对所有域名的 Git 仓库根据你的代理软件支持的代理协议选取其中一种即可: http 代理socks5 代理1git config --global http.proxy http://127.0.0.1:7890 注意:7890 为 Clash for Windows 的 http 代理端口。1git config --global http.proxy socks5://127.0.0.1:7891 注意:7891 为 Clash for Windows 的 socks5 代理端口。 针对特定域名的 Git 仓库前面我们说的是,让所有域名下的仓库都走代理的情况,但是在现实情况下我们并不想这么做。那么现在我来介绍一下针对特定域名仓库走代理的做法,此处以 GitHub 为例: 当我们在 GitHub 仓库使用 HTTPS 传输协议克隆源码时,我们往往是这么做的的: 1git clone https://github.com/<user>/<repository>.git 那么我前面命令注解所提到的 <url> 就是 https://github.com 根据你的代理软件支持的代理协议选取其中一种即可: http 代理socks5 代理1git config --global http.https://github.com.proxy http://127.0.0.1:78901git config --global http.https://github.com.proxy socks5://127.0.0.1:7891 Git 使用 SSH 传输协议的代理方法在这种情况下,Git 依靠 ssh 程序处理连接; 为了通过代理进行连接,您必须配置 ssh 程序本身,在 ~/.ssh/config 文件中设置 ProxyCommand 选项,通过在 ProxyCommand 中声明,使用不同操作系统下的程序来通过代理建立连接。 macOS 是通过在 ProxyCommand 中声明 nc 程序(该 nc 程序命令为系统自带的 OpenBSD 版本的 netcat 提供)来代理的; Linux 一样可以通过 nc 程序、但是 Linux 上 nc 程序有 2 种 netcat 版本可以提供,分为 Nmap 版和 OpenBSD 版。如果是 OpenBSD 的版本,则 nc 命令与 macOS 相同;如果是 Nmap 版本的,nc 其实是指向 ncat 程序的符号链接,则其具体命令不一样;各 Linux 发行版本下 netcat 软件包名如下表: Linux 发行版本 / netcat 软件包名 Nmap 版 OpenBSD 版 Fedora 系列 nmap-ncat netcat Debian 系列 ncat netcat-openbsd Windows 下则是通过安装 Git for Windows 附带的 connect 程序。 相关 man 手册(点击展开) ssh_config(5) ProxyCommand 的内容:123456789ProxyCommandSpecifies the command to use to connect to the server. The command string extends to the end of the line, and is executed using the user's shell ‘exec’ directive to avoid a lingering shell process.Arguments to ProxyCommand accept the tokens described in the TOKENS section. The command can be basically anything, and should read from its standard input and write to its standard output. It should eventually connect an sshd(8) server running on some machine, or execute sshd -i somewhere. Host key management will be done using the Hostname of the host being connected (defaulting to the name typed by the user). Setting the command to none disables this option entirely. Note that CheckHostIP is not available for connects with a proxy command.This directive is useful in conjunction with nc(1) and its proxy support. For example, the following directive would connect via an HTTP proxy at 192.0.2.0:ProxyCommand /usr/bin/nc -X connect -x 192.0.2.0:8080 %h %pNmap 提供的 nc(1) 程序 --proxy 和 --proxy-type 的内容:1234567--proxy host[:port] (Specify proxy address)Requests proxying through host:port, using the protocol specified by --proxy-type.If no port is specified, the proxy protocol's well-known port is used (1080 for SOCKS and 3128 for HTTP). When specifying an IPv6 HTTP proxy server using the IP address rather than the hostname, the square-bracket notation (for example [2001:db8::1]:8080) MUST be used to separate the port from the IPv6 address. If the proxy requires authentication, use --proxy-auth.--proxy-type proto (Specify proxy protocol)In connect mode, this option requests the protocol proto to connect through the proxy host specified by --proxy. In listen mode, this option has Ncat act as a proxy server using the specified protocol.The currently available protocols in connect mode are http (CONNECT), socks4 (SOCKSv4), and socks5 (SOCKSv5). The only server currently supported is http. If this option is not used, the default protocol is http.OpenBSD 提供的 nc(1) 程序 -X 和 -x 选项的的内容:12345-X proxy_protocolUse proxy_protocol when talking to the proxy server. Supported protocols are 4 (SOCKS v.4), 5 (SOCKS v.5) and connect (HTTPS proxy). If the protocol is not specified, SOCKS version 5 is used.-x proxy_address[:port]Connect to destination using a proxy at proxy_address and port. If port is not specified, the well-known port for the proxy protocol is used (1080 for SOCKS, 3128 for HTTPS). An IPv6 address can be specified unambiguously by enclosing proxy_address in square brackets. A proxy cannot be used with any of the options -lsuU.Git for Windows 默认附带的 connect 程序 -H 和 -S 选项的内容12345-H option specify hostname and port number of http proxy server to relay. If port is omitted, 80 is used. You can specify this value by environment variable HTTP_PROXY and give -h option to use it.-S option specify hostname and port number of SOCKS server to relay. Like -H option, port number can be omit and default is 1080. You can also specify this value pair by environment variable SOCKS5_SERVER and give -s option to use it.-4 and -5 is for specifying SOCKS protocol version. It is valid only using with -s or -S. Default is -5 (protocol version 5) 实例接下来的操作,请按照你的系统、选择的 netcat 的实现版本以及所使用的代理协议进行选择: Linux(OpenBSD 版 netcat)和 macOS 用户https 代理socks5 代理编辑 ~/.ssh/config 文件 1vim ~/.ssh/config 给文件加上如下内容: 123Host github.com User git ProxyCommand nc -X connect -x 127.0.0.1:7890 %h %p 解释: Host 后面 接的 github.com 是指定要走代理的仓库域名。 在 ProxyCommand 中,Linux 和 macOS 用户用的是 OpenBSD 版本的 nc。 -X 选项后面接的是 connect 的意思是 HTTPS 代理。 -x 选项后面加上代理地址和端口号。 在调用 ProxyCommand 时,%h 和 %p 将会被自动替换为目标主机名和 SSH 命令指定的端口(%h 和 %p 不要修改,保留原样即可)。 编辑 ~/.ssh/config 文件 1vim ~/.ssh/config 给文件加上如下内容,2种任选一个: Host 后面 接的 github.com 是指定要走代理的仓库域名。 在 ProxyCommand 中,Linux 和 macOS 用户用的是 OpenBSD 版本的 nc 。 在调用 ProxyCommand 时,%h 和 %p 将会被自动替换为目标主机名和 SSH 命令指定的端口( %h 和 %p 不要修改,保留原样即可)。 如果 -X 选项后面接的是数字 5,那么指的就是 socks5 代理。 当然你直接不写上 -X 选项也是可以的,因为在没有指定协议的情况下,默认是使用 socks5 代理的。所以以下 2 种的写法效果一样 ,都指的是走 socks5 代理: ①. 第一种 123Host github.com User git ProxyCommand nc -X 5 -x 127.0.0.1:7891 %h %p 或 ②. 第二种 123Host github.com User git ProxyCommand nc -x 127.0.0.1:7891 %h %p Linux(Nmap 版 netcat)用户http 代理socks5 代理编辑 ~/.ssh/config 文件 1vim ~/.ssh/config 给文件加上以下内容: 123Host github.com User git ProxyCommand nc --proxy 127.0.0.1:7890 --proxy-type http %h %p 解释: Host 后面 接的 github.com 是指定要走代理的仓库域名。 在 ProxyCommand 中,Linux 用户用的是 Nmap 版本的 nc 。 --proxy-type 选项后面的 http 的意思是指使用 HTTP 代理。 在调用 ProxyCommand 时,%h 和 %p 将会被自动替换为目标主机名和 SSH 命令指定的端口( %h 和 %p 不要修改,保留原样即可)。 编辑 ~/.ssh/config 文件 1vim ~/.ssh/config 给文件加上如下内容: 123Host github.com User git ProxyCommand nc --proxy 127.0.0.1:7891 --proxy-type socks5 %h %p 解释: Host 后面 接的 github.com 是指定要走代理的仓库域名。 在 ProxyCommand 中,Linux 用户用的是 Nmap 版本的 nc 。 --proxy-type 选项后面的 socks5 的意思是指使用 socks5 代理。 在调用 ProxyCommand 时,%h 和 %p 将会被自动替换为目标主机名和 SSH 命令指定的端口( %h 和 %p 不要修改,保留原样即可)。 Windows 用户http 代理socks5 代理编辑 ~/.ssh/config 文件 1vim ~/.ssh/config 给文件加上以下内容: 123Host github.com User git ProxyCommand connect -H 127.0.0.1:7890 %h %p 解释: Host 后面 接的 github.com 是指定要走代理的仓库域名。 在 ProxyCommand 中,Windows 用户用的是 connect 。 -H 选项的意思是 HTTP 代理。 在调用 ProxyCommand 时,%h 和 %p 将会被自动替换为目标主机名和 SSH 命令指定的端口( %h 和 %p 不要修改,保留原样即可)。 编辑 ~/.ssh/config 文件 1vim ~/.ssh/config 给文件加上如下内容: 123Host github.com User git ProxyCommand connect -S 127.0.0.1:7891 %h %p 解释: Host 后面 接的 github.com 是指定要走代理的仓库域名。 在 ProxyCommand 中,Windows 用户用的是 connect。 单独的 -S 选项指的就是 socks5 代理 在调用 ProxyCommand 时,%h 和 %p 将会被自动替换为目标主机名和 SSH 命令指定的端口( %h 和 %p 不要修改,保留原样即可)。 如何取消 Git 和 ssh 的代理这里就不多说了,说了那么多,我们无非就是修改了 2 个文件,即 ~/.gitconfig 和 ~/.ssh/config ,删除或注释我们增加的相应内容(在相应行的开头加上 # 即可)即可完成取消代理。 参考链接 Git - git-config Documentation Configure Git to use a proxy Tutorial: how to use git through a proxy ssh_config(5) - OpenBSD manual pages ncat(1) — Linux manual page nc(1) - OpenBSD manual pages SSH Proxy Command – connect.c How can I use SSH with a SOCKS 5 proxy? Git 基础——代理 SSH via HTTP proxy in OSX","categories":[{"name":"Proxy","slug":"Proxy","permalink":"https://ericclose.github.io/categories/Proxy/"}],"tags":[{"name":"代理","slug":"代理","permalink":"https://ericclose.github.io/tags/%E4%BB%A3%E7%90%86/"},{"name":"Git","slug":"Git","permalink":"https://ericclose.github.io/tags/Git/"}]},{"title":"如何通过 HWIDGEN 以数字许可的方式激活 Windows 10","slug":"active-Windows-10-with-digital-license","date":"2020-03-22T14:47:03.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"active-Windows-10-with-digital-license.html","permalink":"https://ericclose.github.io/active-Windows-10-with-digital-license.html","excerpt":"HWIDGEN 是一款由国外 Nsane 论坛会员 s1ave77 制作的 Windows 10 数字权利激活工具。这款 Windows 10 数字权利获取工具,可以自动获取 Windows 10 数字许可证激活,无需产品密钥,以最简单的方式永久激活。","text":"HWIDGEN 是一款由国外 Nsane 论坛会员 s1ave77 制作的 Windows 10 数字权利激活工具。这款 Windows 10 数字权利获取工具,可以自动获取 Windows 10 数字许可证激活,无需产品密钥,以最简单的方式永久激活。 HWIDGEN 的源码 https://github.com/CHEF-KOCH/HWIDGEN-SRC 工具下载地址 Google Drive(包含历史版本) 解压密码 3Fs44Rv#tZ4u3UOij656NgF____ 支持的 Windows 10 版本(Skus): 核心(家庭)版(N) 核心单语言版(N) 专业版(N) 专业教育版(N) 专业工作站版(N) 教育版(N) 企业版(N) 企业 S 版(N)【2015/2016:数字证书】 企业 S 版(N)【2019:19年的离线 KMS 激活(和企业G版相似)】 服务器标准(核心)版(N)【2016/2019:19年的离线 KMS 激活(和企业G版相似)】 服务器数据中心(核心)版(N)【2016/2019:19年的离线 KMS 激活(和企业G版相似)】 服务器解决方案(核心)版(N)【2016/2019:19年的离线 KMS 激活(和企业G版相似)】 上述内容均引用自 Windows 10 数字许可证激活(HWID)方法——原创翻译 使用说明 下载 hwid.kms38.gen.mk6.zip 后将压缩包解压,输入上述密码,得到文件 hwid.kms38.gen.mk6.exe,双击它。启动完成后在 Work Mode 选中 HWID,然后 Start 即可,等进度条走完跳出 Success 弹框就激活成功啦。 进入「设置」,「安全和更新」,找到「激活」的一栏。得到“Windows 已使用数字许可证激活”的提示: Windows 已使用数字许可证激活","categories":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/categories/Windows/"}],"tags":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/tags/Windows/"},{"name":"激活","slug":"激活","permalink":"https://ericclose.github.io/tags/%E6%BF%80%E6%B4%BB/"}]},{"title":"竞斗云2.0 ( P&W R619AC ) 刷机教程 ( 免拆机 / 免劫持 )","slug":"R619AC-OpBoot-and-OpenWrt-flashing","date":"2019-11-23T04:33:19.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"R619AC-OpBoot-and-OpenWrt-flashing.html","permalink":"https://ericclose.github.io/R619AC-OpBoot-and-OpenWrt-flashing.html","excerpt":"目前竞斗云2.0 官方固件版本升级至 2.5.11.82 后可轻松刷入第三方固件,这简化了我们刷机的流程。 事前准备: 电脑、网线、全新 / 已恢复出厂 的竞斗云2.0 请先给路由器通上电后用网线将电脑连接至路由器的 LAN 口 下载好下列文件:","text":"目前竞斗云2.0 官方固件版本升级至 2.5.11.82 后可轻松刷入第三方固件,这简化了我们刷机的流程。 事前准备: 电脑、网线、全新 / 已恢复出厂 的竞斗云2.0 请先给路由器通上电后用网线将电脑连接至路由器的 LAN 口 下载好下列文件: 竞斗云2.0 刷机相关文件 文件名 md5sum 描述 下载 openwrt-ipq40xx-R9.11.22-unlock-p2w_r619ac-squashfs-nand-factory.bin d3e8d29d1a37872f37f9070fabb9a7a2 OpenWrt 过渡包,在竞斗云官方固件更新后刷入 链接 opboot-p2w-r619ac-flash-v1.0.8.bin c3c0efd25aa18ee505debb3a90d75fe3 OpBoot文件,刷入过渡包后刷入 链接 openwrt-ipq40xx-R9.11.23-p2w_r619ac-squashfs-nand-sysupgrade.bin 856e7571263398a8c976cbf721ac821c 刷完OpBoot后,最后刷入的OpenWrt固件 链接 MEGA 网盘下载链接: https://mega.nz/#F!hVgXjACA!CISFW8tyoKLCWs6RbC23LQ 推荐 使用梯子在 MEGA 网盘下载相关文件,当然您也可以直接点击表格中的链接下载。 官方固件更新并刷入 OpenWrt 过渡包 浏览器访问 192.168.7.1 ,进入官方固件的管理页面。 选择 「 自动获取(DHCP模式) 」 ,下一步 设置 WiFi 名称和密码,密码可为空,下一步 输入设置的密码,「 登录 」(如果没设置密码直接点登录即可) 这就进入了主界面,我们点击 「 高级设置 」 点击 「 升级检查 」 -> 「 检查升级 」 升级提醒 处点击 「 确定 」 正在升级系统,请不要关闭电源… 升级完成后浏览器会重新进入路由器管理界面,重新输入设置过的密码登录即可。此时我们在主界面点击 「 高级设置 」 -> 「 升级检查 」 ,这里已经可以看到在新版官方固件(版本号为 2.5.11.82 )多了上传固件更新系统的功能。如图: 点击 「 选择文件 」 ,选中过渡包(即 openwrt-ipq40xx-R9.11.22-unlock-p2w_r619ac-squashfs-nand-factory.bin ),无需保存配置,点击 「 开始刷入 」 即可。 正在升级系统,请不要关闭电源… 刷完固件后,原有的 192.168.7.1 已经无法访问了,OpenWrt 的默认管理地址是 192.168.1.1 ,在浏览器的地址栏输入 192.168.1.1 即可。 如果能访问 OpenWrt 登录界面即表示正常刷入固件(此处我们无需登录),如图: 到这里,如果您是 Windows 用户,建议看 Hyejeong 的针针小站一文 —— 【Router】G-DOCK 竞斗云2.0 小白刷机教程 。 电脑上安装 OpenSSH 注意: 本人电脑使用的 Linux 发行版本是 Arch Linux,其默认的软件包管理器是 pacman 。请根据您使用的发行版本选择合适的包管理器安装 openssh 电脑上打开终端模拟器执行命令: 1[eric@arch ~]$ sudo pacman -S openssh 将电脑上的 OpBoot 文件 ( opboot-p2w-r619ac-flash-v1.0.8.bin ) 复制到路由器将文件从本地主机复制到远程主机,用法如下: scp local_file_path username@host_ip:/remote/directory/ 操作实例 注意: 默认密码是 password 1234567[eric@arch ~]$ scp '/home/eric/OpBoot/opboot-p2w-r619ac-flash-v1.0.8.bin' [email protected]:/tmpThe authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.Are you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '192.168.1.1' (RSA) to the list of known [email protected]'s password: opboot-p2w-r619ac-flash-v1.0.8.bin 100% 1472KB 3.6MB/s 00:00 SSH 登录到路由器ssh 登录到远程服务器,用法如下: ssh username@server-address 操作实例 注意: 密码和前面输入的是同一个,即 password 123456789101112131415[eric@arch ~]$ ssh [email protected]@192.168.1.1's password: BusyBox v1.30.0 () built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt SNAPSHOT, r1673-ea47656 -----------------------------------------------------root@OpenWrt:~# 读取路由器的分区表 前面已经登录到路由器的 shell 了,所以命令是在路由器上执行的了。 1234567root@OpenWrt:~# cat /proc/mtddev: size erasesize namemtd0: 04000000 00020000 "rootfs"mtd1: 04000000 00020000 "unused1"mtd2: 00170000 00010000 "Bootloader"mtd3: 00010000 00010000 "ART"mtd4: 00e80000 00010000 "unused" 只要查询到分区里含有 Bootloader ,就可以继续下面的刷写 Bootloader 的操作了。 校验路由器上的 OpBoot 文件12root@OpenWrt:~# md5sum /tmp/opboot-p2w-r619ac-flash-v1.0.8.binc3c0efd25aa18ee505debb3a90d75fe3 /tmp/opboot-p2w-r619ac-flash-v1.0.8.bin opboot-p2w-r619ac-flash-v1.0.8.bin 的 md5 值是:c3c0efd25aa18ee505debb3a90d75fe3 ,如果对的上即可放心刷入。 刷写 OpBoot 到 Bootloader123456root@OpenWrt:~# mtd -r write /tmp/opboot-p2w-r619ac-flash-v1.0.8.bin BootloaderUnlocking Bootloader ...Writing from /tmp/opboot-p2w-r619ac-flash-v1.0.8.bin to Bootloader ... Rebooting ... 注意: 此处 Rebooting… 并不会自动退出,想要知道是否重启完,浏览器直接访问 192.168.1.1 如果能访问 OpenWrt 的登录界面则表示已经重启完成。此时你可以手动关闭电脑的终端模拟器了 进入 OpBoot先拔掉路由器的电源,长按路由器背面的 reset 按键( 不要松开 ),然后重新插上电源,直到 跑马灯跑完 (即 LAN的 指示灯4,3,2,1 依次闪过,最后LAN口的指示灯全亮,过后又熄灭),这时就可以松 reset 键了。然后浏览器直接访问 192.168.1.1 ,这样就能进入 OpBoot 了。 备份ART主界面下点击 「 高级功能 」 -> 「 数据备份 」 -> 「 执行 」 ,浏览器会将 art.bin 自动下载到你的电脑上。 备份编程器固件刷新下浏览器然后在 「 备份分区 」 处选择 编程器固件 ,然后再点击 「 执行 」 ,浏览器会将 all.bin 自动下载到你的电脑上。 更新 OpenWrt 固件 注意: 你可以在之前刷入的 OpenWrt 管理界面里更新固件,当然你也可以继续留在 OpBoot 更新固件。 返回 OpBoot 主菜单 「 浏览文件 」 ,选中需要使用的 OpenWrt 固件 ( openwrt-ipq40xx-R9.11.23-p2w_r619ac-squashfs-nand-sysupgrade.bin ) ,然后点击更新即可。 浏览器重新访问 192.168.1.1 ,如果访问的是 OpenWrt 的登录界面即表示更新完成。 注意: 密码默认是 password 输入密码登录成后即可进入 OpenWrt 的主界面 建议执行一次重置。 「 系统 」 -> 「 备份/升级 」 「 执行重置 」 确认重置 重置完后浏览器会重新回到 OpenWrt 的登录界面。 美化 OpenWrt 的管理界面默认的 OpenWrt 主题很是复古,这里我要介绍的是我很喜欢的一个主题,名字叫做 luci-theme-argon 操作实例 点击此处跳转到主题包release页面,下载最新版本的 *.ipk 文件即可 重新接受路由器的密钥 注意: 因为路由器前面经过重置,所以路由器的密钥会发生改变,所以我们需要在电脑上执行 ssh-keygen -R hostname_or_ip 来移除原有属于路由器的密钥,当再次连接路由器时重新接受路由器的密钥即可。如果不执行此操作将无法建立连接。 使用 man ssh-keygen 命令可以查看下ssh-keygen命令的详细用法: 123456789名称 ssh-keygen - 生成、管理和转换认证密钥........................................................................................................................ -R hostname 从 known_hosts 文件中删除所有属于 hostname 的密钥。 这个选项主要用于删除经过散列的主机(参见 -H 选项)的密钥...................................................................................................................... 1234[eric@arch ~]$ ssh-keygen -R 192.168.1.1# Host 192.168.1.1 found: line 8/home/eric/.ssh/known_hosts updated.Original contents retained as /home/eric/.ssh/known_hosts.old 将主题包文件复制到路由器,电脑上打开终端模拟器,执行以下命令: 1234567[eric@arch ~]$ scp '/home/eric/Downloads/luci-theme-argon_1.3-01-20191111_all.ipk' [email protected]:/tmpThe authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.Are you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '192.168.1.1' (RSA) to the list of known [email protected]'s password: luci-theme-argon_1.3-01-20191111_all.ipk 100% 1138KB 2.9MB/s 00:00 登录到路由器: 123456789101112131415[eric@arch ~]$ ssh [email protected]@192.168.1.1's password: BusyBox v1.30.0 () built-in shell (ash) _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- OpenWrt SNAPSHOT, r1673-ea47656 -----------------------------------------------------root@OpenWrt:~# 使用 opkg 安装主题包 luci-theme-argon 1234567root@OpenWrt:~# opkg install /tmp/luci-theme-argon_1.3-01-20191111_all.ipkInstalling luci-theme-argon (1.3-01-20191111) to root...Configuring luci-theme-argon.uci: Entry not founduci: Entry not founduci: Entry not foundroot@OpenWrt:~# 这个时候再用浏览器访问 192.168.1.1 ,就已经是应用了新主题啦。 到这里教程也算是结束了,后续的配置就与本教程无关了。 后续更新(OpBoot 1.0.9 + 128 MB OpenWrt) 文件名 md5sum 描述 下载 opboot-p2w-r619ac-flash-v1.0.9.bin c7d6d14b04d055bf27dad9d9c5d58c7d OpBoot 文件,用命令刷入 链接 opboot-p2w-r619ac-nor-v1.0.9.img 1eec34ed68043cc601b9a0225a1a3502 OpBoot 文件,在 OpBoot 里更新刷入 链接 openwrt-ipq40xx-p2w_r619ac-128MB-squashfs-nand-factory.ubi 0083bbf4b6a5eaf1beb896518f4d6057 OpenWrt 固件,在 OpBoot 里刷入 链接 MEGA 网盘下载链接: https://mega.nz/#F!hVgXjACA!CISFW8tyoKLCWs6RbC23LQ 推荐 使用梯子在 MEGA 网盘下载相关文件,当然您也可以直接点击表格中的链接下载。 OpBoot 升级说明竞斗云 2.0 的 NAND 闪存大小是 128 MB,但前期的 OpBoot 仅支持 64 MB 大小,相应的 OpenWrt 固件也是 64 MB 的,也就是说实际可用的空间仅 64 MB。自从 OpBoot 升级至 1.0.9 之后即可支持竞斗云 2.0 的 128 MB 的 NAND 闪存。 注意: 切勿混刷 opboot-p2w-r619ac-flash-v1.0.9.bin 和 opboot-p2w-r619ac-nor-v1.0.9.img,xxxflashxxx.bin 那个仅通过命令刷入,xxxnorxxx.img 那个则通过 OpBoot 内置的更新功能刷入。自己选错刷入固件后果自负~ 下面是更新到 OpBoot 1.0.9 的步骤说明 (有 2 种方法) : 方法 1使用前面通过 scp 命令将 OpBoot 1.0.9 固件 ( opboot-p2w-r619ac-flash-v1.0.9.bin ) 上传至路由器的 /tmp 目录下,ssh 登录到路由器的 shell 然后执行下面的命令刷入即可(事前 请先校验 文件的md5值是否匹配): 1root@OpenWrt:~# mtd -r write /tmp/opboot-p2w-r619ac-flash-v1.0.9.bin Bootloader 方法 2您也可以通过 OpBoot 内置的更新功能刷入 opboot-p2w-r619ac-nor-v1.0.9.img 。通过如下操作刷入: 首先让路由器进入 OpBoot (怎么进入就不多说了,自己翻一翻前面的描述),然后点击 OpBoot 的右上角的 「 高级功能 」 -> 「 更新OpBoot 」 ,找到 opboot-p2w-r619ac-nor-v1.0.9.img 更新即可。 OpenWrt 128 MB 分区固件刷入说明经过前面刷入 OpBoot 1.0.9 之后,您就可以刷入 128 MB 分区的 OpenWrt 了。更新 128 MB 的固件后,你就可以使用之前 64 MB 分区的固件所无法利用的空间了,也就是说你可以用更多的空间装路由器的插件啦。 因为需要重建 ubi 分区,所以更新过程需要通过 OpBoot 1.0.9 版本刷入 ubi 固件 ( 即 openwrt-ipq40xx-p2w_r619ac-128MB-squashfs-nand-factory.ubi ) 所以你只需要让路由器进入 OpBoot ,然后直接选择 128 MB 分区的 ubi 固件更新就完成了。 鸣谢最后,得在此感谢 mleaf 大佬提供的 OpBoot 和 lean 大佬提供的 OpenWrt 固件,同时我还要感谢那些我参考的文章作者。如果没有他们的努力成果,也就没有这篇文章的诞生啦 参考链接: 竞斗云2.0(R619AC)OpBoot1.0.6刷机教程 【Router】G-DOCK 竞斗云2.0 小白刷机教程","categories":[{"name":"Router","slug":"Router","permalink":"https://ericclose.github.io/categories/Router/"}],"tags":[{"name":"竞斗云","slug":"竞斗云","permalink":"https://ericclose.github.io/tags/%E7%AB%9E%E6%96%97%E4%BA%91/"},{"name":"R619AC","slug":"R619AC","permalink":"https://ericclose.github.io/tags/R619AC/"},{"name":"OpenWrt","slug":"OpenWrt","permalink":"https://ericclose.github.io/tags/OpenWrt/"},{"name":"OpBoot","slug":"OpBoot","permalink":"https://ericclose.github.io/tags/OpBoot/"},{"name":"刷机","slug":"刷机","permalink":"https://ericclose.github.io/tags/%E5%88%B7%E6%9C%BA/"},{"name":"固件","slug":"固件","permalink":"https://ericclose.github.io/tags/%E5%9B%BA%E4%BB%B6/"}]},{"title":"在 VMware Workstation 上 安装 Arch Linux ( UEFI + GPT )","slug":"Installing-Arch-as-a-guest-with-UEFI-and-GPT","date":"2019-11-01T07:31:02.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"Installing-Arch-as-a-guest-with-UEFI-and-GPT.html","permalink":"https://ericclose.github.io/Installing-Arch-as-a-guest-with-UEFI-and-GPT.html","excerpt":"以下使用 VMware Workstation 来安装 Arch Linux,全程以图解方式来讲解Arch Linux安装的过程。","text":"以下使用 VMware Workstation 来安装 Arch Linux,全程以图解方式来讲解Arch Linux安装的过程。 下载 Arch Linux 的镜像文件下载链接:https://archlinux.org/download/ 下载 VMware Workstation下载链接:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-15.5.0-14665864.exe 注意:该软件为商业付费软件,请自行购买许可。(当然如果没有钱钱的话,去网上搜索 VMware Workstation 15 Pro永久激活密钥 即可。小声~ 本文假定您已下载完 Arch Linux 的镜像文件以及安装和激活了 VMware Workstation。 VMware Workstation 配置 「 创建新的虚拟机 」 「 典型安装 」 > 「 下一步 」 「 安装光盘映像文件 」 > 「 浏览 」找到下载好的镜像文件 > 「 下一步 」 「 Linux 」 > 选择「 版本 」,「 其他Linux 5.x或更高版本内核64位 」 > 「 下一步 」 修改「 虚拟机名称 」 > 「 下一步 」 「 最大磁盘大小 」设为 40 GB > 「 将虚拟硬盘存储为单个文件 」,有助于提高运行性能 > 「 下一步 」 「 自定义硬件 」 > 「 内存 」 > 「 虚拟机内存大小 」设为 3072 MB 。 (我实体机内存大小 8 GB,所以虚拟机给个 3 GB还是可以的) 「 显示 」 > 「 加速3D图形 」 「 处理器数量(number of processors) 」 和 「 每个处理器的核心数量(number of cores per processor) 」的选择。 处理器数量:指 物理核心数 。 每个处理的核心数量:指每个物理核心数所拥有的 逻辑核心数 。 处理器核心总数 (total processor cores):前面两者之积。 与平常所说的处理器是x核x线程的关系如图: 正如我电脑的处理器是 Intel(R) Core(TM) i5-8250U ,是4核8线程的。 那么现在问题来了,「 处理器数量 」 和 「 每个处理器的核心数量 」该怎么填写呢。 如果配置与物理机相同的总核数,其性能可达到90%左右; 总核数相同的情况下,处理器数量分配越少,每个处理器的核心数越多,虚拟机的单处理器性能会显著提高,但是总性能会有所下降; 反之,处理器数量分配越多,每个处理器的核心数越少,虚拟机的单处理器性能会有所下降,但是总性能会有所提升。 想要看相关细节,请看引用的内容来源:https://www.jianshu.com/p/da8443f482e9 综上所述,只要「 处理器核心总数 」与物理机具有相同的总核数就可以达到可观的性能,所以我这里「 处理器数量 」 和 「 每个处理器的核心数量 」的值分别设置为 4 和 2 。 「 虚拟机 」 > 「 设置 」 「 选项 」 > 「 高级 」> 「 UEFI 」 > 「 OK 」 至此,VMware Workstation 的配置告一段落。 开启虚拟机 开机,UEFI 成功启动以后像这样 直接选择第一项「 Arch Linux archiso x86_64 UEFI CD 」,回车即可 然后等待一会以后,出现 这就是说已经正常启动到 Arch Linux 的 Live CD 环境啦。 安装 Arch Linux 的全过程联网 确保系统已经启用了网络接口,用 ip link 检查 1root@archiso ~ # ip link 使用 dhcpcd 联网 1root@archiso ~ # dhcpcd 确保联网,能 ping 通 baidu.com 即可(百度最佳的作用就是测试网络是否可用了,其他的没啥了,ε=ε=ε=┏(゜ロ゜;)┛ 逃)。VMware Workstation 默认使用 NAT,只要宿主机能联网,通常虚拟机内也可以直接联网的。用 ping 检查网络连接 1root@archiso ~ # ping -c 4 baidu.com -c 选项:用于指定 ping 的次数 时间同步1root@archiso ~ # timedatectl set-ntp true 正确的(误差之内的)时间在验证连接或证书的可信程度时非常重要,例如 HTTPS 和 GnuPG 都需要准确的时间来验证证书的有效性。 准备磁盘分区分区示例本文只针对 UEFI with GPT 启动方式,并基于最简单的硬盘结构,采用最简单的分区策略。(其中 SWAP 分区可选,我这里 SWAP 的大小就直接是虚拟机内存大小乘以2) UEFI with GPT 挂载点 分区 分区类型 大小 /mnt/boot /dev/sda1 EFI system partition 512 MiB [SWAP] /dev/sda2 Linux swap (交换空间) 6 GiB /mnt /dev/sda3 Linux x86-64 根目录 (/) 剩余空间 fdisk 和 分区操作 显示所有分区 1root@archiso ~ # fdisk -l 其中 /dev/sda 是虚拟机上的硬盘 开始分区 1root@archiso ~ # fdisk /dev/sda 进入分区程序。输入 m 可以查看 fdisk 的帮助。在决定写入之前,所有的更改都不会被保存。 按照上面描述的分区示例,我们输入 g 新建一个 空的 GPT 分区表; 输入 n 建立第一个分区,首先会问你选择分区号(默认是可用的最小分区号), 回车 即可; 不用填写 first sector(默认值为可用的最小扇区号),直接 回车 ,在提示输入 last sector 的时候输入 +512M 来依据分区大小自动计算终止扇区。 完成上图的操作后即得到一个512 MB 大小的分区。 重复上面的步骤,再建立一个 6 GB 大小(或你自己决定 SWAP 分区的大小,当然你也可以不创建 SWAP 分区)的分区;最后重复上面的步骤,但最后一次不填写 last sector 从而自动将所有的剩余空间划分给第三个分区。如下图: 修改分区类型 按 t ,会询问需要修改的分区号,然后则是询问你要修改的类型(按 L 会列出各个分区类型的编号),编号 1 是 EFI System Partition ,编号 19 是 swap ,分区3的类型不做修改(默认的分区类型是 Linux Filesystem)。 注意 :最后要让建立的分区生效,需要输入 w 把分区表写入磁盘 显示 /dev/sda 上的分区(确认是否生效 ) 1root@archiso ~ # fdisk -l /dev/sda 格式化分区 和 设置 swap 分区123root@archiso ~ # mkfs.fat -F32 /dev/sda1root@archiso ~ # mkswap /dev/sda2root@archiso ~ # mkfs.ext4 /dev/sda3 Linux 对磁盘分区的命名也很直观。设备 /dev/sda 上的第一个分区就是 /dev/sda1 ,第二个分区就是 /dev/sda2 ,以此类推。 在上面的指令第一句中,我们为 /dev/sda1 分区,也就是 sda 磁盘的第一块分区,建立了 fat 文件系统;**-F32** 表明我们建立的是 fat32 而非 fat16 或其它不是我们想要的 fat。 UEFI规范要求对FAT12,FAT16和FAT32文件系统的支持,但是任何符合条件的供应商都可以选择添加对其他文件系统的支持。 例如,Apple macOS 中的固件支持 HFS+ 文件系统。 而在第二句中,我们为 /dev/sda2 创建了专用于 swap 的存储系统;这是一个特殊的分区类型,它很难被当作 filesystem,所以建立它的指令是 mkswap 而非 mkfs.* 。 启用交换分区 和 文件系统的挂载 启用交换分区 1root@archiso ~ # swapon /dev/sda2 可以使用 swapon –show 来检查交换分区有没有被正确启用。 然后挂载整个新系统的根,这里我们将它挂载到 Arch ISO 环境的 /mnt 下。不要担心,Linux 有一个实用工具 chroot,可以将目录结构的任意点作为新的根。 1root@archiso ~ # mount /dev/sda3 /mnt 按照我们对新系统目录结构的理解,**/dev/sda1** 应该被挂载于新系统的 /boot ,也就是 Arch ISO 环境的 /mnt/boot 。但是这个目录目前仍不存在,所以我们手动创建这个挂载点,然后再进行挂载。 12root@archiso ~ # mkdir /mnt/bootroot@archiso ~ # mount /dev/sda1 /mnt/boot 安装选择镜像源文件 /etc/pacman.d/mirrorlist 定义了软件包会从哪个 镜像源 下载。在 LiveCD 启动的系统上,所有的镜像源都被启用。 在 列表中越前 的镜像源在下载软件包时有 越高的优先权 。 这个文件接下来还会被 pacstrap 复制到新系统里,所以请确保正确设置。 注意 :以下需要用到 vim 这个编辑器,建议先去自行学习一下 vim 的基本使用,不然我怕新手碰到这个编辑器会一脸懵逼,后面还会涉及到 vim 的相关操作哦。 vim 编辑 /etc/pacman.d/mirrorlist 1root@archiso ~ # vim /etc/pacman.d/mirrorlist 执行完上行命令后,键入 :set nu ,然后 回车 即显示行号,如图: 然后继续键入 /China ,然后 回车 搜索中国的源,光标会跳到相应字符串的行。如图: 键入 V (注意是 大写 的 V ,后面的相应字母都要认清楚大小写) 并移动光标进行选择,选中上图用红框括起来的2行,然后按 d 进行剪切,再按 6G 移动到文件的第 6 行,按 p 进行粘贴。 继续键入 :wq ,然后 回车 ,即保存并退出。 安装必须的软件包 使用 pacstrap 脚本,安装 base 软件包和 Linux 内核以及常规硬件的固件: 1root@archiso ~ # pacstrap /mnt base linux linux-firmware 装完前面的东西,只是装完能做到开机的必须组件而已,但还有一些必备的东西要装,比如说网络管理器 NetworkManager , NetworkManager 是检测网络、自动连接网络的程序。无论是无线还是有线连接,它都可以令您轻松管理。这一步也是必备的一步: 1root@archiso ~ # pacstrap /mnt networkmanager 配置系统生成 fstab 文件fstab 文件可用于定义磁盘分区,包括各种块设备或者远程文件系统应该如何装入到文件系统。 1root@archiso ~ # genfstab -U /mnt >> /mnt/etc/fstab -U 选项指的是 使用UUID作为源标识符 arch-chroot arch-chroot bash 脚本是软件包 arch-install-scripts 的一部分,在运行 /usr/bin/chroot 前,这个脚本会挂载 /proc api 文件系统,建立可用的 /etc/resolv.conf 。 前文中提到过,chroot 工具能指定目录结构任意的位置为新的根;由于我们需要进行的配置应该在新系统上完成,所以我们应该 chroot 到新系统的根,也就是 /mnt。不过这里我们不是直接就使用 chroot ,而是通过镜像里提供的 arch-chroot 来完成额外的配置。 1root@archiso ~ # arch-chroot /mnt 设置时区 中国的时区是 Asia/Shanghai 1[root@archiso /]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 您可以使用以下命令将硬件时钟设置为当前系统时间: 1[root@archiso /]# hwclock --systohc 在新安装的系统上安装 vim 编辑器 Vim 是从 vi 发展出来的一个文本编辑器。其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和 Emacs 并列成为类Unix系统用户最喜欢的编辑器。 这里我们安装 vim : 1[root@archiso /]# pacman -S vim Y 确认安装即可。 本地化 /etc/locale.gen 是一个仅包含注释文档的文本文件。指定您需要的本地化类型,去掉对应行前面的注释符号(#)就可以啦,还是用 vim 来编辑,建议选择 en_US.UTF-8 UTF-8 的项: 1[root@archiso /]# vim /etc/locale.gen 找到 #en_US.UTF-8 UTF-8 这一行,光标移动到开头的 “#” ,然后键入 x ,再键入 :wq 保存并退出即可。 接着执行 locale-gen 以生成 locale 讯息: 1[root@archiso /]# locale-gen 创建 locale.conf 文件,并相应地设置 LANG 变量: 1[root@archiso /]# echo LANG=en_US.UTF-8 > /etc/locale.conf 网络配置 创建 hostname 文件: 1[root@archiso /]# echo YourNewHostname > /etc/hostname 注意:YourNewHostname 是你要设置的主机名,名字任取。后面如果还出现,也指的是你取的主机名。 添加对应的信息到 hosts : 1[root@archiso /]# vim /etc/hosts 键入 i 进入插入模式,编辑后得到的内容如下: 12345# Static table lookup for hostnames.# See hosts(5) for details.127.0.0.1 localhost::1 localhost127.0.1.1 YourNewHostname.localdomain YourNewHostname 填写完成后就键入 Esc 键,退回命令模式,再键入 :wq 保存并退出。 NetworkManager 服务 将 NetworkManager 服务设为开机自启: 1[root@archiso /]# systemctl enable NetworkManager 设置 root 用户密码执行 passwd 命令修改当前用户(即 root 用户)的密码。 注意 :密码输入时不可见,反正输入完后只管回车就行,第二次输入密码是系统要你确认密码。 1234[root@archiso /]# passwdNew password:Retype new password:passwd: password updated successfully 安装引导程序 启动加载器是 BIOS 或 UEFI 启动的第一个程序。它负责使用正确的内核参数加载内核, 并根据配置文件加载初始化 RAM disk。 注意 :这一步相当重要,如果没有配置正确的话,你重启后将无法正常启动到系统。 systemd-boot (以前被称为gummiboot) 是可以执行 EFI 镜像文件的简单 UEFI 启动管理器。启动的内容可以通过一个配置(glob)或者屏幕菜单选择。Arch 默认安装的 systemd 提供了这个功能。配置很简单,但是只能启动 EFI 可执行程。 安装 EFI 启动管理器 1[root@archiso /]# bootctl --path=/boot install –path= 后面接的就是我们一开始创建的 esp (EFI system partition) 的挂载路径 基本配置 基本设置保存在 /boot/loader/loader.conf ,有三个选项: default – 默认加载的配置文件 (不含 .conf 后缀)。 timeout – 启动选单的超时时间,如果不设置的话,启动选单只有在按键时才显示。 editor - 是否允许用户编辑内核参数. yes 是允许, no 是阻止。 用 vim 编辑 /boot/loader/loader.conf : 1[root@archiso /]# vim /boot/loader/loader.conf 下面是我编辑好的 /boot/loader/loader.conf ,内容如下: 1234default archtimeout 4console-mode maxeditor no 添加启动选项 前面我们不是已经在 /boot/loader/loader.conf 中的选项指定了一个 default 选项嘛,所以我们现在就来配置一下这个默认启动选项。 我们要编辑的配置文件是 /boot/loader/entries/arch.conf 同样也是用 vim 来编辑: 1[root@archiso /]# vim /boot/loader/entries/arch.conf 下面是我暂时编辑好的 /boot/loader/entries/arch.conf ,内容如下: 1234title Arch Linuxlinux /vmlinuz-linuxinitrd /initramfs-linux.imgoptions root=PARTUUID= 保存并退出编辑后,我们执行一下这么一行命令: 1[root@archiso /]# blkid -s PARTUUID -o value /dev/sda3 >> /boot/loader/entries/arch.conf 上面的命令将会把根分区的UUID的值追加到 /boot/loader/entries/arch.conf 的最后一行。则文件 /boot/loader/entries/arch.conf 的内容现在为(注意 :PARTUUID的值都是因人而异的): 12345title Arch Linuxlinux /vmlinuz-linuxinitrd /initramfs-linux.imgoptions root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 最后一次用 vim 编辑 /boot/loader/entries/arch.conf ,完成编辑后的文件内容如下: 1234title Arch Linuxlinux /vmlinuz-linuxinitrd /initramfs-linux.imgoptions root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660 rw 重启系统根据前面所有的步骤走完一遍,也算是配置好了,让我们重启吧: 首先 exit 退回到 Arch ISO 环境: 1[root@archiso /]# exit 然后执行命令重启: 1root@archiso ~ # systemctl reboot 开机后会有个标题为 “Arch Linux” 的启动选项,即是我们之前添加的选项。 成功进入系统后,就会让你登陆了,当然一开始只有root用户,密码也是你之前设置的那个,输入密码的时候依然不会显示出来。 可选配置更新系统和软件包一个 pacman 命令就可以升级整个系统。花费的时间取决于系统有多老。这个命令会同步非本地(local)软件仓库并升级系统的软件包 1[root@arch ~] # pacman -Syu 用户与权限配置 正经的 Linux 用户不会用 root 干所有的事情,如果这么做的话将会很危险。创建一个普通的用户,并让它可以通过 sudo 指令用 root 权限执行命令是一般的解决方案。 在用 sudo 之前,我们需要先安装 sudo 这个软件包: 1[root@arch ~] # pacman -S sudo 配置 sudoers 执行 visudo 来修改 /etc/sudoers 文件。使用它的好处是,它会在保存时作语法检查,以避免错误的更改使 sudo 彻底不可用。 1[root@arch ~] # EDITOR=vim visudo 此处通过环境变量 EDITOR 来声明使用 vim 来编辑文件,默认的情况下 visudo 是用 vi 来编辑的。(vi 和 vim 的用法略有不同) 找到这一行: 1# %wheel ALL=(ALL) ALL 去掉找到的那一行开头的注释,即 # 和 空格 ,不要误删掉 % 哦。弄完之后保存即可,得: 1%wheel ALL=(ALL) ALL 去掉注释的作用:取消注释以允许 wheel 组成员执行任何命令。 添加一个 wheel 组普通用户 1[root@arch ~] # useradd -m -G wheel 你想要取的用户名 用户名必须是合法的。最简单的就是 不带空格的字母 和 数字 的组合。 -m 参数表示同时创建该用户的家目录,这会被默认置为 /home/用户名。 -G wheel 表示同时将该用户加入 wheel 用户组。 设置普通用户的密码 1[root@arch ~] # passwd 用户名 完成上述操作之后,注销当前用户之后就可以登录我们新建的普通用户了。 Ctrl + d 退出账户 重新登陆你新建的普通账户。 登录完你会发现,之前的用户名不是 root 而是我创建的一个叫做 admin 的用户, # 也变成了 $ ,这就意味着这是普通用户。 VMware 相关软件包和服务 安装 VMware Tools 是创建新的虚拟机过程的一部分,而升级 VMware Tools 是使虚拟机符合最新标准过程的一部分。尽管客户机操作系统在未安装 VMware Tools 的情况下仍可运行,但许多 VMware 功能只有在安装 VMware Tools 后才可用,如虚拟机显示器填满屏幕,宿主机和虚拟机之间拖拽或复制粘贴文件等。 open-vm-tools : VMware Tools 的开源实现 安装 open-vm-tools 注意 :如遇安装失败,请再试一次。 1[admin@arch ~]$ sudo pacman -S open-vm-tools vmtoolsd : 负责汇报虚拟机状态的服务 vmware-vmblock-fuse : 文件系统实用程序。 通过FUSE(用户空间中的文件系统)实现宿主 / 虚拟机之间拖拽文件。 将 vmtoolsd 和 vmware-vmblock-fuse 两个服务设为开机自启 1[admin@arch ~]$ systemctl enable vmtoolsd vmware-vmblock-fuse gtkmm3 : 如要启用客户机的拖拽与复制粘贴功能,则需要安装 gtkmm3 安装 gtkmm3 1[admin@arch ~]$ sudo pacman -S gtkmm3 xf86-input-vmmouse : VMWare鼠标输入驱动程序 xf86-video-vmware : vmware显示驱动程序,如果想要让虚拟机显示器填满屏幕,就必须要安装这个软件包 mesa : OpenGL规范的开源实现 安装相关驱动 1[admin@arch ~]$ sudo pacman -S xf86-input-vmmouse xf86-video-vmware mesa 安装桌面环境显示服务 X 窗口管理系统 ( X11 或者 X ) 是基于网络的显示协议,提供了窗口功能,包含建立图形用户界面(GUI)的标准工具和协议。 Xorg 是 X 窗口的开源实现,提供图形用户界面。 Wayland 是一种更新的可用显示服务协议, Weston 是其参考实现。 这里我安装 xorg : 1[admin@arch ~]$ sudo pacman -S xorg 桌面环境 尽管 Xorg 提供了用于构建图形环境的基本框架,但是为了获得完整的用户体验,可能还需要其他组件。 GNOME,KDE,LXDE 和 Xfce 等桌面环境将各种 X 客户端捆绑在一起,例如窗口管理器,面板,文件管理器,终端仿真器,文本编辑器,图标和其他实用程序。 plasma-meta : 用以安装 KDE Plasma 的元软件包 我个人偏好 kde,所以执行下面的命令: 1[admin@arch ~]$ sudo pacman -S plasma-meta 显示管理器 大多数桌面环境都包括一个显示管理器,用于自动启动图形环境和管理用户登录。 sddm : 基于QML的X11和Wayland显示管理器 安装 sddm : 1[admin@arch ~]$ sudo pacman -S sddm 将 sddm 服务设为开机自启: 1[admin@arch ~]$ systemctl enable sddm 重启虚拟机 1[admin@arch ~]$ systemctl reboot 登录图形界面就这样,我们开机了,此时虚拟机的显示区域已经能填满我们宿主机的屏幕了: 输入密码登录即可。 修改系统显示缩放 在较小尺寸下却拥有较高分辨率的显示器,进入桌面环境后,如果你发现系统的字体和图标等等显得非常小,那么你就必须要设置显示缩放了。 如何判断大概怎样的缩放比例才合适呢?最简单的方法就是回到你的 Windows 宿主机,在宿主机桌面空白处「鼠标右键」 > 「显示设置」 > 「缩放和布局」,数值为 150% ,即缩放比例为 1.5x 。 这时,我们再回到虚拟机这边: 「 开始菜单 」 > 「 System Settings 」 > 「 Display Configuration 」 > 「 Global scale 」,下面有一个可拖动的条,拖至 1.5x 的位置(这里拖拽的位置取决于你 Windows 的「 缩放和布局 」的取值),然后我们点击 「 Apply 」 应用。 最后我们在 「 开始菜单 」 > 「 Leave 」 > 「 Restart 」 重启一下虚拟机以让显示缩放生效,到这里我们就算是解决完系统显示缩放的问题了。 安装终端模拟器等等,前面我们装完 kDE 是不是忘了安装什么东西,我们在桌面环境里怎么输入命令呢?这就需要我们安装 终端模拟器(Terminal Emulator) 了 终端模拟器有很多,这里就举几个经典的例子: GNU/Linux:gnome-terminal、Konsole; macOS:Terminal.app、iTerm2; Windows:Win32 控制台、ConEmu 等等 在正式安装之前,建议先去看看这么一篇文章:命令行界面 (CLI)、终端 (Terminal)、Shell、TTY,傻傻分不清楚? 然后这里我要安装的终端模拟器是 deepin-terminal (属于Deepin的默认终端仿真应用程序,源码仓库地址:https://github.com/linuxdeepin/deepin-terminal ,我选择这个的原因是因为它开源,而且无需任何配置就已经很美观了,还有一点就是不会有 konsole 在系统显示缩放比例为 小数倍 时随机出现横线或竖线的 bug。)在安装终端模拟器之前,我们需要按下 Ctrl + Alt + F2 切换至 tty2 ,登录,然后输入命令: 1[admin@arch ~]$ sudo pacman -S deepin-terminal 安装完之后,我们按下 Ctrl + Alt + F1 切换回桌面环境。这时我们就可以在「 开始菜单 」找到 deepin-terminal 了。 由于 deepin-terminal 默认的主题配色(绿色)我不喜欢,所有我换了另一个。如图: 安装中文字体 在没安装中文字体之前,系统是无法正常显示中文的,大概就是会显示 口口口口 。所以这里推荐安装下 Google Noto Fonts 系列:noto-fonts-sc 和 noto-fonts-emoji 打开终端模拟器,执行下面的命令安装 noto-fonts-sc 和 noto-fonts-emoji : 12345sudo pacman -S base-devel gitgit clone https://aur.archlinux.org/noto-fonts-sc.gitcd noto-fonts-scmakepkg -sisudo pacman -S noto-fonts-emoji 安装中文输入法 前面系统已经能正常显示中文了,但是我们却仍无法输入中文。因为还没有安装中文输入法。 输入法(IM)是一种输入特定字符和符号集的方法,通常是因为键盘不直接输入它们。大多数输入法是输入法框架的一部分,它使用户可以轻松地在多种输入法之间切换。Linux 下有两种主流的输入法框架,ibus 和 fcitx ,对于 KDE 来说, fcitx 是比较好的选择。 使用下面的指令安装 fcitx : fcitx-im :软件包组,包含 fcitx 本身,和让 fcitx 能正常运行在各版本 qt 和 gtk 程序里的组件( fcitx-gtk2 、 fcitx-gtk3 、 fcitx-qt5 ) 1[admin@arch ~]$ sudo pacman -S fcitx-im fcitx 提供有一个集成到 KDE 系统设置内的 fcitx 设置程序 ( kcm-fcitx ),输入下面的指令安装 fcitx 的 GUI 配置工具: 1[admin@arch ~]$ sudo pacman -S kcm-fcitx 安装完 fcitx 输入法框架后,我们来具体安装一个叫做 rime 的输入法,输入下面的指令安装即可: 1[admin@arch ~]$ sudo pacman -S fcitx-rime 此时我们仍不能正确输入中文。因为我们还未配置环境变量来让程序们使用 fcitx。创建或修改 ~/.pam_environment 文件,用它来指定环境变量。 用 vim 编辑 ~/.pam_environment 1[admin@arch ~]$ vim ~/.pam_environment 在里面加上如下内容 123GTK_IM_MODULE=fcitxQT_IM_MODULE=fcitxXMODIFIERS=@im=fcitx 它们会指定 fcitx 为几乎所有程序的 IM。当然某些不听话的程序除外,比如 Sublime,但这类程序几乎遇不到。 重启系统 1[admin@arch ~]$ systemctl reboot 添加 rime 输入法 「 开始菜单 」 > 「 System Settings 」 > 「 Personalization 」 一栏下面的 「 Regional Settings 」 > 「 Input Method 」,取消勾选 「Only Show Current Language」 > 「 Rime 」 > 「 > 」 > 「 Apply 」 应用生效。如图: 移除默认的 Keyboard - English (US) 「Keyboard - English (US)」 > 「**<**」 > 「Apply」 应用生效。如图: 等待 Rime 维护至就绪即可使用 rime 输入法了。 修改繁体输入为简体输入。你可以这么做: 在可输入区域(如 terminal等),按下 F4 ,然后会有个 方案选单 。 我们按 1 键 然后我们再选 4 键 弄完这个以后输入的中文就是简体的了。 如果要中英文的切换,我们只需要通过 Shift 键就可了。 安装浏览器浏览器我个人喜欢用 Chromium ,直接用 pacman 安装就是了: 1[admin@arch ~]$ sudo pacman -S chromium 安装 shadowsocks-qt5 shadowsocks-qt5 : 快速,可靠且跨平台的 Shadowsocks 的 GUI 客户端。 Arch Linux 的仓库里有 shadowsocks-qt5 ,直接安装即可: 1[admin@arch ~]$ sudo pacman -S shadowsocks-qt5 下载机场的 shadowsocks 配置文件: 导入 shadowsocks 配置文件: 连接可用的机场节点,并记住本地的端口号: 设置系统代理 「 开始菜单 」 > 「 System Settings 」 > 「 Network 」 > 「 Settings 」 > 勾选 「 Use manually specified proxy configuration 」 在 「 Socks Proxy 」 里填写 socks5://127.0.0.1 ,其中 「Port」 为 1080 ,就是我之前让你记住的本地端口号。在 「 Exceptions 」 里填写 localhost,127.0.0.0/8,::1 。最后点击 「 Apply 」,应用即可。 如果要关掉代理,就勾选 「 No Proxy 」 再 「 Apply 」 应用即可,然后断开shadowsocks的连接就好了。 安装文件管理器这里我就不多赘述了,文件管理器我选择 dolphin ,用 pacman 安装即可: 1[admin@arch ~]$ sudo pacman -S dolphin 安装归档管理器 engrampa: 可视化解压缩软件 其余均为依赖,安装这些软件包后 engrampa 才能解压缩 7z、rar、zip 格式的压缩包 用 pacman 安装即可: 1[admin@arch ~]$ sudo pacman -S p7zip unrar zip unzip engrampa 安装完后的 装逼只需要先安装 neofetch 即可 1[admin@arch ~]$ sudo pacman -S neofetch 然后直接在 terminal 输入: 1[admin@arch ~]$ neofetch 没错,你应该不止一次看到过类似这样的一张图,这就是信仰啊~ ( 😀","categories":[{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/categories/Linux/"}],"tags":[{"name":"VMware","slug":"VMware","permalink":"https://ericclose.github.io/tags/VMware/"},{"name":"Arch","slug":"Arch","permalink":"https://ericclose.github.io/tags/Arch/"}]},{"title":"StarUML 3 破解","slug":"staruml-3-registration","date":"2019-09-18T07:00:42.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"staruml-3-registration.html","permalink":"https://ericclose.github.io/staruml-3-registration.html","excerpt":"导语:尽管不注册StarUML也不会有使用时间的限制,但是时不时的弹窗请求注册就让人很闹心,而且不注册的话导出的图片会带水印,再加上官网高昂的费用… 于是乎此文就此产生。","text":"导语:尽管不注册StarUML也不会有使用时间的限制,但是时不时的弹窗请求注册就让人很闹心,而且不注册的话导出的图片会带水印,再加上官网高昂的费用… 于是乎此文就此产生。 事先准备 StarUML 首先下载好 StarUML,然后双击安装包,它会自己安装到 C:\\Program Files\\StarUML ,而且没法选择更改安装路径… Node.js 首先下载LTS版(长期支持版) Node.js ,安装选项全部默认,一路点击Next。最后安装好之后,cmd 输入 node -v 和 npm -v ,如果出现版本号,那么就安装成功了。 注册过程 安装 asar ,以 管理员模式 运行cmd,输入命令: 1npm install -g asar 切换工作目录到 C:\\Program Files\\StarUML\\resources ,输入命令: 1cd /d "C:\\Program Files\\StarUML\\resources" 解包 app.asar ,输入命令: 1asar extract app.asar app 将 app.asar 重命名为 app.asar.bak ,即输入命令: 1rename app.asar app.asar.bak 使用你喜欢的 带语法高亮 的编辑器修改 C:\\Program Files\\StarUML\\resources\\app\\src\\engine\\license-manager.js 这个文件 license-manager.js 注 :如图找到 checkLicenseValidity () { ... } 这一块代码,修改为这样: license-manager.js123456789checkLicenseValidity () { this.validate().then(() => { setStatus(this, true) }, () => { // setStatus(this, false) <- 注释这一行(其中"//"用于注释) // UnregisteredDialog.showDialog() <- 注释这一行(其中"//"用于注释) setStatus(this, true) // <- 添加这一行 })} 修改完后现在可以重新打包了,输入命令: 1asar pack app app.asar 就这样完成了一切的工作。 成果图","categories":[{"name":"Crack","slug":"Crack","permalink":"https://ericclose.github.io/categories/Crack/"}],"tags":[{"name":"破解","slug":"破解","permalink":"https://ericclose.github.io/tags/%E7%A0%B4%E8%A7%A3/"},{"name":"StarUML","slug":"StarUML","permalink":"https://ericclose.github.io/tags/StarUML/"}]},{"title":"Office Tool Plus 使用教程(KMS 激活)","slug":"office_tool_plus_usage","date":"2019-08-26T05:29:59.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"office_tool_plus_usage.html","permalink":"https://ericclose.github.io/office_tool_plus_usage.html","excerpt":"","text":"下载 Office Tool Plus 下载页面 下载页面 选择带运行时解压缩版本,点击下载 解压运行 Office Tools解压缩完后,点击主程序 Office Tool Plus.exe 即可 部署选项 主界面『部署』→ 『产品』→『添加产品』:选择任意批量许可证版本即可。首选『Office 专业增强版 2019 - 批量许可证』(选择批量许可证版本是因为只有该版本支持 KMS 激活方式) 『应用程序』:根据自身需求勾选即可(常见三件套:Excel、PowerPoint、Word) 『语言』:看你喜欢 『部署设置』: 『体系结构』:不是吧不是吧,这个年代了,还有人不是用64位处理器和系统的吗?首选64位(当然你的电脑如果是 32 位的处理器或操作系统,自然选择 32 位) 『通道』:『Office 2019 企业长期版』 当您完成上述配置后,找到右上角的『开始部署』,耐心等其完成在线下载、安装的流程 关于激活 安装完成后首先打开 Office 套件任意一个程序,完成初始化设置,新建一个文档后关闭窗口 然后『以管理员身份运行』cmd 命令提示符,执行如下命令: 12345cd /d "C:\\Program Files\\Microsoft Office\\Office16"cscript ospp.vbs /sethst:kms.03k.orgcscript ospp.vbs /actcscript OSPP.VBS /dstatus 检验激活是否成功当您执行完上面最后一行命令时,反馈的结果就可以看到是否激活成功,看不懂程序反馈的内容?没有关系,您可以这么做: 任意打开 Office 套件的一个程序,找到左下角的『账户选项』,即可在『产品信息』区域看到激活的情况,如果显示『激活的产品』:『Microsoft Office 专业增强版 2019』 字样即说明激活成功。 激活成功","categories":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/categories/Windows/"}],"tags":[{"name":"激活","slug":"激活","permalink":"https://ericclose.github.io/tags/%E6%BF%80%E6%B4%BB/"},{"name":"Office","slug":"Office","permalink":"https://ericclose.github.io/tags/Office/"},{"name":"破解","slug":"破解","permalink":"https://ericclose.github.io/tags/%E7%A0%B4%E8%A7%A3/"},{"name":"Office Tool","slug":"Office-Tool","permalink":"https://ericclose.github.io/tags/Office-Tool/"},{"name":"Office Tool Plus","slug":"Office-Tool-Plus","permalink":"https://ericclose.github.io/tags/Office-Tool-Plus/"},{"name":"Word","slug":"Word","permalink":"https://ericclose.github.io/tags/Word/"},{"name":"Excel","slug":"Excel","permalink":"https://ericclose.github.io/tags/Excel/"},{"name":"PowerPoint","slug":"PowerPoint","permalink":"https://ericclose.github.io/tags/PowerPoint/"},{"name":"Visio","slug":"Visio","permalink":"https://ericclose.github.io/tags/Visio/"},{"name":"KMS","slug":"KMS","permalink":"https://ericclose.github.io/tags/KMS/"},{"name":"crack","slug":"crack","permalink":"https://ericclose.github.io/tags/crack/"}]},{"title":"Fedora 30 安装 VMware Workstation","slug":"install-vmware-workstation-on-fedora-30","date":"2019-07-07T12:08:24.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"install-vmware-workstation-on-fedora-30.html","permalink":"https://ericclose.github.io/install-vmware-workstation-on-fedora-30.html","excerpt":"本文介绍了 Fedora 30 安装 VMware Workstation 全过程","text":"本文介绍了 Fedora 30 安装 VMware Workstation 全过程 下载 VMware Workstation 安装程序12cd ~/Downloadswget https://download3.vmware.com/software/wkst/file/VMware-Workstation-Full-15.0.4-12990004.x86_64.bundle 执行安装程序12chmod a+x VMware-Workstation-Full-15.0.4-12990004.x86_64.bundle./VMware-Workstation-Full-15.0.4-12990004.x86_64.bundle 接下来,根据终端上的提示进行安装即可。等安装完成后还不要急着启动,如果启动,将无法正常运行,会显示 Before you can run VMware several modules must be compiled and loaded into the running kernel ,所以这个时候就需要patch了。 安装依赖1sudo dnf install kernel-devel kernel-headers gcc gcc-c++ make git patch 过程注意根据您的 VMware Workstation 版本号,将下面命令里出现的“x.y.z”替换为您安装的版本号,比如说 15.0.4 查看vmware的版本号 1vmware -v 方法一(编译并安装)12345wget https://github.com/mkubecek/vmware-host-modules/archive/workstation-x.y.z.tar.gztar -xzf workstation-x.y.z.tar.gzcd vmware-host-modules-workstation-x.y.zmakesudo make install 方法二(替换原始的tarball,推荐)1234567wget https://github.com/mkubecek/vmware-host-modules/archive/workstation-x.y.z.tar.gztar -xzf workstation-x.y.z.tar.gzcd vmware-host-modules-workstation-x.y.ztar -cf vmmon.tar vmmon-onlytar -cf vmnet.tar vmnet-onlysudo cp -v vmmon.tar vmnet.tar /usr/lib/vmware/modules/source/sudo vmware-modconfig --console --install-all 运行经过 patch,这时再运行,就可以正常运行了。 成果图","categories":[{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/categories/Linux/"}],"tags":[{"name":"VMware","slug":"VMware","permalink":"https://ericclose.github.io/tags/VMware/"},{"name":"Fedora","slug":"Fedora","permalink":"https://ericclose.github.io/tags/Fedora/"}]},{"title":"VMware Workstation 安装 macOS 10.13(多图预警)","slug":"install-macos-10-13-on-vmware-workstation","date":"2019-04-21T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"install-macos-10-13-on-vmware-workstation.html","permalink":"https://ericclose.github.io/install-macos-10-13-on-vmware-workstation.html","excerpt":"由于安装黑苹果需要配备兼容的硬件且难度较大,如果想要更轻松的在 Windows 和 Linux 的机子上体验 macOS 的一种方法就是把它装在 VMware Workstation 上。这样做的好处是方便安装,通过使用虚拟机,您可以同时使用 macOS 和 Windows 或 Linux;但是缺点也很明显,无法充分调动硬件性能。本文将指导您如何在 VMware Workstation 上安装 macOS:","text":"由于安装黑苹果需要配备兼容的硬件且难度较大,如果想要更轻松的在 Windows 和 Linux 的机子上体验 macOS 的一种方法就是把它装在 VMware Workstation 上。这样做的好处是方便安装,通过使用虚拟机,您可以同时使用 macOS 和 Windows 或 Linux;但是缺点也很明显,无法充分调动硬件性能。本文将指导您如何在 VMware Workstation 上安装 macOS: 准备工作下载好以下文件: VMware Workstation VMware Workstation是VMware公司推出的一款桌面虚拟计算软件,至于下载和安装,填写license这里不赘述,请自行使用搜索引擎查询。 unlocker (项目发行地址点此,此处下载最新版本的zip) 在用VMware安装macOS前需要对VMware打补丁,unlocker就起到这个作用。 macOS High Sierra 10.13.iso 链接:https://pan.baidu.com/share/init?surl=eSGmiwq 密码:2zk6 MD5 :3E3048A0BD26A03D54DBED7706548726 SHA-1 :31094D7B58D67002B9824E428675E895F81F4B47 macOS High Sierra 10.13.iso 是macOS的镜像文件。MD5 和 SHA-1 用于校验文件是否完整无损坏。如果不知道如何校验,请自行使用搜索引擎查询。 应用 unlocker 补丁把下载好的unlocker解压,此处我以解压到 H:\\unlocker 为例。使用 管理员模式 打开cmd,执行以下命令: 12cd /d H:\\unlockerwin-install 执行命令后期间会下载 VMware Tools ,所以过程需要稍微比较久的时间,当显示Finished后即表明已完成打补丁的操作,截图如下: 打开 VMware 新建虚拟机 打开VMware,选择 新建虚拟机 选择 典型安装 ,下一步 点击 浏览 ,找到下载好的iso文件,然后下一步 选择安装 Apple Mac OS X由于我们之前打过了补丁,所以这时我们能看到有Apple Mac OS X这个选项,选择,然后选中macOS 10.13,下一步 选择虚拟机存放的路径,自行选择合适的路径下一步 选择存储为单个文件(因为存储为多个文件会影响性能) 自定义硬件 建议把内存调大点,我这里设置成4GB,视实际内存大小而定。其他选项无需调整,点击关闭,完成即可。 开启虚拟机 等待载入安装界面 选择 简体中文 ,下一步 点击继续 继续,同意许可条款 在左上角的菜单栏,点击【实用工具】->【磁盘工具】 选中分配给虚拟机的磁盘,点击 抹掉 名称随意,格式,方案默认即可。点击 抹掉 点击完成,关闭磁盘工具的窗口。 选中刚刚的磁盘,点击 继续 安装开始,此处大概需要10~20分钟,泡杯咖啡静待吧。 等待重启 鼠标滚轮滚动到最下面,选择 中国 ,继续 简体拼音,继续 现在不传输任何信息,继续 此处我选择 不登陆 ,跳过这一步 同意软件许可协议 创建电脑账户(即本地账户),输入全名,密码。提示部分可不填写,填写完成后,点击继续即可。 快捷设置,点击继续。 正在设置您的 Mac… 进入桌面发现显示区域不能适配屏幕大小,这是因为我们还没有安装 VMware Tools 。这里我们先点击左上角菜单,选择关机 点击 CD/DVD (SATA) 使用 物理驱动 ,自动检测 ,OK 开启 macOS 在VMware的菜单栏里,选择【虚拟机】->【安装 VMware Tools】 这时在桌面的右上角会出现 VMware Tools 的图标,双击图标,然后点击 安装 VMware Tools 安装过程中会请求输入密码,输入密码后点击 安装软件 即可 安装完成后需要重新启动 重启完后,弹窗提示 VMware Tools 已被阻止 ,我们打开 dock栏 上的 系统偏好设置 点击【安全性与隐私】 点击【允许】VMware Tools的载入,然后再点击左下角的【锁】按钮进行更改 最后,弄完上述所有操作后重启就OK了。此处附上成果图,如下:","categories":[{"name":"VM","slug":"VM","permalink":"https://ericclose.github.io/categories/VM/"}],"tags":[{"name":"虚拟机","slug":"虚拟机","permalink":"https://ericclose.github.io/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/"},{"name":"macOS","slug":"macOS","permalink":"https://ericclose.github.io/tags/macOS/"}]},{"title":"CentOS 7 使用 Tor 代理访问 Tor 暗网(.onion 域名的网站)","slug":"access-onionland-with-tor-on-centos-7","date":"2019-03-25T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"access-onionland-with-tor-on-centos-7.html","permalink":"https://ericclose.github.io/access-onionland-with-tor-on-centos-7.html","excerpt":"说到使用 Tor,人们通常只会想到使用 Tor 浏览器(Tor Browser)。但是 Tor 只能用于 Tor 浏览器代理使用吗?答案是否定的。你可以借助 Tor 给你的系统进行代理,其默认监听端口为 9050,下面将简单的介绍下具体流程。 注意:Tor 代理不仅仅只能用于浏览器,其他非浏览器应用也可使用其代理。当然我还是要强调一下,本文的主题是使用 Tor 代理访问暗网,本文以使用 Chrome 访问 .onion 站点为例,不考虑到匿名和安全的防护。","text":"说到使用 Tor,人们通常只会想到使用 Tor 浏览器(Tor Browser)。但是 Tor 只能用于 Tor 浏览器代理使用吗?答案是否定的。你可以借助 Tor 给你的系统进行代理,其默认监听端口为 9050,下面将简单的介绍下具体流程。 注意:Tor 代理不仅仅只能用于浏览器,其他非浏览器应用也可使用其代理。当然我还是要强调一下,本文的主题是使用 Tor 代理访问暗网,本文以使用 Chrome 访问 .onion 站点为例,不考虑到匿名和安全的防护。 顺便澄清一下暗网并没有那些人为吸引眼球的媒体或个人所说的全都那般的阴暗危险,这里引用下一则我认为比较中肯的评说。(江来如果报道上出了偏差,你们是要负泽任的,你識得唔識得噶。) 暗网技术是很厉害的技术,有人说是平民的武器。因此,可以说和任何技术一样,暗网技术有两面性。暗网上的服务器到现在有多少,由于暗网的特性,恐怕很难说得清楚。 在此之中,又有多少服务器是非法的,也很难说清楚。即使能举出一个数字来,因为总数不知道,我们甚至不知道比例。 但是,我想不管是普通的互联网还是暗网,想通过互联网犯罪的人总是有的,想正常使用互联网的人也是有的。此外值得指出,虽然暗网上有一定比例的节点在提供违法犯罪的服务,但是这不代表暗网本身是违法的技术。 我们可以说,暗网是一种构建在互联网上的“虚拟互联网”, 它继承了互联网的思想,但因为互联网的物理结构和底层协议都已经形成, 不可能另起炉灶,所以建设在互联网的应用层次,作为一种“虚拟”的完善。 所以,就如同我们不能因为互联网上有网站是违法就否定互联网的价值一样,我们也不能否定暗网的价值。笔者在此希望本文的读者,能首先,实事求是地从纯技术的角度来深入认识暗网, 知道它确实是可以被滥用的媒介,但也可以是有利于构建更加安全的网络结构的工具。 这种认识不仅在道德上有助于正确评价暗网的功过是非, 也有助于在运用暗网时了解它可能的危险,例如运行一个暗网出口代理的危险,并进而安全使用; 更重要的是,能了解暗网技术的巨大优势,发掘出它的潜力,这将有助于开发更好的基于网络的计算机程序。——引用自 NeoAtlantis 应用科学和神秘学实验室 安装 Tor12sudo yum install epel-releasesudo yum install tor 编辑配置文件1sudo vim /etc/tor/torrc 添加下列 3 行内容即可 /etc/tor/torrc123Socks5Proxy 127.0.0.1:1080 # 将 shadowsocks 作为 Tor 的前置代理ExcludeNodes {cn},{hk},{mo},{kp},{ir},{sy},{pk},{cu},{vn} # 表示排除这些国家/地区的节点StrictNodes 1 # 表示强制执行 如图所示: /etc/tor/torrc 启动 shadowsocks 代理1ss-local -c ~/shadowsocks.json 启动 Tor 代理1systemctl start tor 启动系统代理「设置」->「网络」->「网络代理」->「手动」,如图所示。 Network Proxy Socks Host 这一项填写的内容为 127.0.0.1 和 9050 注意:9050 是 Tor 代理的默认端口号 成功截图浏览器访问 .onion 域名截图: 截图里的测试地址为:msydqstlz2kzerdg.onion 停用 Tor 代理当你不需要使用 Tor 代理的时候在终端输入这个命令: 1systemctl stop tor 关闭系统代理「设置」->「网络」->「网络代理」->「禁用」即可","categories":[{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/categories/Linux/"}],"tags":[{"name":"暗网","slug":"暗网","permalink":"https://ericclose.github.io/tags/%E6%9A%97%E7%BD%91/"},{"name":"Tor","slug":"Tor","permalink":"https://ericclose.github.io/tags/Tor/"},{"name":"代理","slug":"代理","permalink":"https://ericclose.github.io/tags/%E4%BB%A3%E7%90%86/"}]},{"title":"斐讯 K2P 刷 BREED 和 Padavan","slug":"phicomm-k2p-Padavan","date":"2019-02-16T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"phicomm-k2p-Padavan.html","permalink":"https://ericclose.github.io/phicomm-k2p-Padavan.html","excerpt":"本文介绍了 斐讯 K2P 刷 BREED 和 Padavan 的全过程 这里简要讲一下 斐讯 K2P 有如下版本 K2P (A1) K2P (A2) K2P (B1) K2P (B2)","text":"本文介绍了 斐讯 K2P 刷 BREED 和 Padavan 的全过程 这里简要讲一下 斐讯 K2P 有如下版本 K2P (A1) K2P (A2) K2P (B1) K2P (B2) A1和A2采用的处理器是联发科 MT7621A,二者的区别在于A2少了屏蔽罩和电源缩水,A1和A2的固件可以通刷。B1和B2采用的处理器是博通BCM47189,其他的不清楚了。 本教程针对以我的机子为例(建议先参考下K2P刷机指南说明食用) 斐讯 K2P A2版 官方系统 软件版本 为 22.7.8.5 启用 TelnetWindows 启用 Telnet 客户端「控制面板」–>「程序」–>「程序和功能」–>「启用或关闭 Windows 功能」,找到「Telnet 客户端」启用即可,如图。 启用路由器的 Telnet 准备1:电脑、网线2根、全新 / 已恢复出厂 的K2P。 准备2:下载K2P的telnet开启工具。【点击下载】 步骤1请先给K2P上电后用网线将电脑连接路由器的LAN口 步骤2全新K2P默认IP是 192.168.2.1 ,请使用浏览器登录K2P的WEB管理页面完成配置引导,具体操作如下:1). 在浏览器输入 192.168.2.1 ,访问全新K2P的WEB管理页面会进入配置引导,请根据提示完成上网配置。 请在这个时候再确认一下K2P的版本号,如果版本号与刷机方式不匹配,容易出现刷机设备等问题。 步骤3开始使用“开启telnet”,请打开【telnet开启工具】为K2P开启telnet服务,操作如下。 注意:请确保PC的telnet客户端已经开启。 刷入BREED首先下载好BREED,【点击下载】按 快捷键Win+R 输入 telnet 192.168.2.1 登录到路由器,进去后如下: 登陆后,照如下输入命令 12root@K2P:/#cd /tmproot@K2P:/tmp#opkg install http://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7621/packages/packages/wget_1.16.3-1_ramips_1004kc.ipk 安装成功应该可以看到有wget-ssl文件了 12root@K2P:/tmp# ls /overlay/usr/bin/dbclient dropbearkey scp ssh wget-ssl 然后下载breed: 1wget-ssl --no-check-certificate https://breed.hackpascal.net/breed-mt7621-phicomm-k2p.bin 下载完成后校对一下md5是不是与官方公布的一致即可 ,如果OK,继续下一步操作. 12root@K2P:/tmp# md5sum breed-mt7621-phicomm-k2p.bin4b757898df85bff44668a0987768180f breed-mt7621-phicomm-k2p.bin 写入breed: 1234567891011root@K2P:/tmp# cat /proc/mtddev: size erasesize namemtd0: 01000000 00010000 "ALL"mtd1: 00030000 00010000 "Bootloader"mtd2: 00010000 00010000 "Config"mtd3: 00010000 00010000 "Factory"mtd4: 00050000 00010000 "permanent_config"mtd5: 00f60000 00010000 "firmware"mtd6: 00c48b96 00010000 "rootfs"mtd7: 00200000 00010000 "rootfs_data"root@K2P:/tmp# mtd -r write /tmp/breed-mt7621-phicomm-k2p.bin Bootloader 写入成功的情况下会自动重启的. 重启后路由断电,按住reset键,接通电源继续长按10秒左右即可进入BREED。进入BREED后即可刷机了。 固件备份浏览器输入 192.168.1.1 进入BREED切记:一定要做好备份工作「备份」-> 分别选择EEPROM,固件,编程器固件,如图: 开始刷机开刷前,请必须记得先「恢复出厂设置」->「Config 区 (公版)」,然后点「执行」Padavan 下载地址:https://opt.cn2qq.com/padavan/找到 K2P_DRV_3.4.3.9-099.trx 下载恢复出厂设置以后,选择「固件升级」->勾选固件->浏览,选中你下载好的 K2P 的Padavan固件,比如我这次是「K2P_DRV_3.4.3.9-099.trx」,点击「上传」即可,如图: 等待路由器刷机成功并重启即可访问管理后台 不同固件的默认管理后台地址不一样,我这里 Padavan 的例子是 192.168.123.1,而用户名密码则均是 admin 。补充一句:WiFi的默认密码为:1234567890 ,大家要记得这个,因为以后如果将Padavan重置的时候,很多人都不知道WiFi密码是多少,以为还是原来你设置的密码,其实不是的,已经变成了默认密码了。","categories":[{"name":"Router","slug":"Router","permalink":"https://ericclose.github.io/categories/Router/"}],"tags":[{"name":"刷机","slug":"刷机","permalink":"https://ericclose.github.io/tags/%E5%88%B7%E6%9C%BA/"},{"name":"固件","slug":"固件","permalink":"https://ericclose.github.io/tags/%E5%9B%BA%E4%BB%B6/"},{"name":"斐讯","slug":"斐讯","permalink":"https://ericclose.github.io/tags/%E6%96%90%E8%AE%AF/"},{"name":"Phicomm","slug":"Phicomm","permalink":"https://ericclose.github.io/tags/Phicomm/"},{"name":"Padavan","slug":"Padavan","permalink":"https://ericclose.github.io/tags/Padavan/"},{"name":"BREED","slug":"BREED","permalink":"https://ericclose.github.io/tags/BREED/"}]},{"title":"(类)原生 Android 网络去叉/叹号 Android 5.0 - 13.0","slug":"captive-portal-android","date":"2019-01-17T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"captive-portal-android.html","permalink":"https://ericclose.github.io/captive-portal-android.html","excerpt":"使用(类)原生 Android 的用户在中国大陆会发现状态栏的网络信号有个叉或者是感叹号,这是为什么呢?又该如何去除?","text":"使用(类)原生 Android 的用户在中国大陆会发现状态栏的网络信号有个叉或者是感叹号,这是为什么呢?又该如何去除? 说明CaptivePortal 是 Android 5.0 引入的一种检测网络是否正常连接的机制,通过 HTTP 返回的状态码是否是 204 来判断是否成功,如果访问得到了 200,那你就可能处在一个需要登录验证才能上网的环境里,比如说校园网,再比如说一些酒店提供的客户才能免费使用的 Wi-Fi(其实是通过 DNS 劫持实现的),如果连接超时(根本就连接不上)就在 Wi-Fi 图标和信号图标上加一个标志,Android 5 和 Android 6 是叹号,Android 7 改成一个叉了。只不过默认访问的是谷歌自家的验证服务器,然而 Google 是被墙掉了,导致 Android 没有办法正确评估网络。所以,系统每隔一定时间都会重新尝试连接,就在不知不觉中消耗了数据流量。更恐怖的就是 Android 认为在 Wi-Fi 下无法连接互联网,就让联网的程序通通走流量… ADB 工具要想去除,需要用到一个工具,那就是 ADB,点此 下载(需要科学上网)。然后请自行搞定 ADB 的环境变量配置,如果不会请点此。配置好后,请在手机设置里开启开发者选项,然后再打开USB 调试。最后通过数据线连接电脑,就可以开搞了。 解决方法Android 5.0 - 6.0123456# 删除地址就可以恢复默认的谷歌服务器adb shell settings delete global captive_portal_server# 设置一个可用地址adb shell settings put global captive_portal_server http://developers.google.cn/generate_204# 查询当前地址adb shell settings get global captive_portal_server 注意:执行完后请打开飞行模式后再关闭 Android 7.0 - Android 13.0123456# 删除(删除默认用 HTTPS )adb shell settings delete global captive_portal_https_urladb shell settings delete global captive_portal_http_url# 设置一个可用地址adb shell settings put global captive_portal_http_url http://developers.google.cn/generate_204adb shell settings put global captive_portal_https_url https://developers.google.cn/generate_204 注意:最后,请打开飞行模式后再把飞行模式关掉就好啦~ 更改 NTP 服务器(网络时间校准)如果更改完 Captive Portal 的服务器(即上述操作)后信号仍然显示叉叉,或者说网络受限。原因可能是因为当地网络环境 NTP 服务器受限,导致时间无法校准。 1234# 删除(删除默认用 NTP 服务器 )adb shell settings delete global ntp_server# 设置一个可用的 NTP 服务器(此处为 Apple 公司在亚洲的 NTP 服务器,我知道 Android 机器用 Apple 的时间服务器很不清真,哈哈哈哈)adb shell settings put global ntp_server time.asia.apple.com 请前往「Settings 设置」 -> 「System 系统」 -> 「Advanced 高级」 -> 「Date and time 日期和时间」,确保「Use network-provided time 使用网络提供时间」和「Use network-provided timezone 使用网络提供的时区」2 个选项已启用,然后重新开关一次飞行模式应该就可以了。","categories":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/categories/Android/"}],"tags":[{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/tags/Android/"},{"name":"类原生","slug":"类原生","permalink":"https://ericclose.github.io/tags/%E7%B1%BB%E5%8E%9F%E7%94%9F/"}]},{"title":"使用 you-get 下载视频","slug":"you-get-tutorial","date":"2018-10-27T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"you-get-tutorial.html","permalink":"https://ericclose.github.io/you-get-tutorial.html","excerpt":"You-get 是一个小巧的能够用于下载网络媒体内容(视频,音频,图片)的命令行程序。开发者是soimort,仓库点击这里访问","text":"You-get 是一个小巧的能够用于下载网络媒体内容(视频,音频,图片)的命令行程序。开发者是soimort,仓库点击这里访问 准备工作以下乃必要依赖,需要单独安装: Python 3 的下载链接: https://www.python.org/downloads/ FFmpeg 的下载链接: https://ffmpeg.org/download.html 必备配置:自行解决 Python 和 FFmpeg 环境变量 的配置,此处不赘述,不懂怎么配置就用用万能的搜索引擎。 安装 you-get 和 PySocks 经过前面的准备工作后,就可以开始安装 you-get 了 打开 cmd ,通过 pip 安装 you-get ,即输入如下命令: 1pip3 install you-get 如果需要 you-get 通过 SOCKS5 代理(如 Shadowsocks / ShadwoskcsR)下载 YouTube 的视频,还得安装 PySocks 1pip3 install PySocks 使用说明 当观赏感兴趣的视频之前,您可以使用 –info/-i 以查看所有可用画质与格式。如:在 cmd 上输入 you-get -i https://www.bilibili.com/video/av33503264 ,输出如下: 123456789101112131415161718site: Bilibilititle: 【官方双语】游戏本?轻薄本?谁才是便携游戏之本?#linus谈科技streams: # Available quality and codecs [ DEFAULT ] _________________________________ - format: hdflv container: flv size: 192.0 MiB (201363047 bytes) # download-with: you-get --format=hdflv [URL] - format: flv720 container: flv size: 150.1 MiB (157350612 bytes) # download-with: you-get --format=flv720 [URL] - format: flv container: flv size: 82.2 MiB (86192476 bytes) # download-with: you-get --format=flv [URL] 使用以下命令即可下载默认画质: 1you-get -o "F:\\Downloads" -O "谁才是便携游戏之本?" https://www.bilibili.com/video/av33503264 这里值得说明的是: -o 后面的是视频需要下载至的路径,如果你输入的时候没有这个选项的话就默认下载到 cmd 的工作目录下,如下图的工作目录就是 C:\\Users\\Innovation cmd 的工作路径 -O 后面则是保存的名字,你输入的时候 没有 这个选项的的话,文件名字就是默认为前面的 Title,即 【官方双语】游戏本?轻薄本?谁才是便携游戏之本?#linus谈科技 那么如果你想要下载其他画质或格式的视频你又该怎样呢? 比如说我们选择上面示例中的 82.2 MiB 大小的那个画质,只需要在url(即 https://www.bilibili.com/video/av33503264 )之前添加 --format=flv (根据前面的 # download-with: you-get --format=flv [URL] 得知)即可 画质格式选择 如果中途想暂停了,怎么办? 暂停与恢复下载 可以使用 Ctrl + C 暂停下载. 临时的 *.download 文件将保存于输出目录。下次使用 you-get 传入相同参数时,下载将从上次继续开始。 代理问题当需要使用SOCKS5代理(Shdowsocks / ShadowsocksR)时,您可以使用 -s 选项设置socks代理。如: 1you-get -s 127.0.0.1:1080 https://www.youtube.com/watch?v=jNQXAC9IVRw 注意:上面的 1080 是我 Shadowsocks / ShadowsocksR 的端口号,如果你的不是这个端口号,请自行更改。","categories":[{"name":"Tools","slug":"Tools","permalink":"https://ericclose.github.io/categories/Tools/"}],"tags":[{"name":"you-get","slug":"you-get","permalink":"https://ericclose.github.io/tags/you-get/"},{"name":"下载","slug":"下载","permalink":"https://ericclose.github.io/tags/%E4%B8%8B%E8%BD%BD/"},{"name":"工具","slug":"工具","permalink":"https://ericclose.github.io/tags/%E5%B7%A5%E5%85%B7/"}]},{"title":"Navicat 软件官网及其 Crack","slug":"navicat","date":"2018-10-26T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"navicat.html","permalink":"https://ericclose.github.io/navicat.html","excerpt":"本文提供 Navicat 的官网,如果条件允许请支持正版。当然本文依然会提供 crack 过程","text":"本文提供 Navicat 的官网,如果条件允许请支持正版。当然本文依然会提供 crack 过程 Navicat 官网 中文官网产品页面:https://www.navicat.com.cn/ 英文官网产品页面:https://www.navicat.com/en/ Crack 激活 准备:进入官方产品页面,选中 Free Trail(免费试用),然后下载相应的安装包,下载完后安装后即可。经测试该工具已支持 Navicat 软件的 12.1.22 版本。 工具由DoubleLabyrinth开发,如果感兴趣点此跳转到仓库,使用方法如下: 下载 navicat-keygen-for-x64.zip ,点此下载 解压 navicat-keygen-for-x64.zip 至合适目录,如 D:\\Program Files\\navicat-keygen\\ 目录下 以 管理员身份运行 cmd,执行下列两行命令(命令的解释在命令后面一行提供)。如: 1cd /d "D:\\Program Files\\navicat-keygen" 此处我解压的具体路径为 D:\\Program Files\\navicat-keygen ,所以 cd /d 后面就接着这个路径。 在cmd上使用 navicat-patcher.exe 替换掉 navicat.exe 和 libcc.dll 里的Navicat激活公钥。即执行如下命令: 1navicat-patcher.exe "D:\\Program Files\\PremiumSoft\\Navicat 12 for MySQL" D:\\Program Files\\PremiumSoft\\Navicat 12 for MySQL 是我以Navicat 12 for MySQL的安装路径为例,请根据你需要 Crack 的 Navicat 任一软件 的安装路径进行修改执行完这条命令后的一份样例输出: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111**************************************************** Navicat Patcher by @DoubleLabyrinth ** Version: 4.0 ****************************************************Press Enter to continue or Ctrl + C to abort.[+] Try to open Navicat.exe ... Ok![+] Try to open libcc.dll ... Ok![+] PatchSolution0 ...... Ready to apply [*] Patch offset = +0x029bccd8[+] PatchSolution1 ...... Ready to apply [*] [0] Patch offset = +0x02206c00 [*] [1] Patch offset = +0x0074c489 [*] [2] Patch offset = +0x02206910 [*] [3] Patch offset = +0x0074c46f [*] [4] Patch offset = +0x02206904[-] PatchSolution2 ...... Omitted[+] PatchSolution3 ...... Ready to apply [*] [ 0] Instruction RVA = 0x016539c8, Patch Offset = +0x023e64d4 [*] [ 1] Instruction RVA = 0x01653a1f, Patch Offset = +0x01652e23 [*] [ 2] Instruction RVA = 0x01653a25, Patch Offset = +0x01652e28 [*] [ 3] Instruction RVA = 0x01653a8c, Patch Offset = +0x01652e8e ... ... ... [*] [108] Instruction RVA = 0x016604e1, Patch Offset = +0x023e66d8 [*] [109] Instruction RVA = 0x01660518, Patch Offset = +0x0165f91c [*] [110] Instruction RVA = 0x0166051e, Patch Offset = +0x0165f921[*] PatchSolution0 is suppressed in order to keep digital signature valid.[*] Generating new RSA private key, it may take a long time...[*] Your RSA public key:-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1hV66HgU4LrKXWW6O7bKAN6ZTr5W+Mq8ClTQ+Pc+BdhLu6rww55kVq7OXKGpvx0G4eTafYMGrrBETgDSTaMqBx+8bZbGBWh2LtNfqU+xUrpHHBSz0ByBc3iTEzzthJl+Fzf8suDX2lWYIc/Ym/eWYtxdJ7xOzLb68z4N0zVmA0jFX2FOm75DRYgKqy4SGixapfucL9dVaWVLTUdbrVdj4LX78t4t5ykbYoThrat4yuLvj/BxLaQ6ivKD+ScfHdtCoY+NA5jmBoUfBq3Q1SXBiNaoXctbi0/H3MiPu0cRojryAocooF89yFm5/mNnzWGAYPr6DvBI8CDTZmjaQ4oCaQIDAQAB-----END PUBLIC KEY-----******************************************************** PatchSolution1 ********************************************************[*] Previous:+0x0000000002206c00 44 37 35 31 32 35 42 37 30 37 36 37 42 39 34 31 D75125B70767B941+0x0000000002206c10 34 35 42 34 37 43 31 43 42 33 43 30 37 35 35 45 45B47C1CB3C0755E+0x0000000002206c20 37 43 43 42 38 38 32 35 43 35 44 43 45 30 43 35 7CCB8825C5DCE0C5......[*] After:+0x0000000002206c00 33 43 32 39 30 39 35 38 33 34 38 41 42 43 35 39 3C290958348ABC59+0x0000000002206c10 36 44 39 30 43 45 45 38 31 36 42 36 39 38 34 44 6D90CEE816B6984D+0x0000000002206c20 35 32 35 34 37 45 30 32 34 31 42 36 42 43 31 41 52547E0241B6BC1A......[*] Previous:+0x000000000074c480 fe ea bc 01 ....[*] After:+0x000000000074c480 08 00 00 00 ....[*] Previous:+0x0000000002206910 45 31 43 45 44 30 39 42 39 43 32 31 38 36 42 46 E1CED09B9C2186BF+0x0000000002206920 37 31 41 37 30 43 30 46 45 32 46 31 45 30 41 45 71A70C0FE2F1E0AE+0x0000000002206930 46 33 42 44 36 42 37 35 32 37 37 41 41 42 32 30 F3BD6B75277AAB20......[*] After:+0x0000000002206910 41 33 39 42 41 36 43 34 31 36 33 32 35 30 46 45 A39BA6C4163250FE+0x0000000002206920 42 32 41 39 31 41 34 32 46 44 42 46 30 41 32 31 B2A91A42FDBF0A21+0x0000000002206930 33 34 46 34 36 44 43 45 34 30 42 46 41 42 33 35 34F46DCE40BFAB35......[*] Previous:+0x000000000074c460 59 Y+0x000000000074c470 08 01 00 ...[*] After:+0x000000000074c460 06 .+0x000000000074c470 00 00 00 ...[*] Previous:+0x0000000002206900 39 32 39 33 33 92933[*] After:+0x0000000002206900 42 34 34 33 38 B4438******************************************************** PatchSolution3 ********************************************************[*] +023e64d4: 4d 49 49 ---> 4d 49 49[*] +01652e23: 42 49 ---> 42 49[*] +01652e28: 6a ---> 6a.........[*] +023e66d8: 77 49 44 41 ---> 51 49 44 41[*] +0165f91c: 51 41 ---> 51 41[*] +0165f921: 42 ---> 42[*] New RSA-2048 private key has been saved toD:\\Program Files\\navicat-keygen\\RegPrivateKey.pem******************************************************** PATCH HAS BEEN DONE SUCCESSFULLY! ** HAVE FUN AND ENJOY~ ******************************************************** 接下来 cmd 上使用 navicat-keygen.exe 来生成序列号和激活码,即执行如下命令: 1navicat-keygen.exe -text .\\RegPrivateKey.pem 执行步骤5后,你会被要求选择Navicat产品类别、语言以及输入主版本号。之后会随机生成一个序列号。输出如下: 1234567891011121314151617181920212223242526272829303132333435Select Navicat product:0. DataModeler1. Premium2. MySQL3. PostgreSQL4. Oracle5. SQLServer6. SQLite7. MariaDB8. MongoDB9. ReportViewer(Input index)> 2Select product language:0. English1. Simplified Chinese2. Traditional Chinese3. Japanese4. Polish5. Spanish6. French7. German8. Korean9. Russian10. Portuguese(Input index)> 0(Input major version number, range: 0 ~ 15, default: 12)> 12Serial number:NAVO-2ORP-IN5A-GQEEYour name: 由于我以 Navicat 12 for MySQL 英文版为例,所以我第一个输入(产品类别) 是 2 ,第二个输入 (语言) 是 0 ,第三个输入(主版本号)是 12 ,最后生成了序列号 NAVO-2ORP-IN5A-GQEE (留着等下用)。 接下来你会被要求输入 用户名 和 组织名 ;请随便填写,但不要太长。 123Your name: usernameYour organization: OrganizationInput request code (in Base64), input empty line to end: 如上我将用户名设为 username ,组织名设为 Organization 。 之后你会被要求填入请求码。注意:不要关闭cmd. 断开网络 并打开 Navicat 软件。找到注册窗口,并填入刚才程序生成的序列号。然后点击 激活 按钮。 然后 Navicat 软件会说激活失败,并询问你是否 手动激活 ,直接选择 手动激活 即可 在 手动激活窗口 你会得到一个请求码,复制它并把它粘贴到 cmd 里。最后别忘了连按至少两下回车结束输入。 1234567891011121314151617[*] Your name: username[*] Your organization: Organization[*] Input request code in Base64: (Input empty line to end)Gz7OvJvHLKAxokLXKwhDjhvj0LsRL5C019OMDMJBRwapfMUbyXTYFzgvOF1VJw0hH5BWUvm5vUWqpJzGFRdtOew8oc3gKEkJNWamoqZmJqXgEROXDGxm/6WTjZDVeXUA1YZkHmzqN+MfC3gKwW/OlBpbs3cdaQnqQqmVyb9Pa+G+/x8RxsgxgBg0mhrtaWJj9QTlOtP1L7+OfTreSINTHF634iEtVlT5ppUb5oSWgyHlHHqDNP+bVKIaPStRLri3+7HSi2SVN+GAiXLWSf2oXemQmqWFcMckh187PBPvxvjAOSs7NJRMOeKC4s/IDLlOCGsXfIbVEA2aUYPfbIeqrQ==[*] Request Info:{"K":"NAVP3B3ISW2WKNFP", "DI":"+ZnYuzjIyVrKpNGSWB4k", "P":"WIN 8"}[*] Response Info:{"K":"NAVP3B3ISW2WKNFP","DI":"+ZnYuzjIyVrKpNGSWB4k","N":"User","O":"Organization","T":1571627725}[*] Activation Code:sdNrmWhr/uPZI4lyIgtSyf+00CZwng5ItzIh59VDKjKGloKPW5DZoSa6bSKxRXaJhlL+NrKEZmfk4zZA4yG0sinEZML4xCeSy0Wf/nlInZqzuvdgJD+cj4tb5HlpN3BGFAR3s3tfTd8WR9YoG/lBXC6UG6J1BWDB1Se5yuKoD12puWMxt3hc2bodrQRUrPDle1vOTS16iMd2b2Ck1kSok1ef5nK48N28IN9iTiNhQ7xTae2u9/1NCWS5VNDW9oZ4SnR99kmfZMxsK00STZntcboUGaYuW3TbJcs2UHrilESYE58XXhs1BFHSSy2Gu7HTOWrUBkRLZQB1oBNNLVS2Kw== 如果不出意外,你会得到一个 Activation Code 。直接复制它,并把它粘贴到Navicat的 手动激活窗口 ,最后点激活按钮。如果没什么意外的话应该能成功激活。复制的 Activation Code 内容为: 1sdNrmWhr/uPZI4lyIgtSyf+00CZwng5ItzIh59VDKjKGloKPW5DZoSa6bSKxRXaJhlL+NrKEZmfk4zZA4yG0sinEZML4xCeSy0Wf/nlInZqzuvdgJD+cj4tb5HlpN3BGFAR3s3tfTd8WR9YoG/lBXC6UG6J1BWDB1Se5yuKoD12puWMxt3hc2bodrQRUrPDle1vOTS16iMd2b2Ck1kSok1ef5nK48N28IN9iTiNhQ7xTae2u9/1NCWS5VNDW9oZ4SnR99kmfZMxsK00STZntcboUGaYuW3TbJcs2UHrilESYE58XXhs1BFHSSy2Gu7HTOWrUBkRLZQB1oBNNLVS2Kw== 大功告成,自行测试是否已激活。","categories":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/categories/Windows/"}],"tags":[{"name":"激活","slug":"激活","permalink":"https://ericclose.github.io/tags/%E6%BF%80%E6%B4%BB/"},{"name":"Navicat","slug":"Navicat","permalink":"https://ericclose.github.io/tags/Navicat/"},{"name":"破解","slug":"破解","permalink":"https://ericclose.github.io/tags/%E7%A0%B4%E8%A7%A3/"}]},{"title":"用 Windows 内置工具制作安装U盘","slug":"windows-diskpart-tutorial","date":"2018-10-21T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"windows-diskpart-tutorial.html","permalink":"https://ericclose.github.io/windows-diskpart-tutorial.html","excerpt":"Diskpart 命令是 Windows 环境下的一个命令,利用 Diskpart 和解压缩软件即可制作好 Windows 安装U盘。","text":"Diskpart 命令是 Windows 环境下的一个命令,利用 Diskpart 和解压缩软件即可制作好 Windows 安装U盘。 过程准备工作 由于制作过程需要格式化U盘,在操作之前切记先备份好数据! 从微软官方下载好 Windows 映像文件 (即 ISO 文件), 点击此处 虽说利用微软的工具可以直接制作好Windows 10 的安装U盘,但是每次需要重装的时候就要再次联网下载映像文件就太麻烦了。所以此处骚操作(斜眼笑~ 点击进入前面提供的网站后,以 Chrome浏览器 为例子, 按 Ctrl + Shift + I 打开 Chrome 的开发人员工具。 点击开发人员工具右上方的“…”按钮,选择“More Tools”、“Network conditions”。如下图 反选 “Select automatically” 选择 Safari - Mac 不要关闭 Chrome 的开发人员工具,刷新网页,这时就可以直接在这个网站里下载 ISO 文件了。 选择 “Windows 10”,而不是 “Windows 10家庭中文版” 理由:虽说大多数人买来的电脑预装的 Windows 10 都是家庭中文版的,但是这种家庭版是独具“中国特色”的,与国际版的不同是,不能在设置里面修改系统显示语言,只能是中文,至于其他差别倒是没注意啦。除此之外,不选“Windows 10 家庭中文版”还有一部分原因是因为有些电脑预装的系统不是家庭版的,比如说专业版或者企业版,考虑到这种情况,所以统一选择“Windows 10”。 注意 下载 “Windows 10” 的用户,在启动的时候有家庭版,专业版,单语言版等提供选择。具体选择应该是根据你电脑预装的系统来选择,这样系统才会自动激活。安装了错误版本的系统将无法自动激活。打个比方,我电脑预装的是 “Windows 10 家庭中文版”,如果我安装的时候选择的是”家庭版”,那么开机联网后 Windows 就会自动激活,但如果选错了,如”专业版”,”单语言版”等非”家庭版”的开机联网都不会激活的。 选完之后点击“确定” 选择“简体中文”,确定就好了,(当然你可以选择其他偏好的语言(家庭中文版除外)) 这个时候就会有“32 bit” 和“64 bit”,根据自己实际情况选择即可。 选完后就开始下载了。 直到下载完毕就完成一大半了。 开始动手经过之前的备份和下载,现在终于可以开工了。Win + R ,输入diskpart,回车确认 分区方案 分区用途 文件系统 大小 盘符 启动分区 FAT32 1 GB G sources 分区 NTFS 6 GB H 用户数据分区 exFAT 取决于你的U盘的大小 I BIOS 支持启动分区的文件系统只有 FAT32,所以我们创建了 1 GB 的分区,专门用于存放启动相关的文件 创建的 6 GB 大小的分区,使用 NTFS 文件系统的理由是,镜像文件里的 sources 文件夹存在单个文件大于 4 GB 的情况,FAT32 不能超过这个限制,所以我们建了这个 NTFS 分区 剩余的分区全部分完,此分区采用 exFAT 的文件系统(该文件系统支持单个文件超过 4GB 的情况,同时支持 Windows、Linux、和 Android 系统),专门用于存放用户数据 制作启动盘完成上述分区操作后,我们将系统镜像(*.iso 文件)先通过解压缩软件(如 7-zip)解压至硬盘的某处。 启动分区(G 盘) 将解压得到的内容,除 sources 文件夹外复制到启动分区(本文例子为G盘): 手动在 G 盘创建 sources 文件夹,然后将前面解压系统镜像得到的 sources\\boot.wim 复制到 G:\\sources\\ sources 分区(H 盘) 只需将前面解压得到的 souces 文件夹完整的复制到 H 盘即可 用户数据分区(I 盘) U盘用来存放其他文件的分区,以后存数据放这里就行 重新分配盘符 为了让启动分区和 sources 分区在资源管理器中不可见,我们可以移除相应的盘符 G、H,然后可以将用户数据分区的盘符分配为 G 盘(因为前面的分区盘符移除了,盘符 G 得以释放) 最终成果如下: 命令总结1234567891011list disk //显示本机的所有磁盘,以便正确操作目标磁盘list partition //显示选中磁盘的所有分区select disk 0 //选择 0 号磁盘select partition 1 //选择 1 号分区clean //清除选中磁盘上的所有分区(包括数据)create partition primary size=xxxx //创建主分区,容量为:xxxx MB active //将选中分区标记为活动分区(当该分区作为启动分区的时候才需要这个操作)format fs=文件系统 quick //快速格式化当前分区(自行选择合适的文件系统)remove letter=盘符 //移除选中分区的盘符create partition primary //将选中磁盘的未分配的所有空间用来创建主分区assign letter=盘符 //给选中分区分配盘符 完结~","categories":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/categories/Windows/"}],"tags":[{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/tags/Windows/"},{"name":"diskpart","slug":"diskpart","permalink":"https://ericclose.github.io/tags/diskpart/"},{"name":"启动盘","slug":"启动盘","permalink":"https://ericclose.github.io/tags/%E5%90%AF%E5%8A%A8%E7%9B%98/"}]},{"title":"GitHub + Hexo 博客搭建","slug":"github-pages-with-hexo","date":"2018-10-13T16:00:00.000Z","updated":"2023-11-07T09:14:02.072Z","comments":true,"path":"github-pages-with-hexo.html","permalink":"https://ericclose.github.io/github-pages-with-hexo.html","excerpt":"此文介绍了搭建 Hexo 博客的全过程。然而在安装前,您必须检查电脑中是否已安装下列应用程序","text":"此文介绍了搭建 Hexo 博客的全过程。然而在安装前,您必须检查电脑中是否已安装下列应用程序 必备应用 Node.js 首先下载最新的 LTS(长期支持版)的 Node.js,除了安装路径自选外,其它选项全部默认,一路点击 Next 即可。最后安装好之后,cmd 输入 node -v,如果出现版本号,那么就安装成功了。 Git 除了安装路径自选外,有一步我们要确保勾选 Git Bash Here,取消 Git GUI Here 的选项,其余选项默认,一路点击 Next,安装完后就可以直接在鼠标右键菜单选项里打开 Git Bash 了。可以在 Git Bash 输入 git --version 验证是否安装成功 yarn Node.js >=16.10 版本之后本身就包含了 yarn 这个包管理器,但是默认没有启用。我们可以通过以管理员身份运行 cmd,执行命令启用: 1corepack enable 经过验证,上述软件均安装成功 本教程假定你已经安装上述必备程序。这里我还想说一句,很多教程是用 npm 包管理器来安装依赖的,我这里则是用的 yarn,yarn 和 npm 相比有很多优势,更多详情和 npm 命令之间的差异建议自行去网上搜索。 Hexo 安装及建站过程 全局安装 Hexo(在 cmd 输入) 1yarn global add hexo-cli 配置环境变量 桌面上的「此电脑」图标,鼠标右键,「属性」,「高级系统设置」,「环境变量」,在「系统变量」一栏的「Path」,点击「编辑」,「新建」,把路径 C:\\Users\\<用户名>\\AppData\\Local\\Yarn\\bin 写进去(此处路径取决于你电脑的用户名),保存即可。 环境变量的配置 找个目录建立站点(在你认为合适的目录下鼠标右键,点击 Git Bash Here,下面的 your_blog_name 是自定义的,随你喜好设定),然后输入命令: 1234hexo init your_blog_namecd your_blog_nameyarnyarn add hexo-deployer-git 完成上述操作后接下来就该部署到 GitHub Pages 上了。 GitHub Pages 必备条件 拥有一个 GitHub 账号 如果还没有账号的自行 点击这里 注册创建一个名为 your_username.github.io 的 repository(此处的your_username指的是你的 GitHub 用户名) 配置 SSH 密钥配置 GitHub 的 SSH 密钥可以让本地 Git 项目与远程的 GitHub 建立联系,让我们在本地写了代码之后直接通过git操作就可以实现本地代码库与 GitHub 代码库同步。操作如下: 检查本地上是否已有 SSH 密钥打开 Git Bash,并运行: 1ls ~/.ssh 如果提示 No such file or directory 的就说明你之前还没有创建过 SSH 密钥,如下: 12$ ls ~/.sshls: cannot access '/c/Users/Innovation/.ssh': No such file or directory 如果有 id_* 和 id_*.pub (其中 * 是生成密钥的签名类型),说明您之前已经生成过 SSH 密钥了,如: 12$ ls ~/.sshid_ecdsa id_ecdsa.pub 还没有 SSH 密钥看这里 创建一对新的 SSH 密钥,输入以下命令 1ssh-keygen -t ecdsa -C "your_email" 上面的 your_email 以你 GitHub 的邮箱地址替换即可 按回车确认key保存的路径 12Generating public/private ecdsa key pair.Enter file in which to save the key (/c/Users/Innovation/.ssh/id_ecdsa): 上面的意思是询问你保存密钥的路径,我们默认即可,此处直接回车。 输入密码 此处建议不要设置密码,直接回车,不然每次你本地文件发生变化要部署到 GitHub 仓库的时候都要繁琐的输入密码 12Created directory '/c/Users/Innovation/.ssh'.Enter passphrase (empty for no passphrase): 确认密码 是让你确认密码,没设置密码的直接回车 1Enter same passphrase again: 输入完成之后,屏幕大致会显示如下信息: 1234Your identification has been saved in /c/Users/Innovation/.ssh/id_ecdsaYour public key has been saved in /c/Users/Innovation/.ssh/id_ecdsa.pubThe key fingerprint is:SHA256:snXEmouBdXZbc9EdpkJJCeVhbMuTimnhvCr7Sv/xFeg [email protected] 已有 SSH 密钥看这里 在 Git Bash 里显示你的 SSH 公钥 1cat ~/.ssh/id_*.pub 鼠标复制返回的内容 接着: 登陆 GitHub,进入你的 Settings 点击左栏的 SSH and GPG Keys 选项 选择 New SSH Key,在 Key 文本框里直接粘贴刚才复制的内容 Title 文本框可以不填,点击 Add SSH Key 就好了 测试 GitHub 的身份验证 在提交到 GitHub 之前,你首先需要声明提交者的身份信息,打开 Git Bash,输入下列命令: 12git config --global user.name "your_username"git config --global user.email "your_email" 上面命令中的 your_username 和 your_email 改为你 GitHub 用户名和邮箱地址即可。 输入下面的命令,看看设置是否成功,[email protected] 的部分不要修改: 1ssh -T [email protected] 如果大致是下面的反馈: 1234The authenticity of host 'github.com (20.205.243.166)' can't be established.ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.This key is not known by any other namesAre you sure you want to continue connecting (yes/no/[fingerprint])? 输入 yes 即可 然后反馈如下,那么就验证成功了 1Hi ericclose! You've successfully authenticated, but GitHub does not provide shell access. 修改 blog 的配置文件 打开你一开始创建的 blog 文件夹,用文本编辑器(推荐 vscode 或者是 Notepad++ 这类带语法高亮的编辑器)打开刚文件夹下的 _config.yml 文件,然后修改最后一块代码: _config.yml1234deploy: type: git repository: [email protected]:your_username/your_username.github.io.git branch: master 把上面的 your_username 改成你 GitHub 的用户名就完成了所有配置。 生成 public 文件夹并部署到你的 GitHub Pages在你 blog 根目录下鼠标右键,点击 Git Bash Here,输入 12hexo ghexo d 上面的 g 代表的是 generate(生成),d 代表的是 deploy(部署)命令可以简写成一行 hexo g -d 完成进入你的 GitHub Pages 看看效果了,链接是 https://your_username.github.io (your_username 用你的用户名替代即可) 默认的 Hexo 主题是 landscape,最初只有一篇文章,效果图如下: 部署完成效果图","categories":[{"name":"Blog","slug":"Blog","permalink":"https://ericclose.github.io/categories/Blog/"}],"tags":[{"name":"GitHub Pages","slug":"GitHub-Pages","permalink":"https://ericclose.github.io/tags/GitHub-Pages/"},{"name":"hexo","slug":"hexo","permalink":"https://ericclose.github.io/tags/hexo/"}]}],"categories":[{"name":"Router","slug":"Router","permalink":"https://ericclose.github.io/categories/Router/"},{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/categories/Windows/"},{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/categories/Android/"},{"name":"OpenWrt","slug":"OpenWrt","permalink":"https://ericclose.github.io/categories/OpenWrt/"},{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/categories/Linux/"},{"name":"Software","slug":"Software","permalink":"https://ericclose.github.io/categories/Software/"},{"name":"Proxy","slug":"Proxy","permalink":"https://ericclose.github.io/categories/Proxy/"},{"name":"Crack","slug":"Crack","permalink":"https://ericclose.github.io/categories/Crack/"},{"name":"VM","slug":"VM","permalink":"https://ericclose.github.io/categories/VM/"},{"name":"Tools","slug":"Tools","permalink":"https://ericclose.github.io/categories/Tools/"},{"name":"Blog","slug":"Blog","permalink":"https://ericclose.github.io/categories/Blog/"}],"tags":[{"name":"OpenWrt","slug":"OpenWrt","permalink":"https://ericclose.github.io/tags/OpenWrt/"},{"name":"ShellClash","slug":"ShellClash","permalink":"https://ericclose.github.io/tags/ShellClash/"},{"name":"虚拟化","slug":"虚拟化","permalink":"https://ericclose.github.io/tags/%E8%99%9A%E6%8B%9F%E5%8C%96/"},{"name":"Android","slug":"Android","permalink":"https://ericclose.github.io/tags/Android/"},{"name":"Motorola","slug":"Motorola","permalink":"https://ericclose.github.io/tags/Motorola/"},{"name":"Office","slug":"Office","permalink":"https://ericclose.github.io/tags/Office/"},{"name":"Microsoft Office","slug":"Microsoft-Office","permalink":"https://ericclose.github.io/tags/Microsoft-Office/"},{"name":"Microsoft Store","slug":"Microsoft-Store","permalink":"https://ericclose.github.io/tags/Microsoft-Store/"},{"name":"PPPoE","slug":"PPPoE","permalink":"https://ericclose.github.io/tags/PPPoE/"},{"name":"Redis","slug":"Redis","permalink":"https://ericclose.github.io/tags/Redis/"},{"name":"Debian","slug":"Debian","permalink":"https://ericclose.github.io/tags/Debian/"},{"name":"Sandboxie Plus","slug":"Sandboxie-Plus","permalink":"https://ericclose.github.io/tags/Sandboxie-Plus/"},{"name":"QQ","slug":"QQ","permalink":"https://ericclose.github.io/tags/QQ/"},{"name":"沙盒","slug":"沙盒","permalink":"https://ericclose.github.io/tags/%E6%B2%99%E7%9B%92/"},{"name":"V2Ray","slug":"V2Ray","permalink":"https://ericclose.github.io/tags/V2Ray/"},{"name":"Cloudflare","slug":"Cloudflare","permalink":"https://ericclose.github.io/tags/Cloudflare/"},{"name":"科学上网","slug":"科学上网","permalink":"https://ericclose.github.io/tags/%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91/"},{"name":"Google","slug":"Google","permalink":"https://ericclose.github.io/tags/Google/"},{"name":"sailfish","slug":"sailfish","permalink":"https://ericclose.github.io/tags/sailfish/"},{"name":"marlin","slug":"marlin","permalink":"https://ericclose.github.io/tags/marlin/"},{"name":"Pixel","slug":"Pixel","permalink":"https://ericclose.github.io/tags/Pixel/"},{"name":"Pixel XL","slug":"Pixel-XL","permalink":"https://ericclose.github.io/tags/Pixel-XL/"},{"name":"modem","slug":"modem","permalink":"https://ericclose.github.io/tags/modem/"},{"name":"移植","slug":"移植","permalink":"https://ericclose.github.io/tags/%E7%A7%BB%E6%A4%8D/"},{"name":"pixel","slug":"pixel","permalink":"https://ericclose.github.io/tags/pixel/"},{"name":"FRP","slug":"FRP","permalink":"https://ericclose.github.io/tags/FRP/"},{"name":"账户锁","slug":"账户锁","permalink":"https://ericclose.github.io/tags/%E8%B4%A6%E6%88%B7%E9%94%81/"},{"name":"小米","slug":"小米","permalink":"https://ericclose.github.io/tags/%E5%B0%8F%E7%B1%B3/"},{"name":"sagit","slug":"sagit","permalink":"https://ericclose.github.io/tags/sagit/"},{"name":"LineageOS","slug":"LineageOS","permalink":"https://ericclose.github.io/tags/LineageOS/"},{"name":"Linux","slug":"Linux","permalink":"https://ericclose.github.io/tags/Linux/"},{"name":"触控板","slug":"触控板","permalink":"https://ericclose.github.io/tags/%E8%A7%A6%E6%8E%A7%E6%9D%BF/"},{"name":"KDE","slug":"KDE","permalink":"https://ericclose.github.io/tags/KDE/"},{"name":"代理","slug":"代理","permalink":"https://ericclose.github.io/tags/%E4%BB%A3%E7%90%86/"},{"name":"Git","slug":"Git","permalink":"https://ericclose.github.io/tags/Git/"},{"name":"Windows","slug":"Windows","permalink":"https://ericclose.github.io/tags/Windows/"},{"name":"激活","slug":"激活","permalink":"https://ericclose.github.io/tags/%E6%BF%80%E6%B4%BB/"},{"name":"竞斗云","slug":"竞斗云","permalink":"https://ericclose.github.io/tags/%E7%AB%9E%E6%96%97%E4%BA%91/"},{"name":"R619AC","slug":"R619AC","permalink":"https://ericclose.github.io/tags/R619AC/"},{"name":"OpBoot","slug":"OpBoot","permalink":"https://ericclose.github.io/tags/OpBoot/"},{"name":"刷机","slug":"刷机","permalink":"https://ericclose.github.io/tags/%E5%88%B7%E6%9C%BA/"},{"name":"固件","slug":"固件","permalink":"https://ericclose.github.io/tags/%E5%9B%BA%E4%BB%B6/"},{"name":"VMware","slug":"VMware","permalink":"https://ericclose.github.io/tags/VMware/"},{"name":"Arch","slug":"Arch","permalink":"https://ericclose.github.io/tags/Arch/"},{"name":"破解","slug":"破解","permalink":"https://ericclose.github.io/tags/%E7%A0%B4%E8%A7%A3/"},{"name":"StarUML","slug":"StarUML","permalink":"https://ericclose.github.io/tags/StarUML/"},{"name":"Office Tool","slug":"Office-Tool","permalink":"https://ericclose.github.io/tags/Office-Tool/"},{"name":"Office Tool Plus","slug":"Office-Tool-Plus","permalink":"https://ericclose.github.io/tags/Office-Tool-Plus/"},{"name":"Word","slug":"Word","permalink":"https://ericclose.github.io/tags/Word/"},{"name":"Excel","slug":"Excel","permalink":"https://ericclose.github.io/tags/Excel/"},{"name":"PowerPoint","slug":"PowerPoint","permalink":"https://ericclose.github.io/tags/PowerPoint/"},{"name":"Visio","slug":"Visio","permalink":"https://ericclose.github.io/tags/Visio/"},{"name":"KMS","slug":"KMS","permalink":"https://ericclose.github.io/tags/KMS/"},{"name":"crack","slug":"crack","permalink":"https://ericclose.github.io/tags/crack/"},{"name":"Fedora","slug":"Fedora","permalink":"https://ericclose.github.io/tags/Fedora/"},{"name":"虚拟机","slug":"虚拟机","permalink":"https://ericclose.github.io/tags/%E8%99%9A%E6%8B%9F%E6%9C%BA/"},{"name":"macOS","slug":"macOS","permalink":"https://ericclose.github.io/tags/macOS/"},{"name":"暗网","slug":"暗网","permalink":"https://ericclose.github.io/tags/%E6%9A%97%E7%BD%91/"},{"name":"Tor","slug":"Tor","permalink":"https://ericclose.github.io/tags/Tor/"},{"name":"斐讯","slug":"斐讯","permalink":"https://ericclose.github.io/tags/%E6%96%90%E8%AE%AF/"},{"name":"Phicomm","slug":"Phicomm","permalink":"https://ericclose.github.io/tags/Phicomm/"},{"name":"Padavan","slug":"Padavan","permalink":"https://ericclose.github.io/tags/Padavan/"},{"name":"BREED","slug":"BREED","permalink":"https://ericclose.github.io/tags/BREED/"},{"name":"类原生","slug":"类原生","permalink":"https://ericclose.github.io/tags/%E7%B1%BB%E5%8E%9F%E7%94%9F/"},{"name":"you-get","slug":"you-get","permalink":"https://ericclose.github.io/tags/you-get/"},{"name":"下载","slug":"下载","permalink":"https://ericclose.github.io/tags/%E4%B8%8B%E8%BD%BD/"},{"name":"工具","slug":"工具","permalink":"https://ericclose.github.io/tags/%E5%B7%A5%E5%85%B7/"},{"name":"Navicat","slug":"Navicat","permalink":"https://ericclose.github.io/tags/Navicat/"},{"name":"diskpart","slug":"diskpart","permalink":"https://ericclose.github.io/tags/diskpart/"},{"name":"启动盘","slug":"启动盘","permalink":"https://ericclose.github.io/tags/%E5%90%AF%E5%8A%A8%E7%9B%98/"},{"name":"GitHub Pages","slug":"GitHub-Pages","permalink":"https://ericclose.github.io/tags/GitHub-Pages/"},{"name":"hexo","slug":"hexo","permalink":"https://ericclose.github.io/tags/hexo/"}]}