作者归档:Derek

关于Derek

Big things have small beginnings.

WSL 2 安装和升级过程中错误的解决方法

微软近期推出了 WSL 2,相较于 WSL 1 增加了不少优点,包括完整的 Linux 内核支持、文件 IO 性能的提升、更好的系统调用兼容性、更少的内存占用。总的来说还是非常值得安装或升级的。

微软为安装和升级 WSL 2 提供了指导网页(适用于 Linux 的 Windows 子系统安装指南 (Windows 10)),但在实际操作中还是遇到了不少指南中未提及的问题。经过搜索网上各位大佬的解答和自己的实际操作,对遇到的部分问题做个小结,希望能对遇到类似问题的朋友有所帮助。

错误复现

首次安装 Linux 分发版(Ubuntu)时出现 WslRegisterDistribution failed with error: 0x80370102 报错。

再次对照微软 WSL 2 安装指南,确认是否遗漏或跳过某个步骤。重点检查打开启用或关闭 Windows 功能中相关选项是否勾选:
1. Hyper-V
2. 适用于 Linux 的 Windows 子系统
3. 虚拟机平台这个几个选项是否勾选
4. 特别的还应该注意 BIOS 中的 CUP 虚拟化支持是否打开在BIOS中开启VT,BIOS开启VT虚拟化技术图文教程)。

然而,在检查上述所有设置后,错误依然存在,而且提示十分令人崩溃。

解决方法

查阅资料后认为是 53 端口占用造成的,恰好电脑安装了本地 DNS 服务器,关掉以后问题就解决了。

解决 software_reporter_tool.exe 占用 CPU 问题

Google 已经从“不作恶”演变成了“尽作恶”。

在大家都无法避免使用 chrome 的情况下,经常发现其下的一个 software_reporter_tool.exe 疯狂占用 CPU 和硬盘 IO。

解决方法其实很简单,进入 %localappdata%\Google\Chrome\User Data 删除 SwReporter 文件夹,再建一个建立个 0 字节、只读、同名、占位文件 SwReporter 即可。

fxxk Google.

Linux 设置系统时间及同步

1.调整系统时区

CentOS6 , Ubuntu16 修改方法 :
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

CentOS7 , RHEL7 , Scientific Linux 7 , Oracle Linux 7 :
timedatectl set-timezone Asia/Shanghai #其他时区以此类推

查看时间:
date

参考链接:Linux 修改时区和时间

2.配置 NTP

安装 NTP:
yum install ntp #适用于 CentOS

启动 NTPD 服务:
service ntpd start #适用于 CentOS

参考链接:NTP服务器的配置和使用

3.公共 NTP 服务器

为 VPS 配置 IPv6

在如今到处都在普及 IPv6 之际,某 VPS 服务商非常不友好地不支持 Native IPv6,无奈之下只能采用曲线救国方式,利用 HE.NET 提供的 IPv6 Tunnel 来实现 VPS 对 IPv6 的支持。

检查 VPS 是否支持 IPv6

输入 ip -6 address show 看是否有显示内容,如无则表示没有启用 IPv6。
编辑文件 /etc/sysctl.conf,添加或修改一下内容启用 IPv6:

net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0

键入 sysctl -p 使上述设置生效,再输入 ip -6 address show 查看是否有信息显示。

为 VPS 配置 IPv6 Tunnel

/root 目录下新建一个 he-ipv6.sh 文件,将 Tunnelbroker.net 中 Linux-route2 选项下的配置内容粘贴进去,执行 ./he-ipv6.sh

设置 IPv6 优先级

尽管目前 IPv6 在全世界范围内快速普及,但在实际使用中仍然会遇到不少问题,为保守起见,我们设置了 IPv4 的优先级高于 IPv6。
方法很简单,就是在 /etc/gai.conf 中加入 precedence ::ffff:0:0/96 100 就行了。

添加一整段 IPv6

虽然我也不知道在一个 VPS 上监听 2^n 个 IP 地址有啥用…

