微生物基因體核心研究室

Microbial Genomics Core Laboratory, Graduate Institute of Genomics and Bioinformatics, NCHU, Taiwan

blog

Ubuntu22 for MinION mk1B (安裝筆記)

我們把舊的電腦工作站SSD化之後,想要用來跑Nanopore定序(配合mk1B)。以下內容是安裝過程的筆記。我們要安裝的是Ubuntu 22 (Jammy Jellyfish)還有MinKNOW,說簡單是蠻間單的,但是中間也有遇到一些些小狀況。

下載Ubuntu22

https://ubuntu.com/download/desktop

現在網站上最新的版本是Ubuntu 24,但是目前MinKNOW支援的版本到22(我們試過了用Ubuntu 24,但是MinKNOW不行用),所以總而言之必須裝稍微舊一點的版本。所以我們從’check out our alternative downloads‘ 的地方去下載Ubuntu 22 (Jammy Jellyfish)來裝才行。台灣的國網中心也可以下載:https://free.nchc.org.tw/ubuntu-cd/ (通常下載速度比較快)

舊的不一定不好,能把事情做好就好

這下載下來是一個超過6GB的disk image,有流量限制的話要注意。所謂的disk image是一個完整保存了系統安裝碟的內容與結構的檔案,在這裡它可以拿來製作可以用來幫電腦開機並進行系統安裝的開機磁碟(這裡指的通常是USB隨身碟、光碟之類的)。所以下載完成之後,我們必須用它建立安裝媒體。

建立Ubuntu安裝媒體

從前可以把下載的image file燒到光碟,但是我建議你還是用USB flash drive就好喔,用這個很方便:

https://etcher.balena.io/#download-etcher

安裝Ubuntu

用做好的USB flash drive開機,選擇開始安裝Ubuntu,選擇語言時區鍵盤什麼的都照舊,我們是選最小安裝。建立使用者,設定好網路。22這個版本的Ubuntu桌面是一隻水母呢!

安裝CUDA driver

現在的basecaller,也就是把定序的RAW data解讀成核酸序列的這個步驟用的軟體,主要是靠機器學習的技術來進行的。所以我們需要足夠強大的GPU來跑這些模型。我們的顯卡是Quadro RTX-4000,現在我們裝好系統之後,必須要再另外安裝CUDA tool kit來釋放它的能力…

安裝的方法這個網站有說明:https://docs.nvidia.com/cuda/cuda-installation-guide-linux

照著說明,我們下載了NVIDIA-Linux-x86_64-550.78.run,但是想在這裡直接安裝,會遇到一個問題,因為現在我們是開著X Windows(就是Ubuntu Desktop現在的GUI)在這裡搞,所以如果你在Terminal底下用 sudo sh NVIDIA-Linux-x86_64-550.78.run去執行安裝,他會卡在一個地方,說你必須先關掉這些GUI的東西。

這個有很多做法,我們的做法是,在Ubuntu這邊先裝SSH,然後從遠端進來做安裝。反正SSH很方便終究要裝的,對吧?

安裝SSH的方法:

sudo apt-get install openssh-server

稍等它安裝好,然後檢查一下SSH設定:

cd /etc/ssh/

vi sshd_config 把裡面需要關的門關一下

sudo /etc/init.d/ssh restart 重啟SSH就可以做遠端登入了。

暫時關掉gdm

話說從頭,我們要關掉的東西叫做gdm,gdm是X Windows System(又稱X11)的顯示管理器(display manager)程式。X11就是我們在Ubuntu(還有其他的Linux)上面的這個可以用滑鼠游標點著使用的這個GUI的東西。我們現在要安裝Nvidia繪圖卡的程式,為什麼要暫時關掉gdm呢?就好像你要換地毯,必須先把躺在上面睡覺的橘色貓趕走(哈)….

Linux系統不一樣的話,也可能裝的是不同的display manager,譬如說lightdm,反正不管什麼貓,先叫他起來一下就對了….

Ubuntu桌面GUI這邊可以將使用者登出了。然後我們去找另一台電腦,因為剛剛已經裝了SSH Server,我們可以用SSH連線進來,接著用以下指令關掉這個Ubuntu上面的gdm (如果是lightdm應該也是看著辦):

