Feiyu Blog

Back

个人深度学习工作站配置指南Blur image

1. 硬件篇#

  • CPU:AMD Epyc 7k62
  • GPU:Tesla V100-SXM2-16GB
  • 内存:Samsung 64GB 4DRx4 PC4-2666V *4共256GB
  • 主板:Tyan S8030GM4NE_2T
  • 固态硬盘:PBlaze6 6531 3.84T
  • 电源:振华 Leadex III 1000W ATX3.1
  • 散热器:CPU:U14S AMD-SP3 GPU:串联360水冷
  • 机箱:追风者PK620PC

2. 系统篇#

2.1 安装Ubuntu 22.04系统#

  1. 在官网下载Ubuntu镜像:Ubuntu 22.04.5 LTS (Focal Fossa),选择Desktop Image版本,得到.iso的镜像文件。

  2. Windows下使用Ventoy工具制作系统启动盘,将.iso镜像文件写入U盘。

  3. 将U盘插到服务器上,开机按del键(具体什么键跟主板型号有关)选择启动项进入临时的Ubuntu系统,在图形界面中选择Install Ubuntu,所有配置都可以使用默认的,改一下用户名和密码即可。建议使用英文作为默认语言。

    安装过程中会联网下载一些软件包更新,可以直接点skip掉,在安装好系统之后再手动更新也是一样的。

  4. 进入系统后设置一下root账户密码:

sudo passwd root
sh
  1. 同时为了避免每次sudo都要输入密码,这里配置一下visudo:
sudo visudo
sh

visudo 命令会使用系统默认的文本编辑器打开 /etc/sudoers 文件。注意,不要改动其他内容,因为这可能会导致系统问题。

在打开的 sudoers 文件中找到这样一行:

%sudo   ALL=(ALL:ALL) ALL
plaintext

在这一行的下方添加以下内容,用于指定某个用户执行 sudo 命令时无需输入密码:

username ALL=(ALL) NOPASSWD: ALL
plaintext

其中,username 是你希望免密执行 sudo 命令的用户名。

在完成编辑后,保存并退出文本编辑器。如果你使用的是默认的文本编辑器 nano,按下 Ctrl + X 键,然后按 Y 键确认保存,并按回车键确认文件名。

在终端中,尝试执行一个需要管理员权限的命令,例如:

sudo ls /root
bash

如果你配置正确,将无需输入密码,即可执行该命令。

2.2 配置国内镜像软件源#

备份原有源文件#

在修改源之前,最好先备份一下原来的源文件,以防出现问题可以恢复。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
bash

选择国内源并修改源文件#

打开 /etc/apt/sources.list 文件进行编辑,可以使用 nano 或 vim 等文本编辑器。

sudo vim /etc/apt/sources.list
bash

将文件中的内容替换为以下阿里云源的内容:

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
cpp

清华源

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-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-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
cpp

更新源#

保存修改后的源文件后,更新源以使其生效:

sudo apt update
bash

Ubuntu有线网络显示已连接,但出现问号:

有线连接均已获取到IP,但暂时不能解析域名。IPv4和IPv6的DNS都设置的自动连接,有网络信号。

**解决方法:**将IPv4的DNS手动设置为114.114.114.114,断开网络后重新连接即可解决。如果依然不行,将IPv4的DNS还原成自动,网络即可恢复。

2.3 安装Ast2500集显驱动 (可选)#

暂时未能解决分辨率低的问题

  1. run “uname -r” to get the kernel version

  2. disable “secure boot” in BIOS option

  3. select proper deb in Linux_DRM_1.15.1_4/DKMS and run sudo dpkg -i ast-drm-linux6.5.deb for example

  4. if it is failed due to dependency issue/报错“subprocess installed post-installation script returned error exit status 10”, run command:

sudo rm /var/crash/ast-dkms.0.crash
sudo rm /var/lib/dpkg/info/ast-dkms*
sudo apt-get -f install
sudo dpkg -i ast-drm-linux6.5.deb
sudo reboot
bash

2.4 配置SSH & 远程桌面#

纯净安装的系统里面默认没有开启SSH,我们手动安装一下。

  1. 安装ssh:
sudo apt install ssh
bash

会自动安装好很多依赖包并启动服务,完成之后用XShell等软件就可以SSH登录服务器了

  1. 安装xrdp

Xrdp 是一个微软远程桌面协议(RDP)的开源实现,它允许我们通过图形界面控制远程系统。这里使用RDP而不是VNC作为远程桌面,是因为Windows自带的远程桌面连接软件就可以连接很方便,另外RDP在Windows下的体验非常好,包括速度很快(因为压缩方案做得比较好),可以直接在主机和远程桌面之间复制粘贴等等。

安装过程如下:

sudo apt install xrdp
bash

安装完成xrdp 服务将会自动启动,可以输入下面的命令验证它:

