第一个问题
wsl子系统用户名发生改变
该图中,原本的用户名为shao@xiaoxuan,现在为shao@DemoHost
- 分析问题:
(一)首先搞清楚形如shao@xiaoxuan
这样的字符串含义:@
符号之前和之后的部分分别表示用户名和主机名。
shao
是用户名,表示当前登录用户的标识。
xiaoxuan
是主机名,表示当前计算机或系统的名称。在WSL中,主机名通常是由Windows计算机名生成的。
因此,shao@xiaoxuan
表示用户shao
当前登录到主机名为xiaoxuan
的系统。这种格式通常在命令行提示符或者终端中用来显示当前用户和主机名。
(二)查阅资料,发现应该是/etc/wsl.conf
系统文件出问题了,不知道怎么出的问题,我从来没动过系统文件。 - 解决问题:
(一) 通过sudo vim /etc/wsl.conf
命令进入文件内部:
vim
命令操作方法如下:
vim命令是Linux系统编辑系统内文件的命令,通常进入文件后,需使用i
(insert)键,开启插入模式,即可在文件内写入、删除字符;使用esc
键即可推出插入模式;退出插入模式后,使用:q
可退出该文件;使用:wq
即可保存在文件中的编辑内容,并退出该文件。
(二)红色方框内容含义如下:
hostname = DemoHost: 设置 WSL 2 的主机名为 “DemoHost”。
generateHosts = false: 禁止 WSL 自动生成 /etc/hosts 文件。一般情况下,WSL 会自动根据主机名生成 /etc/hosts 文件,但在这里被设置为禁用。
generateResolvConf = false: 禁止 WSL 自动生成 /etc/resolv.conf 文件。同样,WSL 会自动生成 /etc/resolv.conf 文件用于 DNS 配置,但在这里被设置为禁用。
此处,我们修改hostname
为xiaoxuan
,退出文件后,关闭wsl窗口,在命令行窗口或者powershell窗口中输入wsl.exe --shutdown
,重启wsl。重启之后,发现用户名改回来了!
第二个问题
- ifconfig无法使用,尝试安装
net-tools
工具包,但遇到网络错误。(这其实是网络错误,不是镜像错误,也不是按照提示说的加入--fix-missing
或者更新apt
等方法解决)
- 分析问题:
该问题与第一个问题捆绑出现,根源都在系统文件中。分别为/etc/hosts
文件、/etc/resolv.conf
文件。这其实都是网络问题,IP和DNS问题,这些应该都是自动生成。我查看一下我的/etc/resolv.conf
文件,是空的,说明没有自动生成。 - 解决问题:将第一个问题图中红色方框标记部分修改为:
generateHosts = true:
generateResolvConf = true
修改完毕,退出文件后,关闭wsl窗口,在命令行窗口或者powershell窗口中输入wsl.exe --shutdown
,重启wsl。重启之后,通过sudo apt install net-tools
命令安装net-tools
工具包结果如下:
安装成功之后,通过ifconfig
命令可查看IP。
- 替代解决方法:如果仅查看Ip,而不需要解决网络问题,可通过
ip addr
,ip address
等命令查看。
第三个问题
Windows与WSL子系统之间无法直接互传文件了
尝试copy 命令,遇到问题:
- 分析问题:
明显的用户权限问题, - 暂时未解决问题:
使用命令ls -ld /home/shao
查看文件夹权限,发现:
解释:
d
: 这是一个目录。
rwx
: 所有者(即用户 shao)有读、写和执行权限。
r-x
: 组用户有读和执行权限,但没有写权限。
---
: 其他用户没有任何权限。
修改:
命令:chmod g+w /home/shao
允许其他用户将文件复制到这个目录,将组用户的写权限添加到该目录。
然而,没有什么结果。没有用!! - 暂时替代方案:
使用cp
命令和unzip
命令。复制和解压Windows系统内的文件。具体地:
# cp windows目录 Linux目录,wsl系统使用/mnt可访问Windows系统,/e为E盘。
cp /mnt/e/your/path /home/shao/your/path
# unzip 命令,unzip 压缩文件 -d 解压路径
unzip /home/shao/your/path/**.zip -d home/shao/your/path
之前无法使用copy命令,猜测可能是权限问题。也有可能网络问题,我网络修复好了之后,以管理员模式,打开wsl子系统,就可以使用cp
命令,希望对大家有帮助!!!