WRF模式Linux环境搭建全攻略:CentOS分区、PGI编译器与NetCDF配置
发布时间:2026/9/19 9:20:46 作者:尧图编辑部 阅读量:1,286

简介面向WRF模式入门学习者的中文教程PDF聚焦从Linux系统安装起步、逐步搭建WRF运行环境的全流程适合大气科学、环境科学相关专业学生及科研人员参考。文档源于中山大学大气科学系实际教学材料包含CentOS 5.2安装图解、磁盘分区与swap设置、网络参数配置、GRUB引导、系统初始化等步骤并延伸至PGI编译器安装等WRF前置准备内容具体且配有大量截图便于跟随操作。资源为单个PDF文件大小8.53MB无需解压即开即用。目前已有116人学习下载对于希望在CentOS类Linux系统上完整部署WRF、但缺乏系统管理经验的使用者这份教程能有效减少踩坑、提高安装成功率。1. 从CentOS 5.2到WRF为什么气象模式的第一道坎是操作系统WRFWeather Research and Forecasting模式从来不是开箱即用的软件它需要一整套Linux工具链支撑Fortran编译器、NetCDF数据接口、NCL绘图库以及足够大的磁盘来存放地形数据和模拟输出。我见过不少同行在模式编译阶段死磕几周回头发现是操作系统安装时分区太小或swap不足导致编译器中途被杀。这份教程源自中山大学大气科学系的内部讲义从CentOS 5.2安装开始一步步带你走过WRF前置环境的搭建。虽然系统版本老但分区逻辑、环境变量配置思路到今天依然适用。无论你是在物理机上安装还是用虚拟机安装Linux来跑WRF这套流程都能复用。2. 磁盘分区与网络初始化WRF对Linux系统底层的三个硬性要求WRF的编译和运行对Linux系统有三个硬性要求足够大的根分区、合理配置的swap分区、可用的静态IP和DNS。这三个要求在安装图形界面里很容易被忽略等编译时再回头改分区就麻烦了。2.1 图形安装还是文本安装按回车之前先想清楚CentOS 5.2的安装菜单默认按回车进入图形界面输入linux text进入文本界面。图形界面有鼠标可以点但对老硬件或虚拟机可能出现黑屏文本界面更稳定但分区时要通过命令行交互。我的建议是如果是在虚拟机里装直接图形安装如果是老旧物理机且显卡不兼容改用文本界面。原文提到“可能因为显卡问题使得无法进入图形安装界面”这种情况不是系统坏了换一个系统版本或改装CentOS 7也能解决。安装介质启动后会询问是否检测光盘。这里建议选Skip因为检测一张约3.4GB的镜像要花很久而且只要下载时校验过MD5基本不会有问题。2.2 手动分区swap和根分区的比例怎么定安装向导里选“建立自定义的分区结构”进入分区界面后找到空闲空间。原文建议空闲空间有50G左右这个数字今天看依然合理——地形数据包geog_v3.1.tar.gz约2GWRF源码和编译产物约2G加上模拟输出轻松的就需要20G以上。如果你还要跑几天的预报试验50G是最低线。下面是我常用的分区方案可以直接照抄挂载点分区类型大小说明/bootext3200MB引导文件不用太大swapswap2048MB内存小于4G时建议用内存的2倍内存大于4G可固定4096MB/ext3/ext4剩余全部所有源代码、WRF输出都在这里在分区界面点击“新建”先创建swap再创建根挂载点。根分区的大小设为“剩余所有空闲空间”不要留多余的空闲。最后点“编辑”确认挂载点完成后界面会同时显示swap和根分区。提示如果你用的是虚拟机虚拟磁盘大小在创建虚拟机时就定了。建议在虚拟机设置里把磁盘设为60G以上否则分区时会发现空间不够。2.3 网络配置静态IP与DNSWRF安装过程中要从网上下载依赖包虽然大部分时间在本地编译但NCL二进制包、地形数据都可能需要外网。安装时进入网卡参数设置窗口点击“编辑”配置IPv4。如果你在Windows下打开命令提示符输入ipconfig可以看到本机的IP、子网掩码和网关。但要注意如果你在虚拟机里安装主机上的IP不能直接用应该配置VMware或VirtualBox的NAT或桥接网络然后按虚拟网络建议的网段设置。DNS可以先用公共DNS如114.114.114.114或者你所在学校的DNS。原文给出了中山大学各校区的DNS如果你用动态IP分配直接默认自动获取即可。但WRF集群环境通常需要固定IP所以手动配置更稳妥。安装完重启后检查网络是否通ping -c 4 www.baidu.com能ping通就说明网络正常。如果ping不通先查网卡是否激活再看网关和DNS。注意CentOS 5.2默认防火墙是开启的可能拦截ICMP所以ping不通不代表断网可以改用curl -I http://mirrors.aliyun.com测试。3. 编译器与依赖库PGI、NetCDF、NCL的安装顺序与避坑点WRF模式核心用Fortran编写PGI编译器是官方推荐的首选编译器NetCDF负责读写气象数据NCL是绘图和后处理工具。安装顺序不能乱先装PGI再装NetCDF因为NetCDF的编译要用到Fortran编译器然后装NCLNCL是预编译二进制包不依赖前两者但需要配置环境变量。3.1 PGI编译器安装license和PATH是两大坑PGI指Portland Group编译器现在叫NVIDIA HPC SDK但老版本pgilinux86-64-707.tar.gz在WRF社区里依然被广泛使用。解压后以root身份运行./install安装过程中会问是否接受条款输入accept是否安装ACML选n安装目录建议/usr/local/pgi后续环境变量都要指向这里。安装完成后把license.dat复制到安装目录下。很多新手忘了这一步导致编译时提示找不到license。[yournamelocalhost pgi707]$ tar -zxvf pgilinux86-64-707.tar.gz [yournamelocalhost pgi707]$ su root [rootlocalhost pgi707]# ./install [rootlocalhost pgi707]# cp license.dat /usr/local/pgi/ [rootlocalhost pgi707]# exit接下来编辑~/.bashrc在文件末尾追加export PGI/usr/local/pgi/linux86/7.0-7 export PATH$PGI/bin:$PATH export MANPATH$PGI/man:$MANPATH export LM_LICENSE_FILE/usr/local/pgi/license.dat注意PATH变量里冒号两边不能有空格。执行source ~/.bashrc后用pgf90测试是否可用。如果输出pgf90-Warning-No files to process说明编译器已经能调用只是没有输入文件。这里有个容易踩的坑如果你把PGI安装在/usr/local/pgi但实际目录里是linux86-64而不是linux86一定要用ls /usr/local/pgi确认实际路径否则环境变量指向错误。提示在64位系统上注意路径是linux86-64还是linux86用uname -m查看架构。如果显示x86_64就用linux86-64。3.2 NetCDF安装FCpgf90这个参数不能丢NetCDF是WRF处理输入输出数据的核心库。WRF需要NetCDF的Fortran接口所以configure时必须指定FCpgf90否则用默认gfortran编译出来的库无法和PGI编译的WRF链接。安装步骤[yournamelocalhost netcdf]$ tar -zxvf netcdf-4.0.1.tar.gz [yournamelocalhost netcdf]$ cd netcdf-4.0.1 [yournamelocalhost netcdf]$ su root [rootlocalhost netcdf-4.0.1]# mkdir /usr/local/netcdf [rootlocalhost netcdf-4.0.1]# ./configure --prefix/usr/local/netcdf FCpgf90 [rootlocalhost netcdf-4.0.1]# make [rootlocalhost netcdf-4.0.1]# make install--prefix指定安装路径这里是/usr/local/netcdf。FCpgf90指定Fortran编译器为PGI的pgf90这个参数决定了后续WRF链接时能否找到兼容的NetCDF库。NetCDF 4.0.1有些版本在make时可能报undefined reference错误通常是因为没有安装zlib或hdf5。如果遇到可以换用NetCDF 4.1.3或4.3.x并在configure时加上--disable-netcdf-4只启用经典格式支持减少依赖。配置环境变量export NETCDF/usr/local/netcdf export PATH$NETCDF/bin:$PATH同样写入.bashrc并执行source。为了验证安装是否成功可以运行nc-config --version或者直接看/usr/local/netcdf/bin下是否有ncdump和ncgen命令。有这些工具就能确认NetCDF库已就绪。3.3 NCL/NCARG安装预编译二进制关键是.hluresfileNCLNCAR Command Language是WRF圈子里最常用的绘图工具。它不需要从源码编译直接从Earth System Grid下载对应平台的预编译版本即可。下载前用uname -m看架构用gcc --version看glibc版本选择相近的包。原文下载的是ncl_ncarg-5.1.1.Linux_i686_gcc412.tar.gz这是32位版本。如果你用64位系统应下载64位对应版本。安装就是把bin、lib、include解压到/usr/local/ncargsu mkdir -p /usr/local/ncarg cd /usr/local/ncarg tar zxvf /home/yourname/ncl_ncarg-5.1.1.Linux_i686_gcc412.tar.gz然后配置环境变量export NCARG_ROOT/usr/local/ncarg export PATH/usr/local/ncarg/bin:$PATH export DISPLAY:0.0 export NCARG_LIB/usr/local/ncarg/lib export NCARG_INC/usr/local/ncarg/includeDISPLAY:0.0是让X11图形窗口显示到本地。如果你在远程SSH环境需要通过X11转发或改用-d png输出图片。接下来在~目录建立.hluresfile文件这是NCL的默认资源文件用来设置背景色、字体、窗口大小等。原文给出的一份配置里这几行值得关注*wkForegroundColor : (/0.,0.,0./) *wkBackgroundColor : (/1.,1.,1./) *wsMaximumSize: 32556688wkForegroundColor和wkBackgroundColor分别设置前景和背景颜色wsMaximumSize是绘图缓冲区大小。如果网格数据大于500×500默认16MB可能不够需要调大。这个文件不配置也能运行但配置后可以减少每张图脚本里重复的参数设置尤其是在批量出图时会省很多事。4. WRF模式源文件与地形数据目录规划、解压和校验到这一步Linux环境、编译器、NetCDF、NCL都已就绪接下来把WRF本身的源码和地形数据放到一个干净的目录里。原文建议在用户目录下建立WRF文件夹把geog_v3.1.tar.gz、WRFV3.1.1.TAR.gz、WPSV3.1.1.TAR.gz和ARWpost.tar.gz都复制进去。这个看似简单的操作其实决定了后续编译时路径是否混乱。4.1 统一的目录结构约定我推荐的项目结构是这样的/home/yourname/WRF/ ├── geog_v3.1.tar.gz ├── WRFV3.1.1.TAR.gz ├── WPSV3.1.1.TAR.gz └── ARWpost.tar.gz解压时最好一个包对应一个目录不要全解压到同一个地方。下面是一个“坏了能快速定位”的解压顺序cd ~/WRF tar -zxvf geog_v3.1.tar.gz # 解压地形数据得到geog/目录 tar -zxvf WRFV3.1.1.TAR.gz # 解压WRF主程序得到WRFV3/目录 tar -zxvf WPSV3.1.1.TAR.gz # 解压前处理系统得到WPS/目录 tar -zxvf ARWpost.tar.gz # 解压后处理工具得到ARWpost/目录解压完成后用du -sh检查每个目录的大小。地形数据geog通常在2G左右如果解压出来很小说明包不完整或解压出错了。另外检查顶层目录名是否和压缩包内一致避免出现WRFV3-3.1.1这种多了一层嵌套的情况否则编译脚本会找不到目录。各包的作用如下表软件包作用解压后目录geog_v3.1.tar.gz静态地形数据高程、土地利用等geog/WRFV3.1.1.TAR.gz模式主程序wrf.exe、real.exe等WRFV3/WPSV3.1.1.TAR.gz前处理系统geogrid、ungrib、metgridWPS/ARWpost.tar.gz后处理转换GrADS格式ARWpost/4.2 地形数据的完整性检查geog_v3.1.tar.gz是WRF预置的地形数据集包括高程、土地利用、土壤类型等是运行real.exe时必须输入的静态数据。这块数据损坏WPS的geogrid.exe会直接报错。检查方法很简单解压后看geog/目录下是否有README和各个子数据集目录比如modis_landuse、topo_30s等。提示地形数据文件经常在传输中损坏。建议下载后先算一遍MD5和发布方提供的校验值比对。如果没有官方MD5至少用tar -tzf geog_v3.1.tar.gz列一下压缩包内容确认尾部没有截断。4.3 为后续编译预留可写权限与干净环境WRF编译需要向源码目录写Makefile和.o文件所以要确保当前用户对WRFV3、WPS等目录有写权限。不要在root下编译也不要从root解压后不改变属主。常见做法是chown -R yourname:yourname ~/WRF这样后续用普通用户编译时不会出现“Permission denied”的莫名错误。还有一个容易忽略的点WRFV3的configure脚本会检测系统类型和编译器如果环境变量里遗留了无关的LD_LIBRARY_PATH可能导致检测失败。所以建议在.bashrc里保持PATH干净不要为了让某个软件运行而乱加路径。5. 安装成功的判据用NCL生成第一张气象图并检查编译环境NCL安装完后官方自带测试脚本。在~目录下依次执行cd ~ ng4ex gsun01n ncl gsun01n.nclgsun01n会生成一个名为gsun01n.ncl的脚本ncl运行它如果弹出X11窗口显示图像说明NCL的图形库、X11转发和环境变量都正常。如果没弹窗先点一下窗口有时需要鼠标点击才刷新不行就检查DISPLAY是否为:0.0并确认你能访问显示器。另一个测试命令ncargex cpex08 ctrans -d X11 cpex08.ncgmncargex是NCAR Graphics的示例提取器ctrans将生成的元文件转换为X11输出。如果出现“No X11 display”错误说明DISPLAY没设置好或者你通过SSH连接而没有开X11转发。验证图形输出后再确认编译器环境pgf90 --version nc-config --version which ncl echo $NETCDF最后我建议在编译WRF之前先写一个小的FortranNetCDF测试程序确认PGI编译器能正确链接NetCDF库。把下面的代码保存为test_pgi.f90program test use netcdf implicit none print *, NetCDF version: , nf90_inq_libvers() end program然后编译并运行pgf90 -o test_pgi test_pgi.f90 -I$NETCDF/include -L$NETCDF/lib -lnetcdf ./test_pgi如果输出版本号字符串说明PGI与NetCDF的链接没有问题。这是WRF编译前成本最低的一次打通验证——很多编译错误在这一步就能暴露比如NetCDF库是用gfortran编译的链接时符号表不匹配。这个测试能让你提前确认而不是等WRF编译到一半再回头找原因。本文还有配套的精品资源点击获取