sudo systemctl status xrdp
bash

默认情况下,xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它仅仅对ssl-cert用户组成语可读,所以需要运行下面的命令,将xrdp用户添加到这个用户组:

sudo adduser xrdp ssl-cert  
sudo systemctl restart xrdp
bash

在桌面打开Settings应用,在Sharing中开启Remote Desktop和Remote Control选项,并设置远程桌面的账号密码。设置完成后Log Out,否则在使用 XRDP 远程连接 Ubuntu 时会遇到黑屏问题。

要注销,请单击关机图标并选择注销选项。

在系统防火墙上打开端口3389

sudo ufw allow from any to any port 3389 proto tcp
bash

然后使用Windows自带的远程桌面软件连接服务器IP地址或者域名就行了。

建议在Settings-Power中禁用Screen Blank以免黑屏,Settings-Users中关闭Automatic Login,以免本地自动登录造成远程桌面黑屏。

  1. 优化xrdp

桌面外观优化

如果不做任何配置,xrdp桌面是Gnome的原始桌面,没有左侧的任务栏,窗口也没有最小化按钮,等等一些问题。解决方案:

添加配置文件

sudo vim ~/.xsessionrc

添加:

export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
bash

修改完成后重启xrdp服务和系统,否则会黑屏。

sudo systemctl restart xrdp.service
sudo reboot
bash

xrdp画面卡顿优化

调整 Xrdp 配置参数: sudo vim /etc/xrdp/xrdp.ini,添加:

tcp_send_buffer_bytes=4194304
tcp_recv_buffer_bytes=6291456
bash

tcp_send_buffer_bytes, tcp_recv_buffer_bytes 两个参数默认被注释了,注释默认值(32768),根据实际情况进行调整。

调整系统参数:sudo vim /etc/sysctl.conf,添加:

net.core.rmem_max = 12582912
net.core.wmem_max = 8388608
bash

然后执行

sudo sysctl -p
bash

修改完成后重启xrdp服务和系统,否则会黑屏。

sudo systemctl restart xrdp
sudo reboot
bash

2.5 安装zsh#

安装ohmyzsh可以美化Linux shell和Xshell

Windows安装Zsh终端 - 知乎 ↗

zsh 安装与配置,使用 oh-my-zsh 美化终端 | Leehow的小站 ↗

【zsh使用技巧】Linux shell美化,ohmyzsh安装+Xshell美化,体验Mac命令行 - 云牧青 - 博客园 ↗

环境配置#

安装基本工具

# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装 zsh git curl
sudo apt install zsh git curl -y
bash

设置默认终端为 zsh(注意:不要使用 sudo)。

chsh -s /bin/zsh
plaintext

安装 oh-my-zsh

官网:http://ohmyz.sh/。 ↗ 安装方式任选一个即可。

MethodCommand
curlsh -c "$(curl -fsSL https://install.ohmyz.sh/)"
wgetsh -c "$(wget -O- https://install.ohmyz.sh/)"
fetchsh -c "$(fetch -o - https://install.ohmyz.sh/)"
国内curl镜像sh -c "$(curl -fsSL https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"
国内wget镜像sh -c "$(wget -O- https://gitee.com/pocmon/ohmyzsh/raw/master/tools/install.sh)"

注意:同意使用 Oh-my-zsh 的配置模板覆盖已有的 .zshrc。

从.bashrc中迁移配置(可选)#

如果之前在使用bash时自定义了一些环境变量、别名等,那么在切换到zsh后,你需要手动迁移这些自定义配置。

# 查看bash配置文件,并手动复制自定义配置
cat ~/.bashrc
# 编辑zsh配置文件,并粘贴自定义配置
nano ~/.zshrc
# 启动新的zsh配置
source ~/.zshrc
bash

root用户在执行sudo su命令后,再运行上述代码查看、手动复制、粘贴自定义配置。

配置主题#

Oh My Zsh 安装之后,默认使用主题是 robbyrussell,可以修改 .zshrc 配置中的 ZSH_THEME 字段,所有可用主题可参考ohmyzsh官方文档 ↗。

sudo wget -O $ZSH_CUSTOM/themes/haoomz.zsh-theme https://cdn.haoyep.com/gh/leegical/Blog_img/zsh/haoomz.zsh-theme
bash

编辑 ~/.zshrc 文件,将 ZSH_THEME 设为 haoomz。当然你也可以设置为其他主题,例如agnoster、ys、robbyrussell。

vim ~/.zshrc

ZSH_THEME="haoomz"

#使配置生效
source ~/.zshrc
bash

推荐主题

你可以在内置主题样式截图 ↗中查看所有 zsh 内置的主题样式和对应的主题名。这些内置主题已经放在 ~/.oh-my-zsh/themes 目录下,不需要再下载。

cd ~/.oh-my-zsh/themes && ls
bash

安装 Powerlevel10k 主题

