Linux

深度学习工作站系统重装步骤记录

最近需要配置一台CUDA环境深度学习工作站,打算把流程都记录一下,以防每次都得现查。 首先下载Linux镜像,我这里用的是Ubuntu24.04: https://ubuntu.com/download/desktop 然后制作一个USB镜像启动盘,这次我用的Ubuntu官网推荐的小工具,免安装并且只有3个按钮:选择镜像,选择U盘,烧录! 挺好用的推荐! balenaEtcher:https://github.com/balena-io/etcher/releases 接下来就是将BIOS选择U盘启动了,各个品牌电脑差异挺大的,按照自己实际情况去操作。然后选择全新安装Ubuntu,多数情况下直接默认选项安装就好。 系统装好后,我习惯先把当前版本的系统软件更新到最新: 当前这台工作站是公共的,需要给每个人分配一个帐号,可以在桌面环境操作,也可以通过命令完成,可以参考下边一篇记录: Ubuntu添加新用户并加入sudo组 如果工作站有中文输入需求的话,比如我目前记录这篇博文,还需要加一个中文输入法,可以看我这篇记录: Linux 安装中文输入法 接下来安装Python环境,不建议直接使用系统的Python来配置各种库,出现了问题太难修复了。建议使用Anaconda,各个环境相互不干扰。Anaconda的安装是通过官网的一个sh脚本: https://www.anaconda.com/download/success 下载后对其赋予一个执行权限,然后在终端里运行: 根据交互一步一步安装,最后一步询问要不要将Conda加入到开机初始化列表中,建议yes,不然后边每次使用Conda切环境需要手动找Anaconda安装文件夹,很麻烦。 安装完毕后,熟悉Anaconda的可以直接使用Conda来管理Python环境,若不太熟悉的话可以使用图形化的一个工具,在终端输入:anaconda-navigator 建议不要在base环境做开发,最好是每个项目有一个单独的环境,再使用conda安装pytorch,我个人没有按照Pytorch官网指导的使用pip安装,我个人经验是既然使用了Conda就尽量全Conda环境,尽量避免和pip混着用,以免一些未知的问题。在这里需要看下本机CUDA的版本,要做到Python版本、CUDA版本以及Pytorch版本相互保持一致。对应关系表在Pytorch官网可以查到。 经查询我需要安装2.5.1版本的Pytorch:conda install pytorch=2.5.1 接下来我们装个IDE,运行个实例看一看。官网下载VS Code然后使用下列命令安装: sudo dpkg -i ‘/home/v2x/Downloads/code_1.102.0-1752099874_amd64.deb’ 将自己用Anaconda建立的Python环境设为VSCode的默认解释器,按照Anaconda官方指导操作一下: https://www.anaconda.com/docs/tools/working-with-conda/ide-tutorials/vscode 之后运行一个示例程序,看下pyTorch以及CUDA是否都已经OK: 从Terminal的输出若看到True以及对应的网卡型号,那么说明基础环境已经完毕。 当需要远程连接到这台设备的话,发现SSH连不上,这是由于Ubuntu安装后默认没有sshd服务端。按照下列指导操作一下即可: Ubuntu 开启SSH连接 一些其他可能必备的工具: 最后再记录一下将U盘烧录成一个启动盘后,怎样恢复。按照通常的格式化format不管在windows还是linux都是解决不了的,可以参考下列记录解决: https://blog.shuspieler.com/1223/ 大致就这些了,祝炼丹顺利!

深度学习工作站系统重装步骤记录 Read More »

华硕路由器梅林固件设置IPv6防火墙

