wsl(2) -- ubuntu24.04配置

1. 常用脚本及别名配置

修改的文件内容参考另一篇文章常用bash脚本

  1. 修改~/.bashrc,在文件末尾追加以下内容。
# Add by user
export MYTOOLS=$HOME/tools
export MYBINS=$HOME/bins
export PATH=$MYBINS:$PATH
# 系统默认的是C.UTF-8,使用zh_CN.UTF-8中文输出乱码
#export LANG=zh_CN.UTF-8
export PS1='[\u@\h \W]\$ '
export DESKTOP="/mnt/c/Users/$USER/Desktop"

# Some alias defined in /etc/baseprofile
alias cdd="\cd $DESKTOP"
alias mc='make clean'
alias mm='make clean; make -j8'
alias mt='make tags'
alias mq='make qt'
alias mf='make files'
alias md='make debug'

test -f $MYBINS/bins.sh && . $MYBINS/bins.sh
test -f $MYTOOLS/tools.sh && . $MYTOOLS/tools.sh
  1. 创建~/tools目录。
$ find ~/tools -type f
/home/xflm/tools/gdb/csky/init.gdb
/home/xflm/tools/gdb/host/init.gdb
/home/xflm/tools/gdb/arm/init.gdb
/home/xflm/tools/bash/del.sh
/home/xflm/tools/bash/grv.sh
/home/xflm/tools/bash/agg.sh
/home/xflm/tools/bash/pbin.sh
/home/xflm/tools/bash/bin_update.sh
/home/xflm/tools/bash/gr.sh
/home/xflm/tools/bash/cdirs.sh
/home/xflm/tools/bash/gg.sh
/home/xflm/tools/bash/kgg.sh
/home/xflm/tools/bash/cgg.sh
/home/xflm/tools/bash/grw.sh
/home/xflm/tools/bash/cd.sh
/home/xflm/tools/bash/ndel.sh
/home/xflm/tools/tools.sh

2. 更换软件源

ubuntu默认软件源为外网地址,国内访问可能比较慢,可以考虑更换为国内的镜像地址。另外ubutu24.04开始配置镜像源的文件有所变化,从/etc/apt/sources.list变更为/etc/apt/sources.list.d/ubuntu.sources

# 备份原文件
$ sudo cp /etc/apt/sources.list.d/ubuntu.sources  /etc/apt/sources.list.d/ubuntu.sources.bak
# 将源文件中的源地址注释掉,更换为国内的源地址
$ sudo vi /etc/apt/sources.list.d/ubuntu.sources
# 更新软件源
$ sudo apt-get update
$ sudo apt-get upgrade

阿里云

Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

清华源

Types: deb
URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

中科大源

Types: deb
URIs: http://mirrors.ustc.edu.cn/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

网易163源

Types: deb
URIs: http://mirrors.163.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

3. 安装常用软件

# tree 打印目录树的工具
# universal-ctags vim打标签的工具,直接使用ctags安装会提示选择一个指定的版本
# gcc gcc-multilib gdb g++主机编程工具
# make 编译工具
# gcc-arm-none-eabi arm编译工具链,apt安装的工具链中没有gdb程序,可以去https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads下载安装包进行安装
# usbutils 包含一些usb的工具,比如lsusb用于查看已接入的usb设备
# iptables 防火墙配置程序
# net-tools 包含一些网络工具,比如ifconfig
# unzip zip解压工具
sudo apt install tree universal-ctags gcc gcc-multilib g++ gdb make usbutils iptables net-tools unzip

4. 定义一些windows软件的别名

wsl默认没有安装桌面功能,有时候需要使用一些桌面程序,比如notepad++BCompare,可以考虑使用windows中安装的程序。

  1. 修改$MYTOOLS/bash/bin_update.sh内容如下。
#!/bin/bash

mkdir -p $MYBINS

# 路径转换程序
PATH_TOOL=""

# git-bash提供了cygpath命令
if [ ! -z "$(which cygpath 2> /dev/null)" ]; then
	PATH_TOOL="cygpath -aw"
fi

# wsl提供了wslpath命令
if [ ! -z "$(which wslpath 2> /dev/null)" ]; then
	PATH_TOOL="wslpath -w"
fi