ip -6 route add local XXXX/64 dev lo #添加
ip -6 route list table local #查看

在 Windows 系统利用 HE Tunnelbroker 配置 IPv6

现在国家大力推进 IPv6 普及,很多网站都提供了 IPv4/v6 双栈访问,IPv6 的普及也是大势所趋。但是由于我国复杂的网络环境,很多小伙伴现在还不能使用原生的 IPv6(Native IPv6),原来在 Windows 系统下普遍采用的是 Teredo 方法来配置 IPv6,但最近几乎所有网上能查到了 Teredo 服务器都已经无法使用,所以不得不另辟蹊径。

Windows Vista/7/8/10 配置方法

原来给 VPS 配置 IPv6 环境曾经使用过 HE.NET 的 IPv6 Tunnel,那是否也能把其移植到 Windows 上?答案是肯定的。先说一下我的电脑环境:

系统: Windows 7 SP1 Ultimate 64位
网络:有线连接路由器(内网IP:192.168.1.x,公网IP:222.x.x.x)

  1. 在 Tunnelbroker.net 注册一个账号

  2. Create Regular Tunnel,填入公网IP,也就是 222.x.x.x。然后选择一个网络质量最好的 Tunnel Server

  3. 创建完成后,可以在 Main Page 最下方看见 tunnel 列表,点击打开查看详情,再进入 Example Configurations

  4. 在下拉菜单选择相应的系统,例如选择 Windows Vista/2008/7/8 则显示下列信息:

    netsh interface teredo set state disabled
    netsh interface ipv6 add v6v4tunnel interface=IP6Tunnel 192.168.1.x 216.66.88.98 #如果你是内网环境,加黑处替换为内网地址
    netsh interface ipv6 add address IP6Tunnel 2001:470:XXXX:XXXX::2 #替换为你的 IPv6 地址
    netsh interface ipv6 add route ::/0 IP6Tunnel 2001:470:XXXX:XXXX::1 #对应替换 IPv6 地址

    Windows 10 则为如下配置:

    netsh interface teredo set state disabled
    netsh interface ipv6 add v6v4tunnel interface=IP6Tunnel localaddress=192.168.1.x remoteaddress=216.66.88.98 #如果你是内网环境,加黑处替换为内网地址
    netsh interface ipv6 add address interface=IP6Tunnel address=2001:470:XXXX:XXXX::2
    netsh interface ipv6 add route prefix=::/0 interface=IP6Tunnel nexthop=2001:470:XXXX:XXXX::1
  5. 用管理员权限启动 CMD,然后依次输入上述信息,IPv6 配置就完成了

其他相关命令

下面陈列一下其他涉及 IPv6 配置的命令

netsh int ipv6 show int #查看 IPv6 interfaces
netsh int ipv6 add address IP6Tunnel 2001:470:XXXX:XXXX::3/64 #添加额外 IPv6 地址
netsh int ipv6 delete address IP6Tunnel 2001:470:XXXX:XXXX::3/64 #删除额外 IPv6 地址

netsh interface ipv6 delete interface ip6tunnel #删除 ip6tunnel
netsh interface ipv6 reset all #重置 IPv6 设置

netsh int ipv6 show prefixpolicies #查看前缀策略,第一列数值越大,优先级越高
netsh int ipv6 add prefixpolicy 2001:470::/32 5 11 store=persistent #降低 Tunnelbroker 的优先级

netsh int ipv6 delete prefixpolicy ::1/128 store=persistent #删除策略记录
netsh int ipv6 add prefixpolicy ::1/128 40 0 store=persistent #新增策略记录
*::1/128 #IPv6 loopback
*::/0 #Native IPv6
*::ffff:0:0/96 #IPv4
*2002::/16 #6to4
*2001::/32 #Teredo
*::/96 #v4compat
*fec0::/10 #IPv6 site-local
*3ffe::/16 #6bone

参考文章
Windows IP Address Prefix Policies