之前在家里设置了一个影音库,与公网通过IPv6连接,实现pt上传积分和从外部对家里的多媒体资源访问的需求,我的家庭影音库。当时对于家庭路由器防火墙的设置,是通过静态唯一地址设置的,后来发现一个问题,在路由器重新拨号,或者时间够久的情况下中国移动端会改变IPv6前缀,这就出现了一个问题,我们通过上篇文章操作的防火墙设置,其中的IP地址已经不正确了,造成pt上传赚积分也赚不到了,从外网也连不到我家里的NAS媒体资源。所以使用了半年多以来,几乎每一两个月都得重新设置一遍IPv6防火墙,挺烦的。 于是我查好资料看有没有通过类似于通配符的方式设置防火墙,这样子及时前缀变了,但是依旧能映射到唯一的硬件设备。还真有解决方案,不过由于我是使用的梅林版的华硕路由器,有一些查出来的对原版梅林固件好使的方法,在我这里不适用,我找啊找终于到到适合我的方式。如果也有小伙伴使用华硕路由器结合梅林固件,需要在动态IPv6的情况下设置防火墙,可以参考一下我的方法。 首先IPv6设置里边对于子网的IP选择Stateless,这样子路由器给设备分配的IP后边4段会根据路由器的Mac地址结EUI-64算法生成唯一设备后缀地址。然后我们在NAS设备里看下实际分配的地址,然后在华硕路由器里边IPv6防火墙本地 IP 地址要按 0::a:b:c:b/0::ffff:ffff:ffff:ffff 的格式进行填写,其中 a:b:c:d 部分替换为实际设备 IP 地址的后四段。端口部分可以一次填入多个,使用英文逗号分隔,例如:5000,5001,5006,5999,8096,16681。 查询各种帖子了解到,对于华硕路由器,可以设置为 ::a:b:c:d/::ffff:ffff:ffff:ffff格式。也有帖子提到对于梅林改版固件,不能留空双冒号,即为0:0:0:0:a:b:c:d/0:0:0:0:ffff:ffff:ffff:ffff 格式。这几种方式在我这里会使iptable配置报错,造成公网的IP地址丢失,从而整体IPv6都不可用了。有帖子说这是特定版本梅林的Bug,第一位的0不能省略,确实在我这里实践好使。 设置后保存重启我们试一下,路由器拿到了新的前缀,然后pt工具也可以看到与公网联通了,上传通路正常。 觉得有帮助的小伙伴来点个赞啊。   Reference: https://post.smzdm.com/p/a2xx273n/ https://www.right.com.cn/forum/thread-8417643-1-1.html https://www.cnblogs.com/osnosn/p/11781359.html https://post.smzdm.com/p/a25gmdoq/ https://zhuanlan.zhihu.com/p/665423070 https://www.zhihu.com/question/363164098 https://www.right.com.cn/FORUM/thread-4108336-1-1.html  

华硕路由器梅林固件设置IPv6防火墙 Read More »

OpenWrt路由器通过CLI命令修改Wifi无线设置

我爸菜园子怕别人偷菜让我帮忙给装一个监控,这样有人进入就会报警,并且实时可以看到菜园子情况。 平房没有网络我打算给那里放一个CPE,插一张副卡用来给监控提供网络。手头有一个之前帮忙测评用的工程版CPE,想着物尽其用,设置了一下发现不能改变SSID,可能是工程版原因软件还不完善,也凑合着能用可是特别挑战我的强迫症。由于我知道这个CPE的固件是通过OpenWrt魔改过来的,于是我尝试能不能通过命令的方式来改一下SSID,结果还真做到了。这里简单记录一下步骤: 首先打开NRadio的ssh开关,浏览器打开: http://192.168.66.1/cgi-bin/luci/admin/system/security 然后使用uci命令来修改OpenWrt的网络设置。可以先用uci show network 和uci show wireless来看下当前设置: 从中可以看到我们比较关心的是wireless.wlan0.ssid=NRadio-0CBE-2.4G 和wireless.wlan1.ssid=NRadio-0CBE这两项,这和网页里看到的内容是相同的,但是网页配置端由于未知bug修改不了。我在这里尝试用uci命令修改: 然后保存更改: 重启后生效。 Reference:https://blog.csdn.net/qq_35718410/article/details/53113894