根据 What’s the best theme for Oh My Zsh? ↗ 中的排名,以及自定义化、美观程度,强烈建议使用 powerlevel10k ↗ 主题。

  1. 安装并设置字体

首先下载官方推荐的字体 字体下载 ↗,下载MesloLGS NF Regular.ttf MesloLGS NF Bold.ttf MesloLGS NF Italic.ttf MesloLGS NF Bold Italic.ttf四个字体并为所有用户安装即可,如果不使用此字体,会导致很多图标无法显示。

在Xshell菜单栏中选择“文件”—“属性”—“外观”,在右侧进行“字体”设置,选择MesloLGS NF,然后点击“确定”。

  1. 下载Powerlevel10k
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

# 中国用户可以使用 gitee.com 上的官方镜像加速下载
git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
bash

在 ~/.zshrc 设置 ZSH_THEME="powerlevel10k/powerlevel10k"。

在终端执行命令更新 .zshrc 配置文件:

source ~/.zshrc
bash

接下来,终端会自动引导你配置 powerlevel10k。

之后会显示可交互信息进行 p10k 配置,输入 y 之后按照自己的喜好进行配置即可,以后还想重新配置的话,可以执行命令 p10k configure,或修改 p10k 配置文件 ~/.p10k.zsh

配置插件#

通过使用插件,可以让 Zsh 的功能更加强大,Zsh 和 Oh My Zsh 自带了一些实用的插件,也可以下载其他的插件。 如 Zsh 自带 Git 插件,可以在命令行显示 Git 相关的信息,并提供了一些操作 Git 的别名:

gaa = git add --all
gcmsg = git commit -m
ga = git add
gst = git status
gp = git push
text

自动补全

zsh-autosuggestions 插件,可以在你历史指令中找到与你当前输入指令匹配的记录,并高亮显示,如果想直接使用,可以直接通过右方向键补全。 安装插件,在终端分别执行下面两条命令:

cd ~/.oh-my-zsh/custom/plugins

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
bash

插件下载完成之后,编辑 ~/.zshrc 配置文件,修改插件相关配置项:

vim ~/.zshrc

plugins=(git zsh-autosuggestions)
bash

保存退出之后,记得使用命令 source ~/.zshrc 重载配置。该插件生效之后,在使用命令的时候,就会匹配我们使用的命令,右键可以直接补全。

zsh-autosuggestion颜色为白色的问题解决:

  1. 实际上应该是终端类型不支持008这个灰色, 所以直接显示白色了, 直接加到.zshrc中
echo "export TERM=xterm-256color" >> ~/.zshrc
bash

之后source ~/.zshrc之后就可以了

  1. 修改颜色值。编辑.zshrc文件
vim ~/.zshrc
bash

在最后一行追加:

ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=yellow'
bash

可以支持的颜色有限: black , red , green , yellow , blue , magenta , cyan and white

之后source ~/.zshrc之后就可以了

  1. 在github的issue讨论中可以看到这个插件与zsh-syntax-highlighting冲突了。每当source .zshrc的时候就会出现这个情况。建议使用exec zsh来代替。或者注释掉冲突的插件。

目录跳转

Zsh 自带有一个插件 z,可以让我们在访问过的目录中快速跳转,将该插件配置到 ~/.zshrc 文件中即可使用:

vim ~/.zshrc

plugins=(git zsh-autosuggestions z)
bash

保存退出之后,重载配置,随意进入一些目录,之后再使用命令 z 就可以实现快速跳转,支持模糊匹配。

zsh-syntax-highlighting

zsh-syntax-highlighting ↗ 是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。

安装方式:把插件下载到本地的 ~/.oh-my-zsh/custom/plugins 目录

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

vim ~/.zshrc

plugins=(git zsh-autosuggestions z zsh-syntax-highlighting)
bash

extract

oh-my-zsh 内置了 extract 插件。extract 用于解压任何压缩文件,不必根据压缩文件的后缀名来记忆压缩软件。使用 x 命令即可解压文件。

vim ~/.zshrc

plugins=(git zsh-autosuggestions z zsh-syntax-highlighting extract)

x example.tar.xz
bash

2.6 安装ZeroTier进行内网穿透#

1. ZeroTier 的 Linux 安装脚本#

如果依靠 SSL 来验证站点,则可以通过以下方式完成安装:

curl -s https://install.zerotier.com | sudo bash
bash

如果安装了 GPG,则可以使用更安全的选项:

curl -s 'https://raw.githubusercontent.com/zerotier/ZeroTierOne/main/doc/contact%40zerotier.com.gpg' | gpg --import && \
if z=$(curl -s 'https://install.zerotier.com/' | gpg); then echo "$z" | sudo bash; fi
bash

ZeroTier 的 Linux 更新脚本

如果使用上述 ZeroTier 的 linux 安装脚本,它会将 repo 添加到您的系统。使用 apt 或 yum 更新 zerotier-one。

