一个计算机技术爱好者与学习者

0%

Win10安装Ubuntu

1. 前言

有几十个文件需要批量重命名,按照以前的做法,郝同学都是把文件上传到linux服务器,然后使用rename命令进行重命名,然后再拷贝回来。具体参考《批量重命名和批量替换字符串》

但是,这次需要重命名的文件太大了,上传不方便,所以想到了另外一个思路:在Win10中使用Linux命令。要使用Linux命令,最简单的是使用git bash,但是只有ls、vim等简单命令。cygwin也可以模拟Linux环境,但是命令也有限。记得微软说Win10集成了Linux,所以决定试试,下面进行记录。

参考文档:

2. 安装Ubuntu

1、Win+S,打开搜索,输入“启用或关闭Windows功能”。

2、勾选“适用于 Linux 的 Windows 子系统”,点击确定,然后重启电脑。

3、Shift+右键,打开Powershell,输入bash,会提示访问Microsoft Store安装Linux。

4、访问Microsoft Store,选择Ubuntu,点击进行安装。

5、安装完成后,在Powershell中再次输入bash,即可进入ubuntu的shell,第一次进入会提示设置用户名和密码,这里设置用户名为voidking。

至此,ubuntu on windows就安装完成了。使用方法和正常的ubuntu一模一样,nice。当然也有不同的地方,比如c盘对应的目录为/mnt/c/,d盘对应的目录为/mnt/d/

3. 配置SSH

从Powershell进入bash,很难用,比如无法复制粘贴。所以,我们需要配置SSH,以便使用xshell访问。

1、切换root用户并设置密码

1
2
sudo -i
passwd

2、安装ssh服务
apt-get install openssh-server

3、vim /etc/ssh/sshd_config,如下修改:

1
2
3
4
5
6
7
8
# line 13, uncomment and change
Port 3422
# line 15, uncomment
ListenAddress 0.0.0.0
# line 32, uncomment and change
PermitRootLogin yes
# line 56, change
PasswordAuthentication yes

4、重启ssh
service ssh restart

如果报错:
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key

处理方法为:

1
2
3
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key

5、ubuntu中本地测试
ssh voidking@localhost -p 3422

6、windows中xshell连接
新建会话,主机填写127.0.0.1,端口填写3422,用户名密码是之前安装ubuntu时设置的。

4. 开机自启动SSH

重启计算机后,发现无法通过ssh连接ubuntu,原来是因为ubuntu on windows默认不会开机自启动ssh服务。所以需要把ssh服务添加到开启自启动。
直接使用systemctl enable ssh命令,无效,所以需要把ssh服务添加到开机自启动脚本,参考ubuntu18.04配置rc.local

1、创建rc-local.service链接
ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service

2、vim /etc/systemd/system/rc-local.service,添加:

1
2
3
[Install]
WantedBy=multi-user.target
Alias=rc-local.service

3、创建rc.local
vim /etc/rc.local,添加:

1
2
3
#!/bin/bash
/etc/init.d/ssh start
exit 0

4、添加执行权限
chmod 755 /etc/rc.local

5、重启ubuntu
无法使用reboot等命令重启ubuntu on windows,所以需要重启win10。

然而,重启后依然无效!看来是ubuntu on windows与纯净的ubuntu还是有些差别,参考在Windows子系统(WSL)中配置开机自启动服务进行处理。

1、win10中进入启动目录
Win+R输入shell:startup,回车

2、创建wls_rclocal.vbs,内容为:

1
2
set ws=wscript.createobject("wscript.shell")
ws.run "C:\Windows\System32\bash.exe -c 'sudo /etc/rc.local'",0

3、登录ubuntu,创建sudoers文件
vim /etc/sudoers.d/rc-local,内容如下:

1
voidking * = (root) NOPASSWD: /etc/rc.local

4、重启win10,使用xshell登录ubuntu,成功。

5. 后记

最终的效果,比预想的还要好。两个系统可以同时使用,这样就集成了windows和linux两者的优点,完美。