wsl安装和配置

wsl是让我从ubuntu切换到windows的重要原因。但是由于最近重装windows系统发现了很多问题。特地总结了一下。

第一部分: 安装

网上很多教程都是各种功能开启,还要下载微软提供的一些工具。但是至少我在高版本的windows 10上是很简单的。首先是用用管理员权限打开power shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 这里是列出wsl可以安装的版本
PS C:\Users\timo> wsl -l -o
以下是可安装的有效分发的列表。
请使用“wsl --install -d <分发>”安装。

NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
openSUSE-42 openSUSE Leap 42
SLES-12 SUSE Linux Enterprise Server v12
Ubuntu-16.04 Ubuntu 16.04 LTS
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS

# 安装指定的版本
PS C:\Users\timo> wsl --install -d Ubuntu-20.04

第二部分: 迁移wsl

接下来就是等待安装完成。感觉是不是很简单。可是默认微软wsl是安装在C盘的, 这样导致我哪天系统恢复重装,那我ubuntu里的东西是不是没了。虽然我本来就是大部分目录都是外挂到windows下的,但是还是有很多工具在自己的目录下的,丢失了会比较可惜。所以我们必须用工具进行迁移。

1
C:\Users\timo\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_XXXXXX

原先我一直是使用LxRunOffline这个工具进行迁移的,但是当时我记得我的ubuntu子系统是用windows商店安装的,没有任何问题,但是这次是wsl里直接安装的。问题我看还有人提了对应的issue,但是作者估计还得看看。

https://github.com/DDoSolitary/LxRunOffline/issues/195

那这样就没办法了吗? 当然不是,wsl自己有导入导出的功能,只是原先不知道还能指定目录导入,看了这篇文章发现原来还可以这样做。
https://blog.csdn.net/weixin_37210821/article/details/115440535

1
2
3
4
5
6
7
8
9
10
11
# 列出有哪些子系统
PS C:\Users\timo> wsl -l

# 把ubuntu-20.04导出到我指定的目录
PS C:\Users\timo> wsl --export Ubuntu-20.04 d://wsl/ubuntu-20.04.tar

# 注销原先的系统
PS C:\Users\timo> wsl --unregister Ubuntu-20.04

# 导入系统,并命名为Ubuntu-20.04LTS, 新系统的目录也重新指向了。
PS C:\Users\timo> wsl --import Ubuntu-20.04LTS D://wsl/ubuntu-20.04LTS D://wsl/ubuntu-20.04.tar

第三部分: 设置默认用户

你以为这样就万事大吉了吗? 出现了新问题,这个子系统启动的用户居然都是root,虽然我可以su到其他账户,但是默认root让人比较不爽。网上教程都是这样的(包括上面那篇文章里):

1
Ubuntu config --default-user user

但是这个在我这边是执行不了的。放狗搜索了一下,找到了这个解法:修改注册表
https://cn.kevinmcgowan.org/303153-how-to-set-default-user-NDQJEO-article

  • 采用 regedit 并导航到键: HKEY_CURRENT_USER/SOFTWARE/Microsoft/Windows/CurrentVersion/Lxss
  • 检查其子项以找到在项目中具有正确名称的分发 DistributionName
  • 创建或修改名为DWORD的项目 DefaultUid 并将其设置为默认用户的用户ID(uid)。这里root用户是id 0 而第一个用户ID是1000(0x3e8).
    作者写的很详细了,这里唯一要注意的就是最后一条id,需要改成 10进制,然后设置为 1000

好了,又踩完一个坑,后面居然又来一个,ubuntu默认目录居然是windows system32,这个也太无语了。

第四部分: 设置起始目录

在windows terminal的设置里将启动目录设置为如下就可以了。当然自己看下就明白含义了。

1
\\wsl$\Ubuntu-20.04LTS\home\timo

同时为了跟windows的磁盘交互性能,建议使用wsl 1

1
2
3
> wsl --set-version  Ubuntu-20.04LTS  1
正在进行转换,这可能需要几分钟时间...
转换完成。

第五部分: 展示

好了,windows terminal + wsl + ubuntu + zsh, 作为sa的基本顺手的工具就这样完成了。 因为使用oh-my-zsh,所以基本不需要什么设置。

这个是windows termial的一些设置
https://docs.microsoft.com/zh-cn/windows/terminal/
https://www.sitepoint.com/windows-terminal/

具体的配色方案可以参考
https://github.com/mbadolato/iTerm2-Color-Schemes/tree/master/windowsterminal