例如,在基于 debian/ubuntu 的系统上( centos 系统需要将 apt 替换为 yum ):

查看可更新软件:

sudo apt update
bash

更新 ZeroTier

sudo apt install zerotier-one
bash

提示 :各客户端的版本应尽量保持一致

2. 加入一个网络#

加入网络

首先在要连接的Linux设备上输入如下命令加入网络,如果连接成功就会出现 200 join OK 的状态码提示:

sudo zerotier-cli join <Network ID>
bash

查看当前连接

在zerotier认证该设备。如果列表中出现 Network ID、Name 说明连接成功,后台分配好IP后再查看IP地址也会出现。

sudo zerotier-cli listnetworks
bash

3. 常用操作#

zerotier 服务 手动启动:

# 返回信息 “200 info ########### 1.10.6 ONLINE”
sudo zerotier-cli status
bash

zerotier 服务 手动启动:

sudo systemctl start zerotier-one.service
bash

zerotier 服务 开机自启动:

# 开机自启动,成功怎返回值的最后会有“enable zerotier-one”字样
sudo systemctl enable zerotier-one.service
bash

zerotier 服务 查看本机连接的网络:上面有提过---查看当前连接

# 查看当前连接的网络,如果列表中出现 Network ID、Name 说明连接成功,后台分配好IP后再查看IP地址也会出现。
sudo zerotier-cli listnetworks
bash

zerotier 服务 加入网络:

# 加入网络命令,操作成功则返回 “200 join OK”
sudo zerotier-cli join <Network ID>
bash

zerotier 服务 断开当前加入的网络:

# 断开网络命令,操作成功则返回 “200 leave OK”
sudo zerotier-cli leave <Network ID>
bash

zerotier 服务 停止

sudo systemctl stop zerotier-one
bash

或者

sudo service zerotier-one stop
bash

zerotier 服务 重启服务

sudo systemctl start zerotier-one
bash

或者

sudo service zerotier-one start
bash

4. 卸载命令#

ubuntu、Debian 卸载 zerotier

sudo dpkg -P zerotier-one
sudo rm -rf /var/lib/zerotier-one/
bash

CentOS、Redhat 卸载 zerotier

sudo rpm -e zerotier-one
sudo rm -rf /var/lib/zerotier-one/
bash

2.7 安装SAMBA服务#

使用smb可以将服务器上的磁盘挂载到Windows。

  1. 安装samba 和samba-common-bin
sudo apt-get install samba samba-common-bin
bash
  1. 配置/etc/samba/smb.conf文件
sudo vim /etc/samba/smb.conf
bash

在最后一行后面加入:

# 共享文件夹显示的名称
[home]
# 说明信息
comment = Fusion WorkStation Storage
# 可以访问的用户
valid users = feiyu,root
# 共享文件的路径
path = /home/feiyu/
# 可被其他人看到资源名称(非内容)
browseable = yes
# 可写
writable = yes
# 新建文件的权限为 664
create mask = 0664
# 新建目录的权限为 775
directory mask = 0775
text

可以把配置文件中你不需要的分享名称删除,例如 [homes], [printers] 等。

运行testparm测试一下配置文件是否有错误,根据提示做相应修改。

  1. 添加登陆账户并创建密码

必须是 linux 已存在的用户:

sudo smbpasswd -a feiyu
bash

然后重启服务即可:

sudo /etc/init.d/samba-ad-dc restart
bash

接下来可以在Windows的网络中发现设备。映射网络驱动器时,输入\\192.168.xx.xx,输入设置的smb用户名和密码即可。

2.8 使用ipmitool管理散热#

华南H12D

安装 ipmitool

sudo apt install ipmitool
bash

查看当前所有风扇转速

sudo ipmitool sdr | grep FAN
bash

提示:

FAN1             | 1200 RPM          | ok
FAN2             | 960 RPM           | ok
FAN3             | 880 RPM           | ok
FAN4             | 880 RPM           | ok
FAN5             | 0 RPM             | nr
FAN6             | 0 RPM             | nr
FAN7             | 0 RPM             | nr
FAN8             | 0 RPM             | nr
plaintext

控制风扇转速百分比

#ssh连接服务器
sudo ipmitool raw 0x0e 0x65 0 50
bash
#其他电脑远程控制BMC
ipmitool.exe -I lanplus -H <BMC_IP> -U admin -P <BMC_Password> raw 0x0e 0x65 0 50
cmd

0x65 后面的0代表手动控速,1为自动(全速)

50代表50%,1代表1%,90代表90%,0x64代表全速

开机时自动设置风扇转速,通过编辑系统的启动脚本实现:

sudo vim /etc/init.d/fan_control.sh
bash

写入以下脚本内容:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          fan_control
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Fan Control
# Description:       This script runs a command at startup.
### END INIT INFO

