一. wsl简介
1. wsl和wsl2的区别
wsl需要把linux命令翻译为windows命令,性能差一些。
wsl2直接使用linux内核,不需要翻译,性能好,但开销相对大一点,因为需要多运行一个hyper-v虚拟机 (并非完整的虚拟机,是轻量虚拟化) 让linux内核执行。
2. wsl的架构
- wsl2, linux内核和Windows内核并行
- wsl1:可以看到没有使用linux内核,只是通过兼容层对Windows和Linux命令转换
二. 安装wsl
1. 打开适用于Linux…和虚拟机平台
2. 下载wsl2内核更新包
链接
3. 下载linux分发
即linux镜像,该镜像提供完整的用户空间工具、包管理器和文件系统结构。供wsl的linux内核使用
链接
4. 安装windows终端
链接
5. 将分发的版本改为wsl2
使用
wsl --set-default-version 2
或
wsl --set-version < distro name > 2
参考链接
参考链接
6. 查看分发版本
七. 更换镜像源
修改vim /etc/apt/source.lists
阿里云镜像站
三. 出现问题
1. 手动下载后执行 Add-AppxPackage .\Ubuntu.appx后没有看到安装的镜像
在开始菜单的“最近添加”程序列表中找到ubuntu。双击完成安装。
或者在设置->应用和程序中搜索
链接
2. 设置http代理
设置好后不要用ping命令测试,ping是icmp包而不是http包。
我们使用curl -I https://www.google.com, curl -I http://www.google.com
3. 开启ssh
- ps -e | grep ssh 查看是否有ssh服务
- sudo apt-get install openssh-server 下载ssh服务
- service ssh status 查看ssh服务状态
- sudo ufw enable|disable 开启或关闭防火墙,这里需要disable。或者sudo ufw allown 22
- sudo vim /etc/ssh/sshd_config 将里面的PermitRootLogin no 改为yes
PasswordAuthentication 改为 yes - service sshd restart
4. 关于文件互传的问题
- 只要在linux上安装了openssh-server就安装好了sftp和scp服务器,就可以在Windows上使用scp和sftp进行文件互传。sftp和scp是基于ssh连接的。
5. 关于设置samb自启动的问题
1. 初始化进程为systemd时
(1)在启动的时候系统会执行
/etc/systemd/system/graphical.target.wants/或/etc/systemd/system/multi-user.target.wants/或中的脚
来初始化进程。graphical.target.wants表示图形化,multi-user.target.wants表示字符界面。当然系统启动不单单会执行上诉目录的脚本也会执行其他目录的脚本,比如/lib/systemd/system/目录中的某些脚本。
(2)/etc/systemd/system/graphical.target.wants/和/etc/systemd/system/multi-user.target.wants/中的每个脚本都是链接文件。同名原文件在/lib/systemd/system/目录中。
(3)graphical.target.wants依赖于multi-user.target.wants,在执行关于graphical的脚本之前会先执行和multi-user相关的脚本
(4)在/etc/systemd/system/multi-user.target.wants/中存在对samb服务的启动脚本
2. 初始化进程为init时
(1)启动脚本存放在/etc/rc*.d/中,/etc/rc*.d/中的所有文件都是链接文件,原文件在/etc/init.d中。
(2)比如/etc/rc3.d/就是runlevel3字符界面的开机启动脚本。里面包含了samb的启动脚本
3. 如何添加自启动
- 先使用pstree查看初始化进程。
-
systemd
- 添加启动:systemctl enable samb
- 取消自启动 systemctl disable samb
-
init
- 添加启动 : sudo update-rc.d samb defaults
- 取消自启动:sudo update-rc.d samb remove
六. 关于wsl网络连接的问题
-
当断网时
因为wsl中不支持NetworkManger,wsl中的网络由Windows的wslhost.exe管理,我们只能通过ip link set eth0 down和ip link set eth0 up进行网络接口的重启,但是这样做并没有任何用。 -
我们在离线情况下,尝试在官网上下载deb包使用dpkg -i手动安装ifupdown命令,但是由于依赖的版本过低问题,最后还是不得不重启wsl使用apt包管理器进行下载。
Ubuntu软件包官网
3. 所以最后的解决方案是,重启wsl。
七. 使用grep进行文件查找注意事项
- 使用grep查找时一定注意加"“,比如grep -i -l “abc*” demo,因为加”"可以使用正则表达式。
- 根据文件内容查找文件
(1)grep -r “abc” /demo/
虽然-r选项可以递归查找目录中所有文件,但是无法查找链接文件,不推荐使用,我们用(2)替代
(2)grep -l -i “abc” /demo/*
-l 表示只显示文件名,-i 忽略大小写。