1. 程式人生 > >Ubuntu 下Caffe的安裝過程 -- 之一

Ubuntu 下Caffe的安裝過程 -- 之一

本人硬體環境 titanx ubuntu 14.04 win7雙系統 參考:http://blog.csdn.net/zhjm07054115/article/details/51811495

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,以及開啟BIOS的辦法,各家主機板不一樣。

    啟動方式: 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黑屏”這個問題。 方法流程如下:
  1. cd /etc/default  
  2. sudo cp grub grub.bk  #備份
  3. sudo gedit grub  
  4. GRUB_CMDLINE_LINUX="nomodeset"#修改
  5. sudo update-grub  #更新grub
  6. 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的官方安裝教程中,發現方法四~~~終於成功~~~ 操作如下: #開啟終端
  1. lsmod | grep nouveau        #驗證 有輸出說明noveau驅動正常
  2. cd /etc/modprobe.d  
  3. sudo gedit balcklist-nouveau  #寫入以下2句儲存
  4. blacklist nouveau  
  5. options nouveau modset=0
  6. sudo update-initramfs -u    #更新init
  7. sudo reboot                 #重啟,發現解析度掉渣
  8. 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,開始安裝
  1. cd ~  
  2. sudo dpkg -i install cuda---x-x-x.deb  
  3. sudo apt-get update  
  4. sudo apt-get install -y cuda   
等待安裝完成 》》》》 注意:安裝的過程中,可能會刷出ERROR,解除安裝掉或重灌來過......  重啟:sudo reboot! 配置cuda bin & lib 目錄
  1. cd /etc  
  2. sudo gedit profile   #寫入以下2句儲存
  3. PATH=/usr/local/cuda/bin:$PATH    
  4. export PATH  
  5. source /etc/profile #立即生效

  1. cd /etc/ld.so.conf.d  
  2. ls  
  3. sudo cp xxx.conf  cuda.conf   #xxx替換成ls出的隨便哪個檔案
  4. sudo gedit cuda.conf          #編輯
  5. /usr/local/cuda/lib64         #寫入並儲存
  6. sudo ldconfig -v              #立即生效
  7. nvcc --version                #驗證

注意:此處可先重啟電腦,不重啟就要在這個終端內繼續,不更換新的終端視窗。 因為上面的立即生效是針對當前終端這個shell的,不是整個系統,只有重啟才能應用到整個系統。 可以驗證,在不重啟時,另開一終端,nvcc --version 是無輸出的。

2.3 安裝cuda sample

  1. cd /usr/local/cuda/samples  
  2. sudo make all -j8                #編譯
  3. cd ./bin/x86_64/linux/release    #驗證
  4. ./deviceQuery                    #刷出顯示卡資訊 則成功

2.4 安裝cudnn-v4

由於是cuda7.5 所以安裝 cudnn-v4.0比較好 下載 cudnn-7.0-linux-x64-v4.0-prod.tgz 放到home下
  1. tar zxvf cudnn-7.0-linux-x86-v4.0-prod.taz    
  2. sudo cp include/cudnn.h /usr/local/include  
  3. sudo cp lib64/libcudnn.* /usr/local/lib  
  4. sudo ln -sf /usr/local/lib/libcudnn.so.7.0.64 /usr/local/lib/libcudnn.so.7.0   #建立連結  
  5. sudo ln -sf /usr/local/lib/libcudnn.so.7.0 /usr/local/lib/libcudnn.so  
  6. 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的電腦為例:
  1. sudo apt-get install libatlas-base-dev  

五、OpenCV安裝

OpenCV大部分使用 Install_OpenCV_Master這個方法,但這個安裝過程比