Andrew Moa Blog Site

Ubuntu搭建软路由

把原先工作用的工作站改成了Ubuntu 24.04,需要通过Windows办公笔记本直连工作站进行操作。一开始在无线网下连接,上传下载数据太慢。后来通过有线网卡桥接,但有时候数据却不通过有线网卡传输反而走无线网卡。禁用笔记本无线网卡无法上网办公,也不是一个好办法。

1. 临时方案

工作站作为主机A,笔记本作为主机B,主机B通过有线共享主机A的无线网络1

1.1 查询当前设备网卡

查询两台机子的网卡信息

iwconfig

1.2 配置主机A的静态IP并作为软路由

可以通过GUI配置,主机A只需要设置IP地址和子网掩码信息。

sudo ifconfig eno1 192.168.68.1/24 # enol 为A主机内接的有线网卡名称
ifconfig # 查询效果

1.3 配置主机B的静态IP、网关和DNS

这一步也可以通过GUI配置,主机B需要配置IP地址、子网掩码,网关设置成主机A的IP地址,另外还需要设置DNS地址。

sudo ifconfig enp0s31f6 192.168.68.2/24 # enp0s31f6 为A主机有线网卡名称
sudo route add -net 0.0.0.0/0 gw 192.168.68.1 # 添加网关
sudo chmod +666 /etc/resolv.conf 
sudo echo "nameserver 114.114.114.114" > /etc/resolv.conf # 添加DNS

1.4 打开IP转发功能

Linux默认是禁止IP转发的,需要手动打开该功能。

sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'   # 打开ip转发

1.5 配置NAT

通过iptables设置路由转发。

sudo iptables -F
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -A POSTROUTING -o wlp0s20f3 -j MASQUERADE     # wlp0s20f3为A主机接外网的无线网卡

这个方案每次主机A重启都要重新按1.4、1.5设置一遍,非常不方便。

阅读时长1分钟
Andrew Moa

解决OpenMPI的"Authorization required, but no authorization protocol specified"错误提示

最近在用OpenFOAM和SU2提交计算时,反复出现"Authorization required, but no authorization protocol specified"报错信息。尽管不理会它最终还是能完成计算,但总是出现的报错信息让人心里不安。

怀疑是OpenMPI的问题,通过以下命令验证:

mpirun -np 2 hostname

果然出现报错信息:

9369ef647d5aff57821c1d728ec4eca1.png

翻阅网上信息,比较靠谱的解决方案是这个1:在Slurm脚本中增加以下环境变量:

export HWLOC_COMPONENTS=-gl

测试一下,报错问题解决了:

b3c56243fce578a837d01d68ab24e935.png

阅读时长1分钟
Andrew Moa

OpenFOAM编译安装cfmesh和ccm工具

1. 编译cfmesh

前期编译安装的是com版的OpenFOAM,版本号是v2412,没有附带cfmesh的源码。根据官方文档的提示,需要手动下载cfmesh的源码文件:

cd $WM_PROJECT_DIR
git submodule update --init --recursive plugins/cfmesh

出现以下错误:

fatal: 不是 git 仓库(或者任何父目录):.git

无语了,直接通过git下载源码到指定文件夹,文件夹和URL路径可以查看.gitmodules文件:

cd $WM_PROJECT_DIR
git clone https://develop.openfoam.com/Community/integration-cfmesh.git plugins/cfmesh

进入cfmesh文件夹,开始编译:

cd plugins/cfmesh
./Allwmake -jN # N替换成CPU核心数

运行pMesh,验证是否安装成功:

pMesh -help

2. 编译ccm工具

OpenFOAM的ccm工具包含ccmToFoam和foamToCcm,前者用于将STAR-CCM+输出的ccm格式网格转换成OpenFOAM的网格,后者相反。需要先编译安装第三方库libccmio:

cd $WM_THIRD_PARTY_DIR
# 下载libccmio
wget http://portal.nersc.gov/project/visit/third_party/libccmio-2.6.1.tar.gz
# 备选链接
# wget https://sourceforge.net/projects/foam-extend/files/ThirdParty/libccmio-2.6.1.tar.gz
tar xvzf libccmio-2.6.1.tar.gz	# 解压下载的压缩包
./makeCCMIO	# 运行libccmio的编译程序

接下来编译ccmToFoam:

# 先编译libccm
cd $WM_PROJECT_DIR/src/conversion/ccm
./Allwmake
# 然后编译ccmToFoam和foamToCcm
cd $WM_PROJECT_DIR/applications/utilities/mesh/conversion/ccm
./Allwmake

运行ccmToFoam,验证是否安装成功:

ccmToFoam -help

阅读时长1分钟
Andrew Moa