0%

概述

apt-get update出现The following signatures couldn't be verified because the public key is not available错误,则需要手动添加key

解决方案

执行以下命令:(B02C46DF417A0893替换为报错信息中显示的值)

1
2
3
sudo gpg --keyserver keyserver.ubuntu.com --recv B02C46DF417A0893
sudo gpg --export --armor B02C46DF417A0893 | sudo apt-key add -
sudo apt-get update

参考

解决GPG error: The following signatures couldn’t be verified because the public key is not available

概述

最近安装python模块非常慢,甚至直接超时。更换源后解决

步骤

Windows

C:\Users\用户名\pip\pip.ini:

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

Linux

编辑~/.pip/pip.conf内容为:

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

参考

pip国内源设置方法

概述

由于要在WSL中使用Docker,系统盘空间不足,故迁移WSL到D盘

迁移步骤

删除temp文件夹

打开wsl文件夹:
C:\Users\用户名\AppData\Local\Packages\WSL文件夹\LocalState
WSL文件夹名:
Ubuntu :CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
Ubuntu 18.04 LTS:CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc
Kali Linux:KaliLinux.54290C8133FEE_ey8k8hqnwqnmg
删除temp文件夹

(可选操作)

也可以先转换为wsl2再进行迁移

1
wsl --set-version Ubuntu 2

如果提示:没有收到虚拟机或容器的回应,操作超时。
则需要先取消C:\Users\用户名\AppData\Local\Packages\WSL文件夹\LocalState压缩内容以便节省磁盘空间选项(右键属性-高级,同时应用于子文件夹)

停止正在运行的wsl

1
wsl --shutdown

使用工具迁移

下载https://github.com/DDoSolitary/LxRunOffline/releases并解压
然后以管理员权限启动PowerShell,切换到该目录

查看发行版本

1
.\LxRunOffline.exe list

执行迁移操作

1
.\LxRunOffline.exe move -n Ubuntu -d D:\Ubuntu

查询迁移结果

1
./LxRunOffline.exe get-dir -n Ubuntu

启动wsl测试

1
wsl

参考

搞机:window10安装Linux子系统(WSL)及迁移到非系统盘

环境

win10系统,操作系统版本大于等于18917

步骤

启用虚拟机平台和 Linux 子系统功能

以管理员权限启动 PowerShell

1
2
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

更新内核组件

前往https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel下载内核更新包并安装
x64的更新包下载:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

查看当前子系统名称及版本

1
wsl -l -v

转换指定发行版到wsl2

1
wsl --set-version Ubuntu 2

等待转换完成后,再次执行wsl -l -v查看是否转换成功
如果要恢复的话,执行:

1
wsl --set-version Ubuntu 1

参考

如何在 Windows 10 中安装 WSL2 的 Linux 子系统
WSL 2 需要更新其内核组件

概述

安装windows预览版,需要切换诊断数据为完整,而切换到完整后又会自动跳回基本。搜索后找到解决方案。
原因是Connected User Experiences and Telemetry服务被禁用

解决步骤

Win+R,services.msc,找到Connected User Experiences and Telemetry,设置为自动(延迟启动),再点击启动此服务即可成功切换

参考

安装win10预览版,诊断数据无设置成完整

之前的尝试

一开始使用wsl1进行编译,即使用了ccache,编译耗时仍难以接受(编译了很久都没结束)
之后又使用wsl2进行编译,编译还是需要很久
原因猜测:源码位于D盘,wsl访问文件可能需要经过转换,因此IO操作速度慢。
搜索发现WSL 1 与 WSL 2 之间的用户体验更改中提到:

请确保将你要使用 Linux 应用程序频繁访问的文件放在 Linux 根文件系统中,以享受文件性能优势。 这些文件必须位于 Linux 根文件系统内,以便较快地访问文件系统。
验证:使用wsl在d盘解压源码,速度远慢于直接在wsl文件系统中解压
由此确定最终方案

最终方案

将源码压缩包移动到linux文件系统下,再解压
或者使用repo工具下载源码到linux文件系统

阅读全文 »

概述

尝试在wsl中使用adb,发现找不到设备。搜索一番发现是因为adb版本不统一导致的。
注意:wsl2中adb无法查询到usb设备,可以通过使用ip地址连接(需要root权限),或降级到wsl1

在 WSL 2 的初始版本中,将会限制硬件访问支持,例如:你将无法访问 GPU、串行或 USB 设备。
WSL2 - 常见问题

准备

Linux安装adb

1
sudo apt-get install android-tools-adb

解决方案

查询adb版本

使用

1
adb version

查看adb版本,发现windows是1.0.41,而WSL下是1.0.39

停用adb服务

1
adb kill-server

统一版本

个人是把windows的adb文件替换为1.0.39版本,从而实现内外都可使用adb命令。

下载链接

https://pan.baidu.com/s/1j8IKIyiIpVhqrPEKveJAGA 提取码: 2333

参考

默认以管理员身份调试

右键项目,添加应用程序清单文件。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
asInvoker修改为requireAdministrator
保存后再次点击运行,将提示使用其他凭据重新启动。

程序自动请求管理员权限

修改Program.csMain方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
static void Main(string[] Args)
{
/**
* 当前用户是管理员的时候,直接启动应用程序
* 如果不是管理员,则使用启动对象启动程序,以确保使用管理员身份运行
*/
//获得当前登录的Windows用户标示
System.Security.Principal.WindowsIdentity identity = System.Security.Principal.WindowsIdentity.GetCurrent();
//创建Windows用户主题
Application.EnableVisualStyles();

System.Security.Principal.WindowsPrincipal principal = new System.Security.Principal.WindowsPrincipal(identity);
//判断当前登录用户是否为管理员
if (principal.IsInRole(System.Security.Principal.WindowsBuiltInRole.Administrator))
{
//如果是管理员,则直接运行

Application.EnableVisualStyles();
Application.Run(new Form1());
}
else
{
//创建启动对象
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
//设置运行文件
startInfo.FileName = System.Windows.Forms.Application.ExecutablePath;
//设置启动参数
startInfo.Arguments = String.Join(" ", Args);
//设置启动动作,确保以管理员身份运行
startInfo.Verb = "runas";
//如果不是管理员,则启动UAC
System.Diagnostics.Process.Start(startInfo);
//退出
System.Windows.Forms.Application.Exit();
}
}

参考

C#默认以管理员身份运行程序

概述

发现有一个工具叫Graphviz,类似于markdown,它使用dot标记语言来编写,能将其转换为图形。

准备工作

(非必需,文末有精简版下载地址)
下载并安装Graphviz
安装目录/bin添加到环境变量

阅读全文 »