WSL Tips

作者: ScratchPad | 来源:发表于2019-07-14 21:39 被阅读0次

WSL简介

对于Windows Subsystem for Linux,可以参考Windows Subsystem for Linux (WSL) 原理介紹了解一些基本的背景知识

文件系统的介绍可以参考:
https://blogs.msdn.microsoft.com/wsl/2016/06/15/wsl-file-system-support/

WSL的文件系统.png
VolFs is used to mount the VFS root directory, using %LocalAppData%\lxss\rootfs as the backing storage by default.

我们以ubuntu-18.04为例,通过的Microsoft Store中的ubuntu的app只能默认将ubuntu分发安装到系统盘,而且上面提到的using %LocalAppData%lxss\rootfs as the backing storage,因此这里需要考虑到windows系统分区的影响,/, /root, /home的可用空间受rootfs所在Windows分区的限制,目前WSL也没有提供有效的途径让我们可以在其他的Windows分区创建一个VolFs分区来挂载,因此才有了需要将ubuntu移动到非系统分区的需求。

如何将ubuntu分发移动到非系统盘

想要达到我们这里的目的目前有两种方式:

  1. 通过LxRunOffline工具直接安装到任意的位置
    具体方法可以参考how-to-install-wsl-distros-on-external-disks-1d22

  2. 通过wsl.exe --exportwsl.exe --import移动已有的分发
    在通过控制面板->启用或关闭Windows功能开启适用于Linux的Windows子系统功能后,在C:\Windows\system32目录下就有了wsl.exe

在以管理员身份运行cmd.exe打开windows的命令行后,我们以wsl --list --running可以查看正在运行的wsl分发,wsl --list是查看所有的分发,最好的做法是通过wsl --terminate <DistritubtionName>的方式来先关闭相关的分发,以免后续造成不必要的问题。

图片.png
  1. 这里的Ubuntu-18.04就是DistributionName,我们通过wsl --export <DistributionName> <FileName>来导出这个分发
  2. 执行完后我们再通过wsl --unregister Ubuntu-18.04来注销这个分发,以便避免存在重复的分发,当然也可以不这样做,只是下面的命令需要指定一个不同的DistributionName
  3. 然后通过wsl --import <DistributionName> <InstallLocation> <FileName>来导入之前export完的分发

如何配置wsl -import后的实例,默认以非root账户启动

在注册表中找到HKEY_USERS\xxx\Software\Microsoft\Windows\CurrentVersion\Lxss

图片.png
通过修改Lxss下的实例配置中的DefaultUid的值来修改wsl默认的用户
图片.png
可用的目标值可以通过在wsl中运行cat /etc/passwd获取,我这里用的是1000
图片.png
通过右键DefaultUid->修改,会弹出如下的对话框
图片.png
这里需要注意进制问题,1000对应的16进制数是3e8

Windows terminal相关的配置

{
    "globals" : 
    {
        "alwaysShowTabs" : true,
        "defaultProfile" : "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",//我们把这里修改成下面对应WSL配置中的guid的值,让windows terminal默认启动wsl,而不是cmd或者powershell
        "initialCols" : 120,
        "initialRows" : 30,
        "keybindings" : 
        [
           ...
        ],
        "requestedTheme" : "system",
        "showTabsInTitlebar" : true,
        "showTerminalTitleInTitlebar" : true
    },
    "profiles" : 
    [
        ...,
        {
            "acrylicOpacity" : 0.5,
            "closeOnExit" : true,
            "colorScheme" : "Campbell",
            "commandline" : "wsl.exe -d Ubuntu-18.04",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 10,
            "guid" : "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",
            "name" : "Ubuntu-18.04",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory":"//wsl$/Ubuntu-18.04/home/ubuntu",// 这里指定wsl启动后,默认的目录位置
            "useAcrylic" : false
        }
    ],
    "schemes" : 
    [
       ...
    ]
}

参考链接

https://github.com/microsoft/WSL/issues/449

相关文章

网友评论

      本文标题:WSL Tips

      本文链接:https://www.haomeiwen.com/subject/xfbikctx.html