Ubuntu 下Caffe的安裝過程 -- 之一
Ubuntu 15.04 + CUDA7.5 + Caffe 配置筆記
一、Ubuntu 安裝
安裝Ubuntu 15.04x64 + Win7x64 雙系統,讓二者在啟動引導上相互隔離, 刪除Ubuntu時不至Win7躺槍,就必須講究安裝方法。
最easy的就是使用EasyBCD安裝。這可以將Ubuntu的啟動引導(Grub2)安裝在其自己的boot分割槽,而Win7的啟動引導則安裝在C盤或其保留分割槽,相互隔離,不存在用Ubuntu引導Win7啟動的問題,重灌和解除安裝互不影響。這個策略非常乾淨。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
那麼,問題來了,如果你主機板比較新,使用的是 "UFEI啟動 + GPT磁碟" 這個組合,那麼使用EasyBCD就有問題,如下所述.
問題始於,萬惡的windows推出一個稱之為UFEI的東東,美其名曰:大一統安全啟動引導介面!!此介面位於主機板和系統之間,用於啟動時進行軟硬體對接,即在主機板上載入系統核心,以及向系統核心註冊硬體。電腦一啟動,作業系統必須向主機板出示一個安全金鑰,主機板才會載入這個系統,可用於杜絕boot病毒,從Win8開始這個標準開始執行。。。 然就坑了Ubuntu等一大批Linux系統,因為這些系統必須向MS購買金鑰。。。但是!!為了防止被訴壟斷,微軟要求所有主機板廠商必須在提供UFEI的同時,以這樣或那樣的方式提供傳統的BISO啟動。。。微軟關上了一扇門,上帝打開了一扇窗
.,美帝的反壟斷大法果然強。。。
啟動方式: UFEI or Legacy BIOS
不用UFEI的原因是,EasyBCD 2.3 目前還無法在ufei中注入Ubuntu的grub2啟動,所以在UFEI引導下安裝的Win7,當安裝完EasyBCD後,軟體會提示:注意到你正在使用ufei,EasyBCD的許多特性都無法使用!而遮蔽ufei,在BIOS下重灌win7之後,EasyBCD一切正常。這樣後面安裝ubuntu時,EasyBCD才能在其boot分割槽上注入grub2啟動載入程式。
....不用UFEI的另一個好處時,不會在Win7的保留分割槽內額外生成一個ufei資料夾,從而可以用DsikGenius為win7的這個保留分割槽分配碟符使其可見,啟用win7就十分Easy了....
....若非要用ufei就要用其他方式解決雙系統隔離的問題,但百度之後發現都比較繁瑣 。
關掉UFEI的辦法看主機板什麼型別,我的華碩Z170-AR/-P,進入高階設定,啟動頁面,開啟CMOS選項設定為僅Legacy,開啟安全選項設定作業系統為others。
....重啟,插啟動U盤,啟動選項裡面徹底不見了UFEI字樣,,說明UFEI被成功遮蔽!!
....裝完Win7之後,用DiskGnius檢視隱藏分割槽,其中無ufei資料夾,只有boot資料夾,OK!
分割槽表型別: GPT or MBR
....GPT可以管理大於1.8T以上的磁碟,MBR不行,所以單盤超限的另尋解決辦法。
用Win7光碟在裸機上裝完系統之後,啟動方式+分割槽表 被預設處理為 UFEI+GPT 這樣的組合。可以用Diskgnis檢視Win7隱藏分割槽,隱藏分割槽中有個ufei資料夾,然後點各個磁碟檢視資訊,分割槽表型別都為GPT,這說明是UFEI+GPT的組合。
....進入按上步用BIOS安裝的Win7之後,開啟DiskGnius可轉換各GPT盤為MBR盤。但注意:不能直接轉換系統所在的C盤,因為會導致系統引導丟失,還有可能整壞硬碟。解決辦法是“騰籠換鳥”,在另一個已經轉換為MBR的空閒盤上用硬碟安裝的方式先安裝一個Win7上去,然後重啟進入這個新系統;再用DISK轉換原來的系統C盤為MBR,再用硬碟安裝方法在C盤裝上Win7,裝完之後進入C盤Win7,刪掉掉剛才空閒盤的那個臨時Win7即可。。。
....好訊息是:在非系統盤上用DISK轉換GPT為MBR時,不會格式化磁碟,所以資料仍然在
....之所以要轉換成MBR是因為裝Ubuntu出問題,啥問題忘了,不轉換應該也有解決辦法。。
OK! 這樣就得到了 BIOS啟動 + MBR磁碟 + Win7×64系統 的經典組合!!可以開始安裝 Ubuntu了。。。。。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下載Ubuntu 15.04 64位
下載UltraISO製作啟動U盤
在Win7某盤下壓縮出 300G~500G 空間,不新建分割槽、使其空閒
重啟進入BIOS,選擇U盤啟動
開始安裝》》。。。
分割槽:/ 90G~120G , /boot 200M~400M , swap 記憶體大小左右 ,/home 剩餘
分割槽順序按此方式、且全部設定為邏輯分割槽,其他方式也可但發現容易出問題........
注意::分割槽完成之後,安裝開始之前,切記要在下方的啟動器安裝選項(boot installer)上,手動選擇,將啟動器安裝到你的上述boot分割槽中,否則預設的話就是用ubuntu引導win7了
....另外::若需重灌ubuntu的時候,要進入Win7重新刪除四個分割槽,格式化該盤,使其空閒。進入安裝介面後,還要改變上述分割槽的相對大小,不然ubuntu會一直卡在creating ext4 ... 安裝不下去。
....另外::若上述辦法還是繼續卡在creating ext4上,則在Win7下重新格式化該區,並預先分好4個區的大小,進入Ubuntu安裝介面後,將四個對應分割槽掛載上去即可,可順利安裝......
....另外::重灌Ubuntu之後,進入Win7,用EasyBCD刪掉上次的grub2啟動,重新建一個即可
....但是::這樣還是有可能會碰到安裝進度條卡在 creating etx4...這裡,百度了好久沒找到辦法,我在這都卡瘋了。看到的有解決辦法,還請留言分享下啊*&……*&*&
最好選擇英文安裝,方便安裝caffe相關軟體時路徑全英文,進入之後再安裝中文包和fcitx中文輸入法....
最好斷開網路安裝,否則會下載語言包和更新/.///
等待安裝完成,系統提示:重啟電腦
重啟之後會直接進入Win7,這時開啟EasyBCD,在剛才的boot目錄上新增linux的gub2啟動。
OK !!
重啟之後,介面出現系統選擇 ......... 進入ubuntu ..................
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
進入系統之後,
開啟終端,右擊桌面,
設定root使用者密碼,sudo passward
修改apt-get源為阿里雲,sudo gedit /etc/apt/sources.list
遇到自動推送的系統更新,不要同意,也不要不同意,直接x掉!
語言設定中安裝中文包,自帶fcitx拼音輸入法
注意不要用中文替換原英文資料夾,
開始caffe安裝 。。。
二、CUDA 安裝
CUDA 安裝會出各種奇妙問題,顯示卡、系統各不一樣,所以雖然問題的表現形式一樣,但解決辦法可能不一樣,因為驅動跟硬體緊密相關,在軟體層面很難統一解決,所以多百度幾種方法試吧。。。 CUDA的官方安裝文件,小白的一大原罪就是不喜官方資料,想偷懶結果還繞了個大彎……*&*%!!!2.1 關閉xWindow,開啟tty1
安裝cuda的同時會安裝顯示卡驅動,因此要進入ubuntu的純字元介面才行 。 方法是 ctrl + alt + F1 進入tty1,登入, 輸入init 3,進入純字元介面。 可以按ctrl+alt+F7驗證,無法返回xWindow了,說明關閉成功。 再次 ctrl + alt + F1 返回tty1。 輸入startx , 會再次恢復啟動xWinow。 ctrl+atl +f7 即可進入。 如果 init 3 & startx 不行,可以用 sudo service lightdm start/stop 命令。 如果中間哪一步卡住了,強制重啟,再試一次,仍然不行說明有問題。 注意,關閉xWindow後,切換到xWin時應該只顯示一行219的版本號,沒有[ok]start lightdm maneger之類的。 否則,後續安裝會有錯誤。 —————————————————————— 如果上面這個操作,完全沒問題,OK,可以開始CUDA安裝了 —————————————————————— 但我這遇到問題: 安裝cuda前,進入tty1黑屏,返回xWindow正常. 。。。 安裝cuda後,登陸xWindow異常,進入tty1正常 。 。。 安裝cuda中,爆出“ Error: can't xxx kernel xxx ”。。。 方法一:網上有用sudo stop lightdm關閉xWindow的,但是需要自己生成和修改xorg檔案,ubuntu15.04安裝完預設是沒有這玩意的。參考好多部落格後,沒弄成,非常不適合linux新手。 方法二:還有用stop gdm的,gdm是相對於lightdm的另一套xWindow,現在不流行了,所以預設沒安裝上,需要自己 apt-get install gdm,然後從lightdm切換到gdm。在gdm下可用sudo gdm stop, 來關閉xWIndow。這個的好處是不用修改xorg檔案。但這個也有點問題,忘了。 方法三:浪費一天google來的,非常簡單,原文中這個辦法用來解決“裝完nvidia驅動,重啟後卡在登陸介面,無法進入xWindow”這個問題的。在我這是被用來解決“裝nvidia驅動或cuda前,進入tty1黑屏”這個問題。 方法流程如下:- cd /etc/default
- sudo cp grub grub.bk #備份
- sudo gedit grub
- GRUB_CMDLINE_LINUX="nomodeset"#修改
- sudo update-grub #更新grub
- sudo reboot #重啟
重啟之後,發現桌面解析度掉到渣,說明奏效了。。 先登陸 xWindow, 嘗試切換到 tty1,果然成功刷出登陸提示,tty1黑屏的問題解決! 可以驗證下, xWindow 和 tty1 是否可毫無障礙的 反覆自由 切換。。。驗證OK! 接下來就可關閉xWindow,只使用tty1了。 登陸tty1→輸入 init 3 /或者 sudo service lightdm stop→xWindow被關閉,→可能會卡屏,ctr+alt+f1 就可以了。。 可以驗證下, ctr+alt+f7 開啟xWindow 失效,顯示且只顯示一個版本號 。。。驗證OK! 可以安裝cuda了 !!! 方法四: 本文是單顯示卡titanx,按方法三第一天裝完cuda正常,裝opencv時出問題,因此第二天重灌按方法三再整,結果出了新問題 。安裝完cuda後,無法正常登陸xWindow,只能進入tty1。 重新整了好多次無果! 最後在cuda的官方安裝教程中,發現方法四~~~終於成功~~~ 操作如下: #開啟終端
- lsmod | grep nouveau #驗證 有輸出說明noveau驅動正常
- cd /etc/modprobe.d
- sudo gedit balcklist-nouveau #寫入以下2句儲存
- blacklist nouveau
- options nouveau modset=0
- sudo update-initramfs -u #更新init
- sudo reboot #重啟,發現解析度掉渣
- lsmod | grep nouveau #驗證,無輸出說明遮蔽noveau成功
此時再次嘗試,進入tty1,無黑屏bug。再返回xWindow,也無障礙。
在tty1下,sudo service lightdm stop. → xWindow被關閉!
可以驗證,ctr+alt+f7返回xWindow時,只顯示一版本號。
在tty1下, sudo service lightdm start. → 開啟xWindow成功!
可以驗證,ctrl+alt+f7成功返回xWindow.
再重啟後,仍可迴圈切換,完美關閉或開啟xWindow。
說明終於完美實現了 字元終端和圖形終端的切換。
開始安裝cuda~~~~~~~
方法五:本文另一臺式機,GTX970單顯示卡,按照上述方法三和方法四安裝cuda,安裝之前能正常切換tty1和xWindow。 但是,安裝之後,竟然就進不去xWindow了,一直卡在登陸介面,輸入密碼死迴圈!!而在安裝過程中曾爆出一個“ Error: can't return kernel xxx” ,據查,這個是安裝驅動的時候需要linux 核心參與編譯。在tty1下驗證顯示卡驅動是否存在,ls /proc/drivers/nvidia, 無任何輸出,說明顯示卡驅動確實沒寫進去。 最後的解決辦法如下:
1.完全重灌ubuntu15.04
2.未降級gcc/g++-4.9到gcc/g++-4.7
(這個是導致產生kernel錯誤的原因。)
3.未更換阿里源,使用系統自帶的apt源。
(這個估計更換後無影響,因為我後面安裝opencv時為加快速度,還是換成阿里源了)
(cuda安裝過程中會自動驗證kernel的版本資訊,阿里源只是原生源的映象,差異有一點點,但kernel-header應該是一致的,另一臺titanx的就在阿里源下安裝的cuda).
4.彈出系統升級提示時,不要接受,也不要拒絕,直接x掉。
據我推斷,接受升級肯定會修改核心,但拒絕升級坑能也會!!。 (最有可能是這個原因)
5.官方安裝指導的 pre-installation中,需要驗證系統型別x86_64,以及更新kernel-header,這些都沒做。
因為ubuntu15.04_x86_64安裝完,預設是最新的kernel-header.
6.按方法三,修改GRUB_CMDLINE_LINUX="nomodeset",並sudo update-grub,再重啟!
7.解析度掉渣,進入tty1, sudo service lightdm stop 關閉xWindow.
注意驗證下,返回xWindow時,顯示且僅顯示一行219版本號,說明才是徹底關閉了。
8.開始安裝cuda。
終於進入油意義的第一步!! ----------------------2.2 安裝cuda 7.5
預先下載並拷貝cuda7.5_linux_64_.deb安裝包到home下。 關於是否要先獨立安裝nvidia驅動的問題,本人嘗試幾次重灌都失敗了,無法開啟核心什麼的。。 因此直接cuda走起,安裝cuda的時候會自動安裝驅動。。。 安裝過程中要編譯,因此先對gcc和g++進行降級,至-4.7版本。 後面安裝各種包都要用到gcc, 所以一開始降級可讓全部軟體包的安裝都比較一致。降級方法參見歐新宇。 進入tty1,關閉xWindow,開始安裝- cd ~
- sudo dpkg -i install cuda---x-x-x.deb
- sudo apt-get update
- sudo apt-get install -y cuda
- cd /etc
- sudo gedit profile #寫入以下2句儲存
- PATH=/usr/local/cuda/bin:$PATH
- export PATH
- source /etc/profile #立即生效
- cd /etc/ld.so.conf.d
- ls
- sudo cp xxx.conf cuda.conf #xxx替換成ls出的隨便哪個檔案
- sudo gedit cuda.conf #編輯
- /usr/local/cuda/lib64 #寫入並儲存
- sudo ldconfig -v #立即生效
- nvcc --version #驗證
注意:此處可先重啟電腦,不重啟就要在這個終端內繼續,不更換新的終端視窗。 因為上面的立即生效是針對當前終端這個shell的,不是整個系統,只有重啟才能應用到整個系統。 可以驗證,在不重啟時,另開一終端,nvcc --version 是無輸出的。
2.3 安裝cuda sample
- cd /usr/local/cuda/samples
- sudo make all -j8 #編譯
- cd ./bin/x86_64/linux/release #驗證
- ./deviceQuery #刷出顯示卡資訊 則成功
2.4 安裝cudnn-v4
由於是cuda7.5 所以安裝 cudnn-v4.0比較好 下載 cudnn-7.0-linux-x64-v4.0-prod.tgz 放到home下- tar zxvf cudnn-7.0-linux-x86-v4.0-prod.taz
- sudo cp include/cudnn.h /usr/local/include
- sudo cp lib64/libcudnn.* /usr/local/lib
- sudo ln -sf /usr/local/lib/libcudnn.so.7.0.64 /usr/local/lib/libcudnn.so.7.0 #建立連結
- sudo ln -sf /usr/local/lib/libcudnn.so.7.0 /usr/local/lib/libcudnn.so
- sudo ldconfig -v
三、Matlab 安裝
Matlab安裝簡單,參見歐新宇。
注意拷貝matlab至home資料夾時,使用歐的掛在方法,sudo cp 之後,安裝時出現許可權不足,且無法更改?
網上找的連結: http://pan.baidu.com/s/1c0jaEek 密碼: cjvg
安裝完成之後,Home下的Matlab資料夾即可刪除。
四、BLAS 安裝
BLAS可選MKL和altas,安裝簡單。 mkl-2016下載和安裝參見歐新宇。 注意mkl只能安裝一次!! 如果沒有mkl,就安裝預設的 altas ! 本文前後2臺電腦,分別安裝了mkl 和 altas,都OK!. 後面都以安裝altas的電腦為例:- sudo apt-get install libatlas-base-dev