sudo ipmitool raw 0x0e 0x65 0 60

exit 0
bash

赋予脚本执行权限:

sudo chmod +x /etc/init.d/fan_control.sh
bash

更新启动脚本列表:使用 update-rc.d 命令将脚本添加到系统的启动脚本列表中。

sudo update-rc.d fan_control.sh defaults
bash

重启系统以验证脚本是否在启动时正确运行。

泰安S8030

https://www.chiphell.com/thread-2604921-1-1.html ↗

服务器主板风扇控制由BMC接管,BIOS无法自动控制速度,故使用ipmitool控制转速。

根据BMC固件版本的不同,命令可能略有不同。

BMC Version 6.02.0 BIOS Version V2.03

安装 ipmitool

sudo apt install ipmitool
bash

查看当前所有风扇转速

sudo ipmitool sdr | grep FAN
bash

提示:

CPU_FAN          | 552 RPM           | ok
SYS_FAN_1        | 1242 RPM          | ok
SYS_FAN_2        | 552 RPM           | ok
SYS_FAN_3        | 690 RPM           | ok
SYS_FAN_4        | no reading        | ns
SYS_FAN_5        | no reading        | ns
SYS_FAN_6        | no reading        | ns
SYS_FAN_7        | no reading        | ns
SYS_FAN_8        | no reading        | ns
SYS_FAN_9        | no reading        | ns
SYS_FAN_10       | no reading        | ns
SYS_FAN_11       | no reading        | ns
SYS_FAN_12       | no reading        | ns
bash

控制风扇转速百分比

#ssh连接服务器
sudo ipmitool raw 0x2e 0x44 0xfd 0x19 0x00 0x02 0x01 0x64
bash
#其他电脑远程控制BMC
ipmitool.exe -I lanplus -H <BMC_IP> -U root -P <BMC_Password> raw 0x2e 0x44 0xfd 0x19 0x00 0x02 0x01 0x64
cmd

0x02 is the PWM id from the list attached below in hex from 0x0 - 0x5(对应我上面的结果,CPU_FAN是0x0,SYS_FAN_1是0x02) 0x64 is the PWM duty cycle from 0 - 100 in hex 0x0 - 0x64(速度百分比) Fan List: CPU0_FAN (PWM0) CPU1_FAN (PWM1) SYS_FAN_1(PWM2) SYS_FAN_2(PWM3) SYS_FAN_3(PWM4) SYS_FAN_4(PWM5)

如果上述命令报错,可能是BMC版本不一样导致的,可以尝试以下命令:(我的主板上以下命令不起作用)

Get/Set PWM Duty

#ssh连接服务器
sudo ipmitool raw 0x2e 0x5 0xfd 0x19 0x00 <PWM ID> <0x00-0x64|0xfe|0xff>

#其他电脑远程控制BMC
ipmitool.exe -I lanplus -H <BMC_IP> -U root -P <BMC_Password> raw 0x2e 0x5 0xfd 0x19 0x00 <PWM ID> <0x00-0x64|0xfe|0xff>
bash

PWM ID : 0,1,2,3,4,5

0x00-0x64 = 0 -100% duty

0xfe =Get Current PWM Duty

0xff = 自动控制

Example:

To read current PWM duty cyle:

#ssh连接服务器
sudo ipmitool raw 0x2e 0x05 0xfd 0x19 0x00 0x03 0xfe

#其他电脑远程控制BMC
ipmitool.exe -I lanplus -H <BMC_IP> -U root -P <BMC_Password> raw 0x2e 0x05 0xfd 0x19 0x00 0x03 0xfe
bash

To set PWM duty cycle to 60 on PWM ID 0

#ssh连接服务器
sudo ipmitool raw 0x2e 0x05 0xfd 0x19 0x00 0x00 0x3C

#其他电脑远程控制BMC
ipmitool.exe -I lanplus -H <BMC_IP> -U root -P <BMC_Password> raw 0x2e 0x05 0xfd 0x19 0x00 0x00 0x3C
bash

AutoFan:适配泰安S8030显卡机自动调节系统风扇组件 ↗

ipmitool使用: ↗

1.使用ipmitool查询bmc用户

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> user list
cmd

2.设置bmc用户的用户名

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> user set name 1 admin
cmd

(其中1为要设置的用户ID,admin为要设置的用户名)

3.为指定的bmc用户 id设置密码

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> user set password 1 admin
cmd

(1为用户id,admin为需要设置的密码)

4.禁止指定的用户 id访问 BMC

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> user disable 1
cmd

(禁用用户id为1的用户访问bmc)

5.为指定的bmc用户设置权限级别

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> user priv user_id> privil
cmd

bmc执行冷重启

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> mc reset cold
cmd

bmc热重启

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> mc reset warm
cmd

6.使用ipmitool设置服务器电源策略

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis policy list
cmd