func_link()
{
	NUM=${#FILEOLD[@]}
	for ((i=0; i<NUM; i++)); do
		if [ ! -x "$EXE_PATH/$PREFIXOLD${FILEOLD[$i]}$SUFFIXOLD" ]; then
			echo "$EXE_PATH/$PREFIXOLD${FILEOLD[$i]}$SUFFIXOLD": does not exist or cannot be executed
			exit 1
		fi
		echo -e "#!/bin/bash\nPATH=\"$EXE_PATH\":$""PATH $STARTCMD \"$EXE_PATH/$PREFIXOLD${FILEOLD[$i]}$SUFFIXOLD\" \"$""@\"" > "$MYBINS/$PREFIXNEW${FILENEW[$i]}$SUFFIXNEW"
		if [ $? -ne 0 ]; then
			echo "$MYBINS/$PREFIXNEW${FILENEW[$i]}$SUFFIXNEW": can\'t create
			exit 1
		fi
		chmod +x "$MYBINS/$PREFIXNEW${FILENEW[$i]}$SUFFIXNEW"
	done
}

# 调用windows应用程序时使用PATH_TOOL命令将wsl/git-bash中的路径转换为windows下的路径
func_link_path_tool()
{
	# 路径转换程序由脚本自动检测,wsl为wslpath,git-bash为cygpath
	if [[ -z "$PATH_TOOL" ]]; then
		echo "no path conversion program"
		exit 1
	fi

	NUM=${#FILEOLD[@]}
	for ((i=0; i<NUM; i++)); do
		if [ ! -x "$EXE_PATH/$PREFIXOLD${FILEOLD[$i]}$SUFFIXOLD" ]; then
			echo "$EXE_PATH/$PREFIXOLD${FILEOLD[$i]}$SUFFIXOLD": does not exist or cannot be executed
			exit 1
		fi

# 使用cat命令输出到文件,看起来清晰一些
cat << EOF > "$MYBINS/$PREFIXNEW${FILENEW[$i]}$SUFFIXNEW"
#!/bin/bash

ARGS=("\$@")

NUM=\${#ARGS[@]}
for (( i=0; i<NUM; i++ )); do
	if [[ -e "\${ARGS[\$i]}" ]]; then
		ARGS[\$i]="\$($PATH_TOOL "\${ARGS[\$i]}")"
	fi
done

PATH="$EXE_PATH":"\$PATH" $STARTCMD "$EXE_PATH/$PREFIXOLD${FILEOLD[$i]}$SUFFIXOLD" "\${ARGS[@]}"
EOF
		if [ $? -ne 0 ]; then
			echo "$MYBINS/$PREFIXNEW${FILENEW[$i]}$SUFFIXNEW": can\'t create
			exit 1
		fi
		chmod +x "$MYBINS/$PREFIXNEW${FILENEW[$i]}$SUFFIXNEW"
	done
}

# windows自带的画图工具,可用于显示wsl中的图片
EXE_PATH="/mnt/c/Users/xflm/AppData/Local/Microsoft/WindowsApps"
PREFIXOLD=""
PREFIXNEW=""
SUFFIXOLD=".exe"
SUFFIXNEW=""
STARTCMD=""
FILEOLD=(mspaint)
FILENEW=(mspaint)
func_link_path_tool

# windows自带的EDGE浏览器,可直接浏览wsl中的html文件
EXE_PATH="/mnt/c/Program Files (x86)/Microsoft/Edge/Application"
PREFIXOLD=""
PREFIXNEW=""
SUFFIXOLD=".exe"
SUFFIXNEW=""
STARTCMD=""
FILEOLD=(msedge)
FILENEW=(msedge)
func_link_path_tool

# 文本编辑器,便于CTRL+C
EXE_PATH="/mnt/d/Program Files/Notepad++"
PREFIXOLD=""
PREFIXNEW=""
SUFFIXOLD=".exe"
SUFFIXNEW=""
STARTCMD=""
FILEOLD=(notepad++)
FILENEW=(gedit)
func_link_path_tool

# 文件对比程序,也可用于git difftool
EXE_PATH="/mnt/d/apps_no_install/Beyond Compare"
PREFIXOLD=""
PREFIXNEW=""
SUFFIXOLD=".exe"
SUFFIXNEW=""
STARTCMD=""
FILEOLD=(BCompare)
FILENEW=(bcompare)
func_link_path_tool

# windows下安装的福昕阅读器
EXE_PATH="/mnt/d/Program Files (x86)/Foxit Software/Foxit PDF Editor"
PREFIXOLD=""
PREFIXNEW=""
SUFFIXOLD=".exe"
SUFFIXNEW=""
STARTCMD=""
FILEOLD=(FoxitPDFEditor)
FILENEW=(pdfr)
func_link_path_tool

# windows下安装的pycharm
EXE_PATH="/mnt/d/Program Files/JetBrains/PyCharm Community Edition 2024.2.1/bin"
PREFIXOLD=""
PREFIXNEW=""
SUFFIXOLD=".exe"
SUFFIXNEW=""
STARTCMD=""
FILEOLD=(pycharm64)
FILENEW=(pycharm)
func_link_path_tool

# WSL中下载的arm工具链
EXE_PATH="/home/xflm/tools/exe/arm-none-eabi/bin"
PREFIXOLD="arm-none-eabi-"
PREFIXNEW="arm-none-eabi-"
SUFFIXOLD=""
SUFFIXNEW=""
STARTCMD=""
FILEOLD=(gcc ar as gdb g++ gcov readelf objcopy objdump ld nm size ranlib strip)
FILENEW=(gcc ar as gdb g++ gcov readelf objcopy objdump ld nm size ranlib strip)
func_link
  1. 执行该脚本会在$MYBINS目录下生成对应的脚本,比如$MYBINS/gedit内容如下。
#!/bin/bash

ARGS=("$@")

NUM=${#ARGS[@]}
for (( i=0; i<NUM; i++ )); do
	if [[ -e "${ARGS[$i]}" ]]; then
		ARGS[$i]="$(wslpath -w "${ARGS[$i]}")"
	fi
done

PATH="/mnt/d/Program Files/Notepad++":"$PATH" "/mnt/d/Program Files/Notepad++/notepad++.exe" "${ARGS[@]}"
  1. 修改$MYTOOLS/tools.sh中定义了以下内容,用于将windows程序放到后台运行。
# nohup不能和command一起使用,会提示找不到命令,也不适合使用which(centos没
# 有该命令)和whereis(git-bash没有该命令)
mspaint()     { nohup $MYBINS/$FUNCNAME "$@" > /dev/null 2>&1 & }
msedge()      { nohup $MYBINS/$FUNCNAME "$@" > /dev/null 2>&1 & }
gedit()       { nohup $MYBINS/$FUNCNAME "$@" > /dev/null 2>&1 & }
bcompare()    { nohup $MYBINS/$FUNCNAME "$@" > /dev/null 2>&1 & }
pdfr()        { nohup $MYBINS/$FUNCNAME "$@" > /dev/null 2>&1 & }
# --temp-project创建一个临时工程,便于自动补全
pycharm()     { nohup $(which $FUNCNAME) --temp-project "$@" > /dev/null 2>&1 & }
  1. ~/.bashrc会加载$MYBINS/tools.sh,之后可以执行$ gedit ~/.bashrc命令,效果即为在windows的notepad++程序里打开了wsl中的~/.bashrcwslpath会自动进行路径的转换\\wsl.localhost\Ubuntu-24.04\home\xflm\.bashrc,确保notepad++能正常打开。

5. 添加vim配置

参考vim(1) – 环境配置,进行配置。

6. 添加git配置

参考git(1) – 环境配置,进行配置。有一点不同是,WSL中的bcompare是一个函数,我们需要修改git的配置文件如下。

[difftool "bc4"]
	cmd = $MYBINS/_BCompare $LOCAL $REMOTE

上一篇:wsl(1) – win11环境配置
下一篇:wsl(3) – USB使用
目录:所有文章合集

参考

Ubuntu 24.04 抢先体验换国内源 清华源 阿里源 中科大源 163源

### 如何在WSL2上安装Ubuntu 24.04 #### 准备工作 确保Windows已更新到最新版本,并启用了适用于Linux的Windows子系统(WSL)[^1]。 #### 设置WSL2作为默认版本 通过PowerShell命令可以将WSL2设为默认版本: ```powershell wsl --set-default-version 2 ``` 此操作会使得之后安装的所有发行版都基于WSL2运行环境。 #### 安装特定版本的Ubuntu 由于微软商店中的Ubuntu应用通常不是最新的长期支持(LTS)版本,为了获取指定版本如Ubuntu 24.04 LTS,则需借助其他方法。一种常见做法是从Microsoft Store下载通用的Ubuntu镜像后,在线升级至所需的具体版本;另一种更直接的方法是利用`wsl --import`指令导入预先准备好的Ubuntu 24.04 VHD文件或tarball压缩包[^2]。 对于前者,可以通过如下步骤实现在线升级: - 首先从Microsoft Store安装任意一个可用的Ubuntu版本; - 启动该Ubuntu实例并执行常规初始化过程; - 更新现有软件包列表 `sudo apt update && sudo apt upgrade -y`; - 添加官方旧版本库以便访问较老但稳定的发布版本; - 使用do-release-upgrade工具逐步迁移到目标版本,例如Ubuntu 24.04 LTS. 然而,考虑到效率与便捷性,推荐采用后者即直接导入预构建映像的方式。可以从互联网找到由社区成员分享的Ubuntu 24.04 WSL专用映像链接,按照指引完成下载解压后再使用上述提到的`wsl --import`命令将其注册成为新的WSL分发版[^3]。 #### 导入自定义Ubuntu映像示例 假设已经获得了名为`ubuntu_24.04.wsl.tar.gz`的Tarball格式映像文件,放置于C:\temp目录下,那么可以在管理员权限下的PowerShell窗口里输入下列语句来创建一个新的Ubuntu 24.04 WSL环境: ```powershell cd C:\temp tar -xf ubuntu_24.04.wsl.tar.gz -C . wsl --import Ubuntu-24.04 .\rootfs.ext4 --version 2 ``` 这里`.\\rootfs.ext4`代表解压后的根文件系统的路径名,而最后一步则是指定了所要建立的新WSL分布式的名称以及使用的内核模式[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值