WSL 环境配置

本博客记录我配置[[WSL]]环境的过程及一些踩坑点。Windows系统为Windows11 21H2 home edition,安装Ubuntu 22.04.1 LTS (GNU/Linux 5.15.90.1-microsoft-standard-WSL2 x86_64)。

更换ubuntu存储位置

因为目前用的电脑是512G,分开了C盘和D盘。WSL的默认安装位置为C盘,所以希望将之后Linux安装的各种环境配置包转移到D盘。

我主要参考了这篇WSL2文件迁移到D盘

查看当前wsl

首先查看当前安装的wsl版本(--list也可以写为-l

1
wsl --list
会弹出
1
2
Windows Subsystem for Linux Distributions:
Ubuntu (Default)

导出

1
wsl --export Ubuntu d://ubuntu.tar

注销原wsl

1
wsl --unregister Ubuntu

注销后,原C盘的空间被释放

导入

先在D盘新建文件夹存放wls文件,然后将上面导出的ubuntu.tar文件,通过wsl的import命令导入,指定导入的wsl文件夹和上面导出的tar文件。导入也需要等待。

1
wsl --import Ubuntu d:\wsl\Ubuntu D:\ubuntu.tar

导入成功后,启动

1
wsl

发现是root用户登陆的,在powershell中执行命令,修改默认登陆账户

1
Ubuntu config --default-user ubuntu

更换源镜像

由于众所周知的原因,在Linux中用官方镜像下载特别慢,这里是适用于Ubuntu 22.04 Jammy的官方镜像,在这里作为存档。

1
2
3
4
5
6
7
8
9
10
11
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted
deb http://archive.ubuntu.com/ubuntu/ jammy universe
deb http://archive.ubuntu.com/ubuntu/ jammy-updates universe
deb http://archive.ubuntu.com/ubuntu/ jammy multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu jammy-security main restricted
deb http://security.ubuntu.com/ubuntu jammy-security universe
deb http://security.ubuntu.com/ubuntu jammy-security multiverse

我们将其替换为清华源,使用nano编辑/etc/apt/sources.list:

1
sudo nano /etc/apt/sources.list

利用方向键和shift选定所有内容,按ctrl+k删除后,在windows中复制以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

报错Ign解决办法

这时,我试图运行安装更新程序

1
sudo apt update
却发现报错,之后换回官方源,使用阿里源,将https改为http都没有发挥作用
1
2
3
4
Ign:1 https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease
Ign:2 https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates InRelease
Ign:3 https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-backports InRelease
Ign:4 https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-security InRelease

之后在这篇博客的评论下面找到了解决办法

使用nano修改resolv.conf

1
sudo nano /etc/resolv.conf
添加下面三行
1
2
3
nameserver 8.8.8.8  
nameserver 127.0.0.1
options edns0

就顺利解决了问题

/etc/resolv.conf

/etc/resolv.conf 是一个在Unix和Linux操作系统中的配置文件,用于配置系统如何进行域名解析。简单来说,当您尝试访问一个域名(例如 www.google.com)时,您的系统会查看 /etc/resolv.conf 文件来确定如何将这个域名转换为一个IP地址。

这个文件通常包含以下信息:

  1. nameserver: 指定用于解析域名的DNS服务器的IP地址。一个resolv.conf文件可以有多个nameserver条目,系统会按照它们在文件中出现的顺序来使用它们。

    例如:

    1
    2
    nameserver 8.8.8.8
    nameserver 8.8.4.4

    上述配置指定了Google的公共DNS服务器。

  2. domain: 定义本地域名。这是一个单一的域,用于短名称到FQDN(完全限定域名)的转换。

  3. search: 定义在解析短名称时应搜索的域名列表。如果没有给出FQDN,系统会尝试在这些域后面添加短名称来进行解析。

    例如:

    1
    search example.com example.org

  4. options: 为域名解析器设置各种选项。

在现代Linux系统中,/etc/resolv.conf文件可能是由NetworkManagersystemd-resolved或其他网络配置工具自动生成的。因此,直接编辑这个文件可能不是一个好主意,因为它的内容可能会被覆盖。如果您需要更改DNS设置,最好使用系统的网络配置工具或相应的配置文件。

nameserver

nameserver 8.8.8.8nameserver 127.0.0.1/etc/resolv.conf 文件中指定了用于DNS解析的服务器。这两个地址有不同的含义和用途:

  1. nameserver 8.8.8.8:

    这是Google的公共DNS服务器地址。当您使用这个地址作为DNS服务器时,您的系统会将所有DNS查询发送到Google的公共DNS服务进行解析。Google的公共DNS是一个免费的、全球性的DNS解析服务,旨在提供更快、更可靠的网页浏览体验。

  2. nameserver 127.0.0.1:

    127.0.0.1 是一个特殊的IP地址,称为本地回环地址或简称为localhost。当您使用这个地址作为DNS服务器时,您的系统会将DNS查询发送到在本地计算机上运行的DNS服务器。这通常用于以下情况:

    • 在本地计算机上运行了一个DNS缓存服务器,如dnsmasqunbound
    • 使用本地DNS服务器进行特殊的域名解析,例如在开发环境中。
    • 使用某些VPN或隐私工具,这些工具在本地提供DNS解析服务。