查看当前支持的断电机箱电源策略(always-on,always-off,previous)

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis policy always-off
cmd

将电源策略设置为电源恢复时保持 off状态

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis policy previous
cmd

将电源策略设置为电源恢复时返回到原先的状态。

7.使用ipmitool设置服务器开机启动项

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis bootdev
cmd

查看当前服务器支持的启动项

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis bootdev pxe
cmd

设置服务器从pxe网络启动

8.ipmitool工具 power 指令,可以开机、关机、重启、查看当前状态

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power
cmd

查看当前服务器支持的power 选项

选项说明:

power status 返回当前服务器电源状态

power on 启动服务器电源

power off 关闭服务器电源

power cycle 服务器关机后重启,等同于给服务下电

power reset 服务器硬重启

9.使用ipmitool查看服务器上电时间

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power chassis poh
ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power chassis restart_cause
cmd

(查看服务器最后一次重启的原因)

10.使用ipmitool工具点亮服务器标识ID灯

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power chassis identify
cmd

11.使用ipmitool工具查看设置bmc IP

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power lan print 1
cmd

(查看1通道ip)

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power lan set 1 ipsrc static
cmd

(设置1通道ip为静态)

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power lan set 1 ipaddr 192.168.xx.xx
cmd

(设置1通道ip)

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power lan set 1 netmask 255.255.255.0
cmd

(设置1通道子网掩码)

ipmitool.exe -H 192.168.xx.xx -I lanplus -U root -P <Your_IPMI_Password> chassis power lan set 1 defgw ipaddr 192.168.xx.yy
cmd

(设置1通道默认网关)

2.9 安装编译环境#

sudo apt install build-essential cmake git
bash
  • build-essential包提供了编译程序所需的基本工具,如gcc、g++等。
  • cmake是一个跨平台的编译工具,用于生成编译配置文件。

3. DL开发环境配置篇#

3.1 安装Nvidia显卡驱动#

最简单的方式是通过系统的软件与更新来安装:

  1. 进入系统的图形桌面,打开Software & Updates软件,可以看到标签栏有一个Additional Drivers:

img

选择第一个安装Nvidia官方驱动(第二个是开源驱动)即可,根据网络情况稍等大概十分钟,安装完重启服务器。

重启完之后更新一下软件:

sudo apt update
sudo apt upgrade
bash

这里会连带Nvidia的驱动一起升级一遍,更新到最新的驱动;更新完可能会出现nvidia-smi命令报错,再重启一下就解决了。

3.2 安装CUDA#

如果之前安装了旧版本的cuda和cudnn的话,需要先卸载后再安装:

 sudo apt-get remove --purge nvidia*
bash

然后按照前面的方法重新安装显卡驱动,安装好了之后开始安装CUDA:

  1. 去官网查找cuda安装包:CUDA Toolkit Downloads | NVIDIA Developer ↗,根据nvidia-smi的cuda版本进行选择。

    我的版本:Driver Version: 550.120 CUDA Version: 12.4,故选择CUDA Toolkit 12.4。

    依次选择Linux - x86_64 - Ubuntu - 22.04 - runfile (local),根据官网命令进行安装。

    wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
    chmod +x cuda_12.4.1_550.54.15_linux.run
    sudo sh cuda_12.4.1_550.54.15_linux.run
    bash

    如果安装过程中报错Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.:

    执行sudo apt install build-essential即可解决。

    可能会报一个警告:

    img

    前面已经卸载过旧版本了直接Continue就好。然后根据提示选择安装选项,注意不要勾选第一项安装显卡驱动,因为之前已经安装过了,也不要勾选Kernel Objects中的选项(默认不勾选)。安装完成后提示

    image-20250404191144531

  2. 根据上图提示需要配置环境变量:

sudo vim ~/.bashrc
bash

再文件最后加入以下语句:

export CUDA_HOME=/usr/local/cuda-12.4
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
text

然后使其生效:

source ~/.bashrc
bash
  1. 可以使用命令nvcc -V查看安装的版本信息

3.3 安装CuDNN#

进入到CUDNN的下载官网:cuDNN Download | NVIDIA Developer ↗,选择合适的下载版本。

我选择cuDNN 9.2.1,依次点击Linux - x86_64 - Ubuntu - 22.04 - deb (local),依照给出的命令安装。

wget https://developer.download.nvidia.com/compute/cudnn/9.2.1/local_installers/cudnn-local-repo-ubuntu2204-9.2.1_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2204-9.2.1_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-9.2.1/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn
bash

要安装 CUDA 11,请执行上述配置,但安装 CUDA 11 特定的包:

sudo apt-get -y install cudnn-cuda-11
bash

要安装 CUDA 12,请执行上述配置,但安装 CUDA 12 特定的包:

sudo apt-get -y install cudnn-cuda-12
bash

使用以下命令查看CUDNN的版本信息:

cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
bash

