基于Vmware的类wsl体验的虚拟机调教之旅
wsl 在操作体验上让我非常的满意,然而两代均有一些缺点,一代说到底并非完全的linux内核,运行某些程序(nmap,docker)会产生奇怪的问题,二代通过hyper-v完全虚拟化解决了这个问题,但随之而来的方便性就大打折扣,并且与市面上大部分的商业虚拟机(手游模拟机)产生冲突,原因还是那个上古难题——hyper-v与Vmware虚拟化无法共存(这个问题在Vmware16.1得到了解决,但是鬼知道厂商啥时候跟上呢),于是
前言
由于要解决Hyper-V与Vmware共存的问题,那么只能够舍弃wsl2,wsl如何从2代更改回1代本文不详细讲述,下文wsl无特殊解释通指1代wsl。
wsl一个最大的方便之处在于可以通过在命令行下输入wsl命令进入子系统,并且可以通过管道符在wsl命令(linux命令)和windows命令行之间来回切换,但这个完全可以用powershell脚本来解决。
我个人使用的是manjaro,并配置了zsh,如果没有配置zsh可能需要更改一下脚本
配置ssh别名
在powershell下,通过notepad $profile
编辑profile文件,我们先预定义几个变量
$name = "your name"
$mjrip = 'your ip'
$mjr = $name+"@"+$mjrip+":"
#如果启动目录在默认windwos32下,就切换到用户目录
if ((Get-Location|Out-String).contains("System32")){
cd ~;
}
mjr可以自行替换为喜欢的变量名
设置Vmware虚拟机可以访问windows上的文件夹
在vmware中右键想要设置的虚拟机,打开“设置”选项
如图设置,在共享文件夹中启用文件夹共享,然后在文件夹中添加要添加的文件夹或者盘符,这里我添加了除C盘以外的所有盘符,然后点击确定,在虚拟机的/mnt/hgfs
中就可以看到共享的盘符,这样我们就实现了在linux下操作windows文件的能力。
自动跳转
然后我们继续添加一个功能,让我们的虚拟机可以在登陆时自动跳转到windows对应在linux上的位置
function mjr{
$t = (('cd /mnt/hgfs/'+(Get-Location)) -replace ":","")
$t = $t -replace "\\","/";
if ((Get-Location | Out-String).contains("C:\Users\")){
if ($args.count -gt 0){
ssh $name@$mjrip -t "cd ~;${args};";
}else{
ssh $name@$mjrip -t "cd ~;zsh --login;";
}
}else{
if ($args.count -gt 0){
ssh $name@$mjrip -t "${t};${args};";
}else{
ssh $name@$mjrip -t "${t};zsh --login;";
}
}
}
这样,我们就可以通过在任意位置打开终端并输入mjr来进入linux对应的目录里开始工作了。
配置SMB服务
参见
https://www.cnblogs.com/misfit/p/10603277.html
配置免密登陆
原理
这个东西就单纯讲一下原理,具体教程参见其他博客,用ssh-keygen生成一对公钥和私钥,把公钥复制到目标虚拟机的~/.ssh/authorized_keys中即可。
创建秘钥对
在powershell中输入如下命令
ssh-keygen -t rsa -C "your_email@example.com"
cd ~/.ssh/
explorer.exe .
会发现其中有几个文件,我们要关注只有id_rsa.pub
。
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2020/6/29 3:43 668 .ssh.rar
-a--- 2020/12/20 21:12 229 config
-a--- 2020/6/15 0:50 1675 id_rsa
-a--- 2020/6/15 0:50 408 id_rsa.pub
-a--- 2020/12/20 21:12 2315 known_hosts
将id_rsa.pub
中的内容复制到目标虚拟机的~/.ssh/authorized_keys
中。如果目标虚拟机没有这个文件就创建一个。
版权声明:本文为原创文章,版权归星夜的蓝天所有。
本文链接:http://poi.ac/archives/51/
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。转载时须注明出处及本声明