← 返回首页|Linux 笔记

// notes / linux

Linux 笔记

记录 Linux 开发环境配置、日常使用技巧与服务器运维经验。以实用为导向,覆盖 WSL2、Shell 脚本、性能监控等方向。
注:以下内容在 AI 辅助下整理,命令示例和配置建议经过了人工验证。

第一章WSL2 & Ubuntu 开发环境搭建

1. WSL2 是什么、为什么用

WSL2(Windows Subsystem for Linux 2)是 Windows 内置的 Linux 虚拟化方案,相比虚拟机更轻量,文件系统互通,能直接跑 Linux 二进制程序。

对我而言最实用的几点:

  • /mnt/c/ 挂载 C 盘,Linux 和 Windows 文件系统直接互通
  • 能跑 Docker,不需要 Docker Desktop 的额外开销
  • VSCode 的 WSL 远程插件体验接近原生
  • 比完整虚拟机省内存,启动秒级
⚠️ 如果机器是 Windows 10 且版本较老(19041 之前),建议先升级。WSL2 对内核版本有要求,老版本装起来很折腾。

2. WSL2 安装(PowerShell 一行搞定)

以管理员身份打开 PowerShell,执行:

wsl --install

这条命令会自动完成:启用 WSL 可选功能、安装 WSL2 内核、设为默认版本、安装 Ubuntu 作为默认发行版。

安装完成后重启电脑,首次进入 Ubuntu 会要求设置用户名和密码(输入密码时终端不显示字符,正常的)。重启后在开始菜单找 "Ubuntu" 或在 PowerShell 里输入 wsl 进入。

💡 如果提示"无法解析服务器地址"或卡在下载,大概率是网络问题。可从 Microsoft 官方文档 手动下载离线包安装。

3. Ubuntu 基础配置

3.1 换国内源(apt 加速)

Ubuntu 默认源在国外,apt update 经常超时。换成清华源:

# 备份原文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源(Ubuntu 22.04 / jammy)
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list

# 更新索引
sudo apt update && sudo apt upgrade -y

Ubuntu 24.04(Noble)的 sources.list 格式变了(DEB822),直接编辑 /etc/apt/sources.list.d/ubuntu.sources 改 URL。

3.2 安装基础工具包

sudo apt install -y \\
  build-essential \\
  curl wget git \\
  vim tmux \\
  htop tree \\
  net-tools iproute2 \\
  software-properties-common \\
  ca-certificates gnupg lsb-release

这几个包覆盖了 90% 的日常需求:编译工具链、下载、Git、编辑器、进程监控、网络诊断。

3.3 配置 Git

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
git config --global core.editor "vim"
git config --global pull.rebase false

4. Windows 与 WSL 文件系统互通

4.1 从 WSL 访问 Windows 文件

Windows 各盘符自动挂载在 /mnt/ 下:

cd /mnt/c/Users/你的用户名/
code /mnt/c/Users/你/Desktop/test.py

4.2 从 Windows 访问 WSL 文件

在文件资源管理器地址栏输入 \\wsl$\Ubuntu\home\用户名\,或在 WSL 里输入 explorer.exe . 直接打开当前目录。

4.3 坑:跨文件系统性能差异

/mnt/c/ 下跑 Linux 工具(pip installnpm install)会比 WSL 原生文件系统慢 5-10 倍。

💡 最佳实践:开发项目放在 ~/projects/(WSL 原生),不要用 Windows 文件系统跑 Linux 工具链。VSCode 用 Remote WSL 插件打开项目,不要直接打开 \\wsl$\... 路径。

5. 开发工具链安装

5.1 Python 环境(pyenv + venv)

# 安装 pyenv 编译依赖
sudo apt install -y make build-essential libssl-dev zlib1g-dev \\
  libbz2-dev libreadline-dev libsqlite3-dev \\
  libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev

# 安装 pyenv
curl https://pyenv.run | bash

# 添加到 ~/.bashrc(按提示加这三行)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

source ~/.bashrc

# 安装 Python
pyenv install 3.11.8
pyenv global 3.11.8

5.2 VSCode + WSL 远程开发

在 Windows 侧 VSCode 安装 WSL 扩展,然后在 WSL 终端里输入 code .,VSCode 会自动连接 WSL 环境。左下角显示 "WSL: Ubuntu" 即连接成功,终端/解释器/linter 全部在 WSL 里跑。

5.3 Docker in WSL2(不装 Docker Desktop)

# 清理旧版本(避免冲突)
sudo apt remove docker docker.io containerd runc 2>/dev/null

# 安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 免 sudo
sudo usermod -aG docker $USER
# 重新登录后生效

# 验证
docker run hello-world

6. 常见问题 & 踩坑记录

WSL2 占用内存过高

WSL2 默认会吃满宿主机内存。在 %USERPROFILE%\.wslconfig(Windows 侧)限制:

[wsl2]
memory=8GB
swap=4GB
localhostForwarding=true

修改后执行 wsl --shutdown 重启生效。

apt update 时 GPG 密钥错误

现代 Ubuntu(22.04+)正确处理方式——不要用已废弃的 apt-key

curl -fsSL https://example.com/KEY.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
echo "deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/ stable main" \\
  | sudo tee /etc/apt/sources.list.d/example.list

WSL IP 每次重启后变化

WSL2 是 NAT 网络,IP 会变。访问 WSL 里的服务直接用 localhost,WSL2 会自动端口转发。如果转发失效,确认 .wslconfig 里有 localhostForwarding=true