- 服务器配置
重启,按f10进入bios(不同机子进入bios方式不同,比如我这里是f2/del)
在boot里,把你的u盘放第一个,然后save & exit
选Ubuntu(safe graphics)
选English,然后Install Ubuntu
选English,然后continue
选Minimal installation, 勾下面的install third-party
这里可以先选择erase disk来格式化,然后continue,再back,接着选Something else
通过减号,使得一个盘只剩一个free space, 如果是新的盘,需要先new partition
点击加号,分配swap,一般分配2倍内存
点击加号,分配efi,2g就够了
点击加号,分配boot,2g就够了
剩下的给root
点击安装
后续步骤就一路continue就行
最后安装好了会提示你拔了u盘,再点击重启
ustc:https://mirrors.ustc.edu.cn/help/ubuntu.html
修改/etc/apt/sources.list为下面的内容
其中,jammy表示ubuntu22,focal表示ubuntu20,bionic表示ubuntu18
注意修改jammy
# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
然后更新
sudo apt update && sudo apt -y upgrade
卸载原来的
sudo apt-get update
sudo apt-get remove --purge nvidia*
# 如果有以前的版本,那就卸载
sudo chmod +x *.run
sudo ./NVIDIA-Linux-x86_64-384.59.run --uninstall
禁用nouveau驱动
sudo nano /etc/modprobe.d/blacklist.conf
在最后添加
blacklist nouveau
options nouveau modeset=0
保存,退出
输入
sudo update-initramfs -u
重启
输入
lsmod | grep nouveau
如果什么都没有输出,则代表禁用nouveau驱动成功
禁用X-Window服务
sudo service lightdm stop
安装gcc,dkms
sudo apt-get install build-essential dkms -y
安装驱动
sudo chmod +x NVIDIA-Linux-x86_64-410.104.run
sudo ./NVIDIA-Linux-x86_64-410.104.run -no-nouveau-check -no-opengl-files
如果显示32位,那不要装
如果提出x服务,可以不装
其他的选ok就行
测试
nvidia-smi
选择好了之后,执行红色箭头这一句,或者浏览器下载也行(不要执行后面的sh)
sudo chmod a+x cuda_11.7.1_515.65.01_linux.run
sudo ./cuda_11.7.1_515.65.01_linux.run --no-opengl-lib
sudo nano ~/.bashrc
在末尾添加
export CUDA_HOME=/usr/local/cuda-11.7
export LD_LIBRARY_PATH=/usr/local/cuda-11.7/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.7/bin:$PATH
保存退出
source ~/.bashrc
测试
nvcc -V
tar -zxvf cudnn-10.0-linux-x64-v7.5.0.56.tgz
sudo cp cuda/include/*.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/*.h /usr/local/cuda/lib64/libcudnn*
sudo ldconfig
如果提示xxx is not a symbolic link
注意修改下面的路径,分别要改cuda-11.2,so.8.1.1
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.1.1 /usr/local/cuda-11.2/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo apt-get install net-tools cron curl -y
编写脚本
nano ~/test.sh
修改用户名密码
#!/bin/bash
USER_NAME="your username"
PASSWORD="your password"
SERVICE="internet"
# Returns a string in which all non-alphanumeric characters except -_.~ have
# been replaced with a percent (%) sign followed by two hex digits.
#
# Example
# -------
# easier: echo http://url/q?=$( rawurlencode "$args" )
# faster: rawurlencode "$args"; echo http://url/q?${REPLY}
rawurlencode() {
local string="${1}"
local strlen=${#string}
local encoded=""
local pos c o
for (( pos=0 ; pos<strlen ; pos++ )); do
c=${string:$pos:1}
case "$c" in
[-_.~a-zA-Z0-9] ) o="${c}" ;;
* ) printf -v o '%%%02x' "'$c"
esac
encoded+="${o}"
done
echo "${encoded}" # You can either set a return variable (FASTER)
REPLY="${encoded}" #+or echo the result (EASIER)... or both... :p
}
USER_NAME=`rawurlencode \`rawurlencode $USER_NAME\``
PASSWORD=`rawurlencode \`rawurlencode $PASSWORD\``
SERVICE=`rawurlencode \`rawurlencode $SERVICE\``
while true
do
captiveReturnCode=`curl -s -I -m 10 -o /dev/null -s -w %{http_code} http://www.google.cn/generate_204`
if [ "${captiveReturnCode}" = "204" ]; then
echo `date`
echo "You are already online!"
sleep 60
continue
fi
loginPageURL=`curl -s "http://www.google.cn/generate_204" | awk -F \' '{print $2}'`
loginURL=`echo ${loginPageURL} | awk -F \? '{print $1}'`
loginURL="${loginURL/index.jsp/InterFace.do?method=login}"
queryString=`echo ${loginPageURL} | awk -F \? '{print $2}'`
queryString=`rawurlencode \`rawurlencode $queryString\``
if [ -n "${loginURL}" ]; then
authResult=`curl -s -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.91 Safari/537.36" -e "${loginPageURL}" -b "EPORTAL_COOKIE_USER_NAME=; EPORTAL_COOKIE_PASSWORD=; EPORTAL_COOKIE_SERVER=; EPORTAL_COOKIE_SERVER_NAME=; EPORTAL_AUTO_LAND=; EPORTAL_USER_GROUP=; EPORTAL_COOKIE_OPERATORPWD=;" -d "userId=${USER_NAME}&password=${PASSWORD}&service=${SERVICE}&queryString=${queryString}&operatorPwd=&operatorUserId=&validcode=&passwordEncrypt=false" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" "${loginURL}"`
echo `date`
echo $authResult
fi
unset loginURL
sleep 20
done
保存退出
chmod a+x ~/test.sh
执行(注意修改test.sh和test.log的路径)
nohup bash /home/icml007/test.sh >/home/icml007test.log 2>&1 &
crontab -e
第一次输入这个命令回让你选择编辑器
在最后面添加(注意修改test.sh和test.log的路径)
这条命令表示开机/重启时在后台执行test.sh,所有输出都输出到test.log
@reboot nohup bash /home/icml007/test.sh >/home/icml007/test.log 2>&1 &
conda config --set show_channel_urls yes
win修改C:/Users/XXX/.condarc
linux修改~/.condarc
直接修改
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/r
- https://mirrors.bfsu.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.bfsu.edu.cn/anaconda/cloud
msys2: https://mirrors.bfsu.edu.cn/anaconda/cloud
bioconda: https://mirrors.bfsu.edu.cn/anaconda/cloud
menpo: https://mirrors.bfsu.edu.cn/anaconda/cloud
pytorch: https://mirrors.bfsu.edu.cn/anaconda/cloud
simpleitk: https://mirrors.bfsu.edu.cn/anaconda/cloud
# (option begin
create_default_packages:
- pip
- setuptools
# option end)
最后
conda clean -i
python -m pip install --upgrade pip
pip config set global.index-url https://mirrors.bfsu.edu.cn/pypi/web/simple
windows的host在C:\Windows\System32\drivers\etc\host
linux的host在/etc/hosts
把下面这段复制到host里(windows可以考虑用vscode修改)
140.82.114.3 github.com
108.160.167.165 github.global.ssl.fastly.net
185.199.110.153 assets-cdn.github.com
linux下可以选择
sudo sh -c 'sed -i "/# GitHub520 Host Start/Q" /etc/hosts && curl https://raw.hellogithub.com/hosts >> /etc/hosts'
接着刷新dns
windows
ipconfig /flushdns
linux
sudo apt install nscd
sudo systemctl restart nscd
可以先试试把代理工具关了
如果不行 win+r, 输入inetcpl.cpl 勾上TLS 1.1,TSL1.2
下载下面这4个
MesloLGS NF Regular.ttf
MesloLGS NF Bold.ttf
MesloLGS NF Italic.ttf
MesloLGS NF Bold Italic.ttf
win可以直接安装
linux
sudo apt-get install ttf-mscorefonts-installer fontconfig -y
在字体所在目录打开终端
sudo mkdir -p /usr/share/fonts/MesloLGS
sudo cp *.ttf /usr/share/fonts/MesloLGS
sudo chmod -R 777 /usr/share/fonts/MesloLGS
sudo fc-cache -fv
在微软商店
打开windows terminal
设置里
添加新配置文件->新建空配置文件
名称:Anaconda
命令行
%windir%\System32\cmd.exe "/K" D:\Miniconda3\Scripts\activate.bat D:\Miniconda3
D:\Miniconda3\Lib\site-packages\conda\shell\conda_icon.ico
打开安装包(不用卸载之前的)
其他的默认就行
重新打开windows terminal
如果没有也可以手动配置
建议改成MesloLGS NF
sudo apt-get install -y zsh git-core
git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh
cd ~/.oh-my-zsh
zsh oh-my-zsh.sh
chsh -s `which zsh`
重启
cp ~/.zshrc ~/.zshrc.orig
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
chsh -s $(which zsh)
然后
source ~/.zshrc
不过zsh和平常的环境有一点差别,具体的可以看下面
如果你有配置conda,可能会发现没有前面的(base)了
前面是conda所在的路径,记得修改
~/miniconda3/bin/conda init zsh
source ~/.zshrc
设置更新时间
nano ~/.zshrc
source ~/.zshrc
如果你装了cuda
可以从~/.bashrc中复制这3句到 ~/.zshrc
保存,退出
然后
source ~/.zshrc
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
nano ~/.zshrc
修改
ZSH_THEME="powerlevel10k/powerlevel10k"
source ~/.zshrc
然后会叫你设置主题,可以根据自己的喜好设置
设置完了以后想改,可以用这个命令重新设置
p10k configure
分别是自动补全,语法高亮
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
nano ~/.zshrc
改这
把zsh-autosuggestions添加上去
把zsh-syntax-highlighting添加上去
保存,退出
然后
source ~/.zshrc
omz update
sudo apt-get install -y tmux git
cd ~
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .
令<prefix>
表示ctrl
+a
或者ctrl
+b
<prefix> c
表示ctrl
+a
或者ctrl
+b
,然后按c
<prefix> C-c
表示ctrl
+a
或者ctrl
+b
,然后按ctrl
+c
创建一个名为session_name的会话
tmux new -s session_name
列出所有会话
tmux ls
进入已经创建好的名为session_name的会话
tmux attach -t session_name
销毁会话
tmux kill-session -t session_name
起到一个终端中,分屏的作用
<prefix> -
垂直划分pane
<prefix> _
水平划分pane
<prefix> arrow
切换pane,arrow表示方向键
<prefix> m
开/关鼠标模式
C-d
关闭pane,当最后一个没了的话,就会关闭整个会话
<prefix> :
进入命令模式(类似vim),输入detach可以退出会话,但是不关闭
<prefix> C-arrow
改变pane大小,arrow表示方向键
鼠标模式下,直接拖动边框也可以改变pane大小
一个session中可以有多个windows,相当于win的桌面1,桌面2...
<prefix> c
创建window
<prefix> n
跳转第n个window
<prefix> &
退出当前window, 也可以输入exit
<prefix> :
,输入move-window -t session_name
可以将当前window移动到session_name里
更多命令参考: tmux2: Productive Mouse-Free Development
<prefix> :
,输入capture-pane -S -3000
,其中3000表示3000行
接着,<prefix> :
,输入save-buffer filename
,命令就会存储到filename里
如果你的用户是中文(比如某师兄),那就执行这个
win+r,输入
intl.cpl
在git里,选zh_cn和UTF-8
如果没有ifconfig
sudo apt-get install net-tools
然后
ifconfig
sudo apt-get install -y openssh-client openssh-server
设置开机启动
sudo systemctl enable ssh
修改配置
sudo nano /etc/ssh/sshd_config
添加一行
PermitRootLogin yes
sudo systemctl restart ssh
本地远程
ssh username@remote_ip_address
按照上面的步骤会发现每次都需要输入密码,这里通过生成密钥来解决
在本地生成密钥
可以考虑用git bash
ssh-keygen -t rsa
# ⽣成 id_rsa 和 id_rsa.pub, 并且⼀般存储在 ~/.ssh/下
ssh-keygen -b 4096 -t rsa
# 这个则是更安全的版本
第一个:key存储位置
第二个:私钥密码,默认无密码,如果设置了私钥密码,在进行免密登录时需要输入私钥密码
第三个:再输入一遍私钥密码
ssh-copy-id username@remote_ip_address
如果有权限问题,可以考虑执行下面这个
sudo chmod 700 .ssh
sudo chmod 600 .ssh/authorized_keys
安装插件
点击左侧远程,然后ssh的设置
接着选user下的
接着配置
Host 任意名字
HostName 远程ip
User 远程用户名
我这里配了2个
刷新一下
连接
选择项目
这个选则相信
之后这里修改,远程也会改
tensorboard --logdir="xxx" --host remote_ip
rsync -av -r --exclude preTraModel --exclude wandb --exclude workspace ../xmuda_mink_Contrast_DDP_DM user8@10.24.80.68:/data3/user8/xmuda_series
rsync -av -r --exclude preTraModel --exclude wandb --exclude workspace ../GeneralizedLoss-Counting-Pytorch-semi 另一台服务器用户名@另一台服务器IP地址:/另一台服务器存储地址
pip install gpustat
可以用这个命令来查看gpu状态
watch -c -n1 gpustat -cpu --force-color -P
为了方便,也可以起别名
alias watch='watch -c -n1 gpustat -cpu --force-color -P'
alias cls='clear'
git clone git://github.com/wting/autojump.git ~/autojump
cd ~/autojump
python install.py
关闭terminal,然后在开一个
nano ~/.zshrc
plugins中添加autojump
然后在下面额外加一句
[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh
保存,退出
source ~/.zshrc
sudo apt-get install vim -y
配置
vim ~/.vimrc
输⼊下列参数,保存即可,默认C语⾔代码可以按control+p补全关键字
syntax on
set number
set cindent
set smartindent
set showmatch
set ruler
:set mouse=a
<7是因为后面的插件目前不支持7
pip install jupyter 'notebook<7'
设置密码
jupyter notebook password
文件在~/.jupyter/jupyter_server_config.json
生成配置文件
jupyter notebook --generate-config --allow-root
修改生成的配置文件
(有的版本不是ServerApp, 而是Notebook)
c.ServerApp.allow_root = True
c.ServerApp.ip = '*'
c.ServerApp.password = 'xxxx'
c.ServerApp.port = 8888
c.ServerApp.notebook_dir = ''
c.ServerApp.open_browser = False
c.ServerApp.disable_check_xsrf = True
c.ServerApp.allow_origin = '*'
c.ServerApp.allow_remote_access = True
保存
启动
jupyter notebook --allow-root
安装
pip install --upgrade jupyterlab jupyterlab-pygments 'nbconvert>=7' 'mistune>=2'
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
conda install nb_conda
我们使用ssh链接实验室的机器的时候,一般在实验室内部使用的同一个局域网连接,一般使用的是192.168.xx.xx的网络,但是如果我们在家里,使用的家里的网络也想连接实验室的机器的话,那么就需要一个tcp的转接服务器才可以。frpc就是这样一个免费的转接服务器,他使用自己的域名,转发tcp或者http请求,使得我们可以链接到实验室内部的机器的指定的端口的程序。
【当然不限于ssh,它只是转发端口的请求,重要的是绑定的端口号。】比如说
-
在windows上绑定3306端口,那么就可以实现windows的远程桌面程序,在家里就可以远程实验室机器的图形界面...再也不用担心todesk奇葩的网速了
-
绑定tensorBoard的发射端口6006,那么在家里就可以浏览炼丹的最新进度
-
...
OpenFRPC 这个网速更快
还有其他的免费工具,比如花生壳
这是两个免费提供FRPC功能的平台,它是可以提供免费的转接流量,每天签到会送流量,每天大概是4GB的流量。我们以OpenFRPC为例,构建我们的公网链接
在OpenFRPC 注册,一般需要实名认证
本质上启动的时候是: frpc程序 + 一个配置文件 =就可以启动一个隧道,推送指定端口的tcp请求
- windows平台可以下载那个win启动器,这个启动器是包含登录和frpc功能的一个ui式exe程序,下载完毕之后直接安装,然后登录OpenFRPC的账号密码,在程序内部直接启动,frpc隧道就可以了。
- 当然也可以直接下frpc启动器,对应的是windows系统的那个标签下的下载文件,这个文件本意上是需要用户设置服务程序的。大致步骤其实和Linux机器的差不多。
-
下载程序文件到机器上
这是我自己的机器上下载好的/usr/local/bin/frpc_linux_amd64启动器,注意给定的可以执行权限
chmod 777 frpc_linux_amd64
frps是NetFRPC的启动器,后面跟着是它的配置文件。
-
每一隧道需要一个单独的配置文件,文件名可以随意起,我有两个隧道,所以有两个配置文件。
frpc-ssh.ini #就是一个隧道的配置文件
-
编写配置文件
将这个配置文件中的内容复制进去
假如说你的配置文件是/usr/local/bin/frpc-ssh.ini, 那么复制进去就会像这样
-
配置服务,可以让它开机启动
服务就是一个启动脚本,名字可以随意起,但是需要把文件创建在/etc/systemd/system目录下
我的服务是/etc/systemd/system/frpc-ssh.service下面是这个服务文件的内容,注意修改里面的启动文件路径和启动配置文件路径
[Unit] # 服务名称,可自定义 Description = frpc-ssh-server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frpc的命令,需修改为您的frpc的安装路径 -c 后面紧跟着的是启动配置文件的路径 ExecStart =/usr/local/bin/frpc_linux_amd64 -c /usr/local/bin/frpc-ssh.ini [Install] WantedBy = multi-user.target
-
启动隧道服务
sudo systemctl start frpc-ssh.service sudo systemctl enable frpc-ssh.service sudo systemctl status frpc-ssh.service
看到服务运行正常,启动器的输出无报错。就算是隧道启动成功。不成功,可能你需要回头检查检查哪里出错了。
-
服务使用的命令样例
sudo systemctl start frpc-ssh.service # 启动frpc-ssh服务 sudo systemctl enable frpc-ssh.service #设置 frpc-ssh.service为开机启动 sudo systemctl status frpc-ssh.service # 查看服务启动状态和日志 sudo systemctl restart frpc-ssh.service # 重启服务 sudo systemctl stop frpc-ssh.service # 停止服务
找到你刚才启动的隧道,查看这里的链接地址就可以实现ssh远程登录了
我使用的是xshell登录ssh,填写主机地址和远程端口,这样就可以链接你刚才的主机了。
也可以使用ssh,其中连接地址不包括端口
ssh 用户名@连接地址 -p 端口
也可以使用vscode远程主机,这样就可以在家里调试代码,修改程序了。非常的流畅
在wandb注册
在User Settings中找到自己的API keys
在本地登录, 会让你输入api key
wandb login
示例代码
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
import os
import wandb
data_save_dir = '/data/wandb'
os.makedirs(data_save_dir, exist_ok=True)
wandb.init(
project="my-test-project", # 项目名字
name="first", # 项目底下每一次训练的名字
dir=data_save_dir # 文件保存的位置
)
# 配置的参数(可以把超参数放在这里)
wandb.config.update({
"learning_rate": 0.001,
"epochs": 100,
"batch_size": 128
})
for i in range(10):
if i & 1:
# 前面的字典是纵坐标数据,step是横坐标
wandb.log({'i': i, 'j': i + 1}, step=i)
TODO
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
为了防止后面权限有问题,执行下面这个
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
用管理员打开powershell
wsl --install
重启
用管理员打开powershell
启用适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
安装这个(也有可能你安装过了)
https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
继续打开powershell(管理员)
wsl --set-default-version 2
接着
wsl -l -o
wsl --install -d Ubuntu-18.04
- snipaste (在微软商城)
- 剪切板(win+v)
- notion
- Grammarly
- QuillBot
- Semantic Scholar
- Connected Papers