OpenWrt路由器通过CLI命令修改Wifi无线设置 Read More »

Linux内核升级失败原因找到

之前在这个贴子(Linux内核升级失败后回退)提到我升级内核遇到了问题,导致系统无法启动。后边又尝试了几次依旧同样的报错。最近又有了新的内核版本,现在跨版本升级,还是失败。研究好久才搞明白根本原因。原来是升级过几次后服务器/boot分区满了,所以当再次升级适合就遇到奇怪的报错。 Filesystem Size Used Avail Use% Mounted on udev 445M 0 445M 0% /dev tmpfs 98M 1.1M 97M 2% /run /dev/sda3 20G 5.8G 13G 32% / tmpfs 490M 0 490M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 490M 0 490M 0% /sys/fs/cgroup /dev/sda2 371M 309M 35M 91% /boot /dev/loop1 56M 56M 0 100%

Linux内核升级失败原因找到 Read More »

Linux内核升级失败后回退

今天在不定期检查服务器运行状态时候,看到提示说有很多个包可以更新,于是想着今天相对不那么忙,顺便更新一下服务器的软件包吧。这样的操作经常做的,很多时候是为了安全的考虑,在功能使用上没啥特别大的需求,整个过程也没啥特别的地方,于是熟练地输入下列命令更新软件包列表: sudo apt update Hit:1 http://archive.ubuntu.com/ubuntu focal InRelease Get:2 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] Get:3 http://archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] Get:4 http://archive.ubuntu.com/ubuntu focal-security InRelease [114 kB] Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [2,465 kB] Get:6 http://archive.ubuntu.com/ubuntu focal-updates/main Translation-en [420 kB] Fetched 3,221 kB in 1s (2,312 kB/s) Reading package lists… Done Building dependency tree Reading state

Linux内核升级失败后回退 Read More »

Linux 下修复磁盘:ntfsfix

sudo ntfsfix /dev/sda1 [sudo] password for shu: Mounting volume… $MFTMirr does not match $MFT (record 0). FAILED Attempting to correct errors… Processing $MFT and $MFTMirr… Reading $MFT… OK Reading $MFTMirr… OK Comparing $MFTMirr to $MFT… FAILED Correcting differences in $MFTMirr record 0…OK Processing of $MFT and $MFTMirr completed successfully. Setting required flags on partition… OK

Linux 下修复磁盘:ntfsfix Read More »

Linux SSH登录/密码错误邮件提醒

想给服务器加一个功能,每当有人SSH成功登录都给管理员发封邮件作为提醒。 同时若有人暴力破解密码达到一定次数封禁对方IP数小时并且同时也发邮件提醒。 服务器发邮件用到了sendmail包: sudo apt install sendmail 首先检查OpenSSH是否开启了PAM,检查”/etc/ssh/sshd_config” 看下UsePAM是否非yes并且未被注释掉,我的服务器默认是正确的 然后创建一个login-notify.sh文件,我放在了/etc/ssh/,填入下边内容: #!/bin/sh # Change these two lines: sender=”” recepient=”” if [ “$PAM_TYPE” != “close_session” ]; then host=”`hostname`” subject=”SSH Login: $PAM_USER from $PAM_RHOST on $host” # Message to send, e.g. the current environment variables. message=”`env`” echo “$message” | sendmail -r “$sender” -s “$subject” “$recepient” fi 其中sender和recepient为发件用的地址和收件邮箱, 根据需求更改

Linux SSH登录/密码错误邮件提醒 Read More »

MySQL8 创建新用户 改密码