3.4 安装Anaconda#

  1. 在Anaconda官网下载Linux安装包:Anaconda | Individual Edition ↗
  2. 运行下面的命令安装:
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
chmod +x Anaconda3-2024.10-1-Linux-x86_64.sh
./Anaconda3-2024.10-1-Linux-x86_64.sh
bash

一路按ENTER确认,然后根据提示输入yes,这里我为了目录整洁不安装在默认路径,设置为下面的路径:/home/feiyu/Softwares/anaconda3

然后会询问你是否要初始化conda,输入yes确认,重开终端窗口之后,就可以看到conda环境可用了(base代表默认环境)。

3.5 安装Docker#

Install Docker Engine on Ubuntu ↗

  1. 卸载旧版本
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
bash
  1. Install using the apt repository

Set up Docker’s apt repository.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
sudo apt-get update
bash

Install the Docker packages.

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
bash
  1. 配置Docker

Manage Docker as a non-root user

Create the docker group.

sudo groupadd docker
bash

Add your user to the docker group.

sudo usermod -aG docker $USER
bash

Log out and log back in so that your group membership is re-evaluated.

You can also run the following command to activate the changes to groups:

newgrp docker
bash

Verify that you can run docker commands without sudo.

docker run hello-world
bash

Configure Docker to start on boot with systemd

sudo systemctl enable docker.service
sudo systemctl enable containerd.service
bash

配置 Docker Hub 镜像加速 ↗

创建或修改 /etc/docker/daemon.json:

sudo mkdir -p /etc/docker
bash
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.1panel.live"
    ]
}
EOF
bash
sudo systemctl daemon-reload
bash
sudo systemctl restart docker
bash

检查加速是否生效

使用 sudo docker info查看docker系统信息,如果从结果中看到了你配置的加速地址,说明配置成功。

Registry Mirrors:
 [...]
 https://docker.1panel.live
plaintext

可以通过运行映像来验证是否配置成功。

docker run hello-world
bash
  1. 安装NVIDIA Container Toolkit

Docker默认不支持GPU,需先安装NVIDIA官方提供的容器工具包。需要确保已经安装了Nvidia Driver。

# 添加NVIDIA仓库
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/stable/deb/nvidia-container-toolkit.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 nvidia-container-runtime

# 重启Docker服务
sudo systemctl daemon-reload
sudo systemctl restart docker
bash

安装完成后可以新建一个容器测试一下:

sudo docker run -it --name test_nvidia_docker --gpus all nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04
bash

其中最后的参数nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04 是Nvidia官方的镜像,需要根据工作站主机中实际安装的CUDA版本进行修改,版本可以用nvcc -V查看。

进入容器之后运行 nvidia-smi 命令,有输出即为成功。

  1. 安装Docker可视化管理工具

Portainer

Deployment:

First, create the volume that Portainer Server will use to store its database:

docker volume create portainer_data
bash

Then, download and install the Portainer Server container:

docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts
bash

By default, Portainer generates and uses a self-signed SSL certificate to secure port 9443. Alternatively you can provide your own SSL certificate during installation ↗ or via the Portainer UI ↗ after installation is complete.

If you require HTTP port 9000 open for legacy reasons, add the following to your docker run command:

docker run -d -p 9000:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:lts
bash

Portainer Server has now been installed. You can check to see whether the Portainer Server container has started by running docker ps:

root@server:~# docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED       STATUS      PORTS                                                                                  NAMES             
de5b28eb2fa9   portainer/portainer-ce:lts     "/portainer"             2 weeks ago   Up 9 days   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp   portainer
plaintext

Logging In:

Now that the installation is complete, you can log into your Portainer Server instance by opening a web browser and going to:

https://localhost:9443
http://localhost:9000
plaintext

Replace localhost with the relevant IP address or FQDN if needed, and adjust the port if you changed it earlier.

Chrome浏览器新建管理员时出现Unable to create administrator user错误 / 登录时出现Unable to login错误:

尝试清除该网页的浏览器缓存:F12打开开发者工具—切换到”应用”栏—点击”存储”中的”清除网站数据”,刷新页面即可解决该问题。

3.6 安装Docker Desktop#

Install Docker Engine on Ubuntu ↗

  1. 开启kvm

启用虚拟化支持:对于Intel处理器,运行以下命令来启用KVM模块:

sudo modprobe kvm_intel
bash

对于AMD处理器,使用以下命令:

sudo modprobe kvm_amd
bash

To check if the KVM modules are enabled, run:

$ lsmod | grep kvm
kvm_amd               167936  0
ccp                   126976  1 kvm_amd
kvm                  1089536  1 kvm_amd
irqbypass              16384  1 kvm
bash

Set up KVM device user permissions

To check ownership of /dev/kvm, run :

ls -al /dev/kvm
bash

Add your user to the kvm group in order to access the kvm device:

sudo usermod -aG kvm $USER
bash

