Amax K40 Linux GPU伺服器重裝記錄
- 2019 年 12 月 25 日
- 筆記
因為這台GPU伺服器閑置了很久,經過這兩天的安裝,現在基本能用了。整個過程其實挺坎坷的,因此記錄下此次安裝過程中遇到的坑,後面好參考。伺服器從原先的OpenSuse換成了Ubuntu 16.04 LTS 發行版。
安裝系統遇到的問題
安裝系統整個流程是這樣的:
- 下載Ubuntu鏡像,從科大的源上下載
- 製作啟動U盤,採用軟碟通來製作
- 插入U盤到機器,進入BIOS設置,選擇Legacy模式,並將U盤的啟動順序放在最前面
- 啟動從U盤啟動,進入安裝Ubuntu的圖形介面,進行重新劃分盤然後在盤上安裝系統
- 安裝好後,重啟系統,拔掉U盤,進入BIOS,調整硬碟
ST2000*
的啟動順序,使之排在最前面
其中遇到兩個問題。第一個問題是在上述3步驟的時候,選擇Legacy還是UEFI。這裡Legacy表示選擇經典的BIOS啟動,BIOS簡單來說就是主板上一塊固話的flash晶片,它在開機後會最先啟動,然後按照裡面寫好的步驟把主要硬體挨個檢查一遍,然後去硬碟找引導程式,然後把引導權交給它,然後就進系統了。UEFI則是一種新的啟動方式,Legacy的啟動方式要用MBR磁碟格式,UEFI啟動方式要用GPT磁碟格式。如果你安裝系統時候用的是Legacy,進入系統時選擇UEFI則會報錯,反過來也是,因此要保持裝系統和進系統時兩者的一致。 我們的機器是因為比較老舊,所以只支援Legacy,所以選擇的時候選擇Legacy。 第二個問題是在上述第4步中劃分盤的時候,底下的」 device for bootloader installation」這個輸入框該如何選擇。剛開始我們選擇了劃分好的某個分區,如/dev/sdd1,但是有問題,安裝後總有錯。後來查看網上的資料,發現都是採用沒加下標的盤符,如/dev/sdd。因此在劃分盤的時候,在盤開始的位置留一些空間,然後這裡選擇沒下標的盤符,如/dev/sdd,即可。
掛載硬碟的問題
安裝好系統後,默認掛載的只有裝系統時候的那塊盤上的分區,像別的硬碟上的分區如果要開啟自動掛載的話,需要在/etc/fstab裡面寫入記錄。 fstab的記錄的格式是這樣的:
# format <file system> <mount point> <type> <options> <dump> <pass>, for example, /dev/sdc /data2 ext4 defaults 0 0
其中細節可以參考我寫的這篇部落格。其中type這個參數不好確定,需要用blkid
命令來查看,如下面兩種格式:
$ sudo blkid /dev/sda1: UUID="d0dbd540-305b-493d-b42b-f9d92f3388d7" TYPE="ext4" /dev/sda2: UUID="9a9946ab-43b4-454a-9993-b59fb4860139" TYPE="ext4" /dev/sda3: UUID="479416ea-cbf0-42ef-9f19-827f0524128a" TYPE="swap" /dev/sdb1: UUID="89e6c107-62bd-4e7a-807d-5b5024f272b5" TYPE="ext4" /dev/sdc: UUID="117d0fa5-cffb-45ff-8758-9dc23063bcf8" TYPE="ext2" /dev/sdd: UUID="887d5d9a-fbb3-4036-ad97-11b072cff277" TYPE="ext4" /dev/sde: UUID="61ae41de-1fca-4d4e-bdb3-e45f8d9777ec" TYPE="ext3" /dev/sdf: UUID="5d23d7a7-b572-4973-846c-7cf23d1a915f" TYPE="ext4" /dev/sdg: UUID="088ccdbd-ad9d-4bf1-994c-7bd11b714c7a" TYPE="ext4" $ sudo blkid -o value -s TYPE /dev/sda1 ext4
知道這個參數之後,就修改/etc/fstab,增加要掛載的硬碟分區,然後重啟即可。主要掛載如果參數有錯的話,開機啟動會報錯,進入安全模式,須將其修改後再啟動。所以備份原先的fstab是很有必要的。
Caffe編譯過程中HDF5庫路徑的問題
在Ubuntu 16.04中,HDF5文件的lib目錄不在系統默認的/usr/local/lib或/usr/lib目錄下,而是在/usr/lib/x86_64-linux-gnu/hdf5/serial
目錄下,所以在Caffe的Makefile.config中的LIBRARY_DIRS
那行後面增加/usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
。同理,其include目錄也不在標準目錄,而是在/usr/include/hdf5/serial
目錄,因此也需要將其加入到INCLUDE_DIRS
這一行,因此這兩行的最終結果如下:
93 # Whatever else you find you need goes here. 94 INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial 95 LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
修改後再重新編譯Caffe即可。
cuDNN6.0和tensorflow
在嘗試用pip安裝tensorflow的時候,安裝後執行import tensorflow as tf
的時候,報錯,說是找不到cuddnn.so.5,可是pip安裝的是用cuDNN5.*編譯的二進位文件,也即當前pypi倉庫裡面是用的cuDNN5.0。為了能用cuDNN 6.0加速性能,我決定自己編譯Tensorflow。之前在Ubuntu 14.04上編譯過一次,但由於包太老,bazel安裝出現問題。這次編譯沒錯,安裝官方文檔來操作即可。
VNC 顯示不全的問題
這個問題現在還沒解決,但是基本可以使用了,只不過在VNC介面打開Terminal的時候會報錯,而打開Xterm卻沒問題,網上找了些資料也沒好的解決方法。因此這裡先把目前的操作記錄下來吧。
使用Gnome介面
需要安裝一下Gnome影像介面的包:
sudo apt-get install --no-install-recommends ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
然後編輯~/.vnc/xstartup文件,修改為如下:
#!/bin/sh # Uncomment the following two lines for normal desktop: # unset SESSION_MANAGER # exec /etc/X11/xinit/xinitrc [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & x-window-manager & gnome-panel & gnome-settings-daemon & metacity & nautilus -n & gnome-terminal &
然後關掉之前的VNC連接:
vncserver -kill :1
重新設置新的連接:
vncserver -geometry 1840x1020 :1
然後再客戶端連接伺服器,查看是否有問題
安裝xfce桌面
這時候需要安裝如下的桌面顯示包:
sudo apt install xfce4 xfce4-goodies
然後將~/.vnc/xstartup修改為如下:
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
然後執行和上面同樣的kill掉舊連接,建立新連接。
設置靜態IP
伺服器重裝後,IP地址改變了,但是我們還是希望大家使用熟悉的IP地址,所以需要設置一個靜態IP地址。這裡實現的步驟如下: 先是執行sudo ifconfig
來查看乙太網網卡的名稱,因為後面要用到:
$ sudo ifconfig enp4s0f0 Link encap:Ethernet HWaddr 0c:c4:7a:32:6e:42 inet addr:192.168.134.200 Bcast:192.168.104.255 Mask:255.255.255.0 inet6 addr: 2101:da0:d800:1454:725e:fb01:5ef8:16a5/64 Scope:Global inet6 addr: 2101:da0:d800:1454:2234:4e15:e803:59b9/64 Scope:Global inet6 addr: fe80::ec4:7aff:fe34:2e42/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1764153 errors:0 dropped:0 overruns:0 frame:0 TX packets:1086158 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2514858243 (2.5 GB) TX bytes:398311453 (398.3 MB) Memory:c7020000-c703ffff enp4s0f1 Link encap:Ethernet HWaddr 0c:c4:7a:04:6e:43 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Memory:c7000000-c701ffff lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:1836 errors:0 dropped:0 overruns:0 frame:0 TX packets:1836 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:246069 (246.0 KB) TX bytes:246069 (246.0 KB)
可以看到其中有3個網路介面,第三個lo
應該是本地loop介面,不是網卡,前兩個,可以看到第一個數據流量大,而第二個數據流量都是0,所以確定網卡名稱為enp4s0f0。然後編輯/etc/network/interfaces
文件,內容如下:
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto enp4s0f0 iface enp4s0f0 inet static address 192.168.134.234 netmask 255.255.255.0 gateway 192.168.134.254 dns-nameservers 202.38.64.1 202.141.176.93
其中enp4s0f0
根據你的上條命令的結果自行調整。 修改完後,執行下面的命令重啟網路服務:
sudo systemctl restart networking.service
之後重啟系統,就會發現IP已經變為你期望的靜態IP。
MatLab 安裝
MatLab安裝現在還沒完成,但已經有一些地方值得記錄下來。 先是從學校正版軟體中心下載ISO文件,然後解壓文件,放在某個目錄下,修改其中的installer_inputer,主要修改下面這些地方:
destinationFolder=/usr/local/R2017a fileInstallationKey=xxxx-xxxx-... agreeToLicense=yes outputFile=/tmp/mathworks_yunfeng.log mode=silent licensePath=/data/public/2017a/network.lic
注意最後一個參數,注釋的例子裡面都是寫的.dat
文件,很誤導人,其實在這裡寫成到network.lic
的絕對路徑即可。 然後退出MatLab目錄,在別的目錄執行:
sudo ./data/public/R2017a_glnxa64_dvd1/install -inputFile /data/public/R2017a_glnxa64_dvd1/installer_input.txt
這裡有個問題,2017a是分2個ISO文件的,一個文件執行完後,另一個文件怎麼插入呢?網上有ISO文件編譯時的說明,但是想想貌似不可行,以後再試試。