sudo service gdm stop

這時候Ubuntu那邊螢幕會黑掉,別怕,這就是我們要的。現在貓已經走開,我們覺得應該可以透過SSH從遠端來裝NVIDIA-Linux-x86_64-550.78.run了!

sudo sh NVIDIA-Linux-x86_64-550.78.run

但是不行,你還需要gcc-12(安裝gcc-12)

果然事情沒有那麼簡單,sudo sh NVIDIA-Linux-x86_64-550.78.run下去,他藍藍的畫面裝到一半就跳出錯誤了,檢查log檔,它說我們的版本是gcc 11,但是他要gcc 12,所以見招拆招吧:

檢查/var/log/nvidia-installer.log,紀錄裡面說:

The major and minor number of the compiler used to
compile the kernel:

x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0, GNU ld (GNU Binutils for Ubuntu) 2.38

does not match the compiler used here:

cc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

所以我們需要安裝gcc-12,這樣裝:

sudo apt-get install gcc-12

檢查一下版本,現在gcc是11.4.0,而我們也剛剛裝好了gcc-12(12.3.0)

$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ gcc-12 --version
gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

改一下,以後用gcc-12吧!在/usr/bin底下的gcc其實是一個link,我們把它指向剛剛裝的gcc-12,這樣以後誰要gcc就會被引導到gcc-12去了!

/usr/bin$ sudo ln -f /usr/bin/gcc-12 gcc

我們既然解決了gcc的版本,就趕快再重跑一次安裝吧:

sudo sh NVIDIA-Linux-x86_64-550.78.run

這下可以正常安裝了!只要回答問題繼續繼續下一步…,全部完成之後,用sudo reboot now重新開機。

回到Ubuntu Desktop前面,重新開機之後登入畫面似乎又出現了,進去看看是否一切正常囉!

檢查顯示卡狀態

你可以用nvidia-smi指令檢查顯卡是不是乖乖的唷!這裡顯示我們的Quadro RTX 4000還有P620的溫度、能耗、記憶體使用等狀況。

$ nvidia-smi
Sat May  4 12:47:13 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.78                 Driver Version: 550.78         CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Quadro RTX 4000                Off |   00000000:01:00.0 Off |                  N/A |
| 30%   47C    P8              8W /  125W |       6MiB /   8192MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
|   1  Quadro P620                    Off |   00000000:02:00.0  On |                  N/A |
| 38%   44C    P8             N/A /  N/A  |      34MiB /   2048MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A       921      G   /usr/lib/xorg/Xorg                              4MiB |
|    1   N/A  N/A       921      G   /usr/lib/xorg/Xorg                             25MiB |
|    1   N/A  N/A      1088      G   /usr/bin/gnome-shell                            5MiB |
+-----------------------------------------------------------------------------------------+

安裝MinKNOW

MinKNOW是Nanopore定序的控制程式,從官網可以找到MinKNOW在Linux上的安裝方法:

https://community.nanoporetech.com/docs/prepare/library_prep_protocols/experiment-companion-minknow/v/mke_1013_v1_revdc_11apr2016/installing-minknow-on-linu

依照以上網站的說明進行安裝囉,我們是Ubuntu22,所以照他指示的,第一步,先用以下指令先把repo弄好:

sudo apt update
sudo apt install wget
wget -O- https://cdn.oxfordnanoportal.com/apt/ont-repo.pub | sudo apt-key add -
echo "deb http://cdn.oxfordnanoportal.com/apt jammy-stable non-free" | sudo tee /etc/apt/sources.list.d/nanoporetech.sources.list 

然後我們選GPU版本來裝:

sudo apt update
sudo apt install ont-standalone-minknow-gpu-release

稍等安裝就完成啦!

按MinKNOW的icon啟動就像這樣:

總結

其實裝這個一點都不難,難的是每一次遇到的問題都不大一樣。遇到問題的時候,盡量細心的讀錯誤的訊息、安裝的log紀錄之類的,一般來說你會遇到的問題別人早就遇過了,所以網路上要找到解方不難。但是盡量不要「不知道原因就隨便照著輸入sudo指令」喔!

謝謝我們團隊的美秀,文盛,詠婕犧牲週末的時間參與安裝的過程。