为了使组更改生效,需要重启系统。

  1. 卸载旧版本
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
bash

apt-get might report that you have none of these packages installed.

  1. 安装Docker Desktop

Set up Docker’s apt repository

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
bash

Download the latest DEB package

wget https://desktop.docker.com/linux/main/amd64/docker-desktop-amd64.deb
bash

Install the package using apt:

sudo apt-get update
sudo apt-get install ./docker-desktop-amd64.deb
bash

安装 Docker Compose

sudo apt install docker-compose-plugin
# 验证
docker compose version
bash
  1. 配置Docker

To enable Docker Desktop to start on sign in, from the Docker menu, select Settings > General > Start Docker Desktop when you sign in to your computer.

Alternatively, open a terminal and run:

systemctl --user enable docker-desktop
bash

Upgrade Docker Desktop

When a new version for Docker Desktop is released, the Docker UI shows a notification. You need to download the new package each time you want to upgrade Docker Desktop and run:

sudo apt-get install ./docker-desktop-amd64.deb
bash

配置 Docker Hub 镜像加速 ↗

创建或修改 /etc/docker/daemon.json:

sudo mkdir -p /etc/docker
bash
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": [
        "https://docker.1ms.run",
        "https://docker.1panel.live"
    ]
}
EOF
bash
sudo systemctl daemon-reload
bash
sudo systemctl restart docker
bash

Docker Desktop 配置镜像加速 对于电脑的Docker Desktop用户,点击右上角设置,找到Docker Engine然后修改配置,修改后的示例:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.1panel.live"
  ]
}
json

然后点击右下角的 Apply & restart 保存并重启即可。

检查加速是否生效

查看docker系统信息 docker info,如果从结果中看到了你配置的加速地址,说明配置成功。

Registry Mirrors:
 [...]
 https://docker.1panel.live
plaintext

可以通过运行映像来验证是否配置成功。

docker run hello-world
bash

4. 工作站维护篇#

4.1 工作站系统备份#

由于Linux本身万物皆文件的设计理念,加上root用户对几乎全部的系统文件都有访问和更改的权限,因此Linux系统的备份和还原可以直接打包整个根文件系统。

我们可以使用tar命令来打包并压缩文件系统,不过这里在打包的过程中需要排除一些不需要文件,或者与新系统文件冲突的文件,包括/tmp、/proc、/lost+found 等目录。

找一个你想保存备份文件的目录,运行下面的命令:

tar -cvpzf ubuntu_backup@`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot  --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run /
bash

我们会得到一个名为backup.tgz的压缩文件,这个文件包含我们需要备份的系统的全部内容。

4.2 工作站系统还原#

如果系统没有出问题可以正常启动的话,那直接在刚刚的压缩包找到想还原的文件替换就好了。而如果系统无法启动了,或者说想换一块硬盘克隆一样的系统,那么可以按一下步骤操作:

  • 重装干净的Ubuntu系统。跟上面介绍的一样,使用U盘给目标磁盘重装一个干净的系统,这一步是为了省去自己分配存储空间和挂载的麻烦,如果你会自己配置的话那也可以不做这一步。
  • 再次使用U盘进入系统,这次选择try ubuntu without installing,然后可以看到挂载好的刚刚安装了干净系统的另一个盘,我们在这里对盘里的根文件系统进行一些文件的提取:
sudo su

# 在tryUbuntu根目录下有media文件夹,里面是U盘文件夹和新安装的系统文件夹,在在里分别用(U盘)和(UBUNTU)表示
cd /media/(U盘)
mount -o remount rw ./
 
# 将新系统根目录下/boot/grub/grub.cfg文件备份到U盘中
sudo cp /media/(Ubuntu)/boot/grub/grub.cfg ./    
 
# 将新系统根目录下/etc/fstab文件备份到U盘中,fstab是与系统开机挂载有关的文件,grub.cfg是与开机引导有关的文件,所以这一步至关重要
sudo cp /media/(UBUNTU)/etc/fstab ./
 
# 这一步删除新装ubuntu全部的系统文件,有用的fstab及grub.cfg已经备份
cd /media/(UBUNTU)
sudo rm -rf ./*
 
# 将U盘中backup.tgz复制到该目录下并解压缩
cp /media/(U盘)/backup.tgz ./
sudo tar xvpfz backup.tgz ./
 
# 创建打包系统时排除的文件
sudo mkdir proc lost+found mnt sys media
bash

这一步完成后,在用我们在新系统中备份的fatab及grub.cfg 文件去替换压缩包中解压出来的同名文件,sudo reboot重启后就发现系统已经恢复到备份时的状态,包括各种框架,环境,系统设置。

个人深度学习工作站配置指南
https://feiyu05.top/blog/config-personal-workstation
Author Feiyu
Published at March 27, 2025
Comment seems to stuck. Try to refresh?✨