最近新配置了一台新服务器用于生产环境,为了使整个系统生命周期长一些,我在配置环境时候安装的都是最新版的稳定系统/软件,比如操作系统选的Debian10, PHP和MySQL选的都是版本8。在安装MySQL时候遇到了之前类似的问题,就是默认root用户不知为何在预配置阶段密码设置无效,在安装后经过测试是空密码。我之前在5.7时候由于遇到过root账户不能远程登录的问题,当时记录了一些解决方法,可是其中的某些步骤提示语法错误,经过查询得知在MySQL8之后之前设置密码的语法已经被淘汰了,现在给空root账户设置密码步骤如下: 首先通过如下命令用root用户名和空密码登录数据库: sudo mysql -u root 然后通过下边命令给root账户修改密码: use mysql; ALTER USER ‘root’@’localhost’ IDENTIFIED WITH caching_sha2_password BY ‘yourpasswd’; flush privileges; exit; 命令成功执行后可以查看一下是否可以用新密码登陆: sudo mysql -u root -p 理论上现在已经可以通过sudo结合root用户名和密码在BASH里边登录数据库了。当时此时root账户可能不能通过phpMyAdmin或者外部工具登录(修正:这是由于root 用户使用 unix_socket 身份验证插件,只有在以系统 root 身份调用 mysql 命令或将 sudo 添加到命令时,才能以 root 身份连接到数据库,如果验证插件是其他比如我现在的Caching sha2 authentication,也是可以在phpmyadmin使用root登录的),这是从MySQL 5.7开始的安全策略原因,详细介绍以及解决方案可以看刚刚提到的那篇博文记录。 另外 Debian 10 的默认软件源中并不包含 MySQL 软件包,它已被 MariaDB 替代。我这次安装参考了不少教程,列在这里以表感谢:   Reference: https://blog.shuspieler.com/1090/ https://www.digitalocean.com/community/tutorials/how-to-install-the-latest-mysql-on-debian-10 https://www.jianshu.com/p/59a9bcc136c2

MySQL8 创建新用户 改密码 Read More »

服务器被暴力扫描

服务器的SSH服务由于远程配置的原因,需要暴露在公网。虽然使用了一系列安全措施比如关闭root登录,普通权限与超级管理员权限分离,更改端口以及使用第三方工具比如强力爆破,可是看sshd的log每天依旧有数不清的登陆尝试,Fail2Ban也在孜孜不倦地一直将这些IP拉黑。昨天看到Fail2Ban可以开通邮件提醒功能,于是配置了一下,没想到邮件雪花片就飞了过来,基本上每分钟都有被ban掉的IP,一晚上竟然收到了一千多封邮件,并且早晨早早的,由于手机勿扰模式天亮就自动关闭了,邮件提示音把我吵死了。 另外看邮件日志,IP来源于世界各地,应该就是被黑客攻破的肉鸡,我之前维护的一台DigitalOcean也被黑过,DO给我发邮件说我abuse应该是我在那台服务器的Wordpress没有及时升级被利用漏洞了。从日志还有一个很严峻的发现是来之中国大陆或者中国服务商的攻击特别特别多,IP将近一半来自中国大陆或者阿里云腾讯云等在大陆外的服务器。这反映了国内互联网服务运营人员对于系统安全的意识是多么的薄弱,有这么多服务器带病运行,不经被黑客当多肉鸡攻击其他的设备,同时运行在这些服务器上的服务也被黑客一览无余,那里边的用户数据的安全性更是无从谈起。 随便摘几个日志过来,首先是中国移动的端口,感觉黑客控制可一个网段,来自这个地址以及相似地址的特别多,不排除运营商的机房已经被黑客控制的可能: Hi, The IP 221.181.xxx.xxx has just been banned by Fail2Ban after 5 attempts against sshd. Here is more information about 221.181.xxx.xxx : % [whois.apnic.net] % Whois data copyright terms http://www.apnic.net/db/dbcopyright.html % Information related to ‘221.176.0.0 – 221.183.255.255’ % Abuse contact for ‘221.176.0.0 – 221.183.255.255’ is ‘’ inetnum: 221.176.0.0 – 221.183.255.255 netname: CMNET

服务器被暴力扫描 Read More »