為你的QNAP搭建一個內核及驅動程式交叉編譯的環境(純Linux小白不專業學習經驗, 高手請無視)

在插入非官方的硬體時,常要在網上到處搜尋別人編譯好的驅動,但這就很被動… 這可以自已來嗎… 當然可以,依GPL的規範,QNAP 也發布了相關的工具及系統內核文檔給使用者使用,我們可以在QNAP的官網最下面在資源欄位下面找到GPL的鏈結:

為你的QNAP搭建一個內核及驅動程式交叉編譯的環境(純Linux小白不專業學習經驗, 高手請無視)

點擊官網上的鏈結就會導向到下載的網站,點擊Download就可以下載最新版的內核文件:
為你的QNAP搭建一個內核及驅動程式交叉編譯的環境(純Linux小白不專業學習經驗, 高手請無視)

下載完內核文件,我們還需要交叉編譯的工具,在files欄位,我們可以找到QNAP發布的QNAP NAS ToolChains目錄:
為你的QNAP搭建一個內核及驅動程式交叉編譯的環境(純Linux小白不專業學習經驗, 高手請無視)

進入QNAP NAS ToolChains目錄後,就可以看到交叉編譯的工具SDK,我們把它下載回來。
為你的QNAP搭建一個內核及驅動程式交叉編譯的環境(純Linux小白不專業學習經驗, 高手請無視)

這樣就把QNAP提供的編譯工具及內核文件下載回來了~

接著我們還需要一個Linux的環境,可以用Oracle免費的Virtual BOX或是VMware Workstation Player (個人/非營利机构可免費使用)來創建安裝一個虛擬的Linux系統,我習慣用Ubuntu 18.04,所以我虛擬了一個Ubuntu server的系統用來搭建QNAP的交叉編譯環境。
有MCSE認証但不務正業的國際貿易打雜員工
從Ubuntu台灣站點下載伺服器版本來安裝就可以了~


打開VMware,新建一台虛擬機,分配給它基本的硬體即可,在虛擬CD/DVD插入ubuntu的ISO檔,再分配給它20g的虛擬硬碟就夠用了!


設定好就可以啟動虛擬機,依提示安裝系統即可,安裝好系統後,登入系統,先下ifconfig命令查詢一下IP位址:


現在要把剛才下載回來的壓縮檔上傳到虛擬機中,我習慣用WinSCP這個程式,方便簡單好用,還可在線編輯文件,使用SFTP協議,輸入剛才查詢到的虛擬機IP,端口是22,UBUNTU的使用者名稱、密碼,儲存後,按登入即可登入虛擬機中。


登入後會到home/user的文件夾中,我們直接把2個壓縮檔上傳到這邊。


現在我們已經把內核文件和編譯工具都扔到Ubuntu系統上了…
有MCSE認証但不務正業的國際貿易打雜員工
接著我們要安裝這個工具,依照QNAP發布的手冊中可以查到要先解壓縮這2個檔案:




但在虛擬機上操作不是太方便,所以我這邊用Putty來做為登入工具,打開Putty,選擇SSH協議,輸入虛擬機的IP及port,點擊open:


此時就會打開終端机,在這邊輸入使用者名稱按Enter,輸入密碼(不會顯示)按Enter,就會登入虛擬機的Ubuntu系統:


登入後是直接到home/user的目錄,我們可以下ls命令看一下剛才用WinSCP上傳的檔案是否存在:


接著我們依QNAP的說明文檔先解壓,輸入tar vxf C按tab鍵,因為此目錄大寫C開頭的檔案只有1個,所以當我們在輸入C並按tab鍵時,
系統會自動補齊這個檔案名全稱變成:tar vxf Cross\ Toolchain\ SDK\ \(x86\)\ 20180115.tgz
我們繼續在系統補齊的檔名後面再輸入-c ~\
使整個命令變成:tar vxf Cross\ Toolchain\ SDK\ \(x86\)\ 20180115.tgz -c ~\
按Enter後就會自動解壓縮到這個目錄中


我們用同樣的方法,利用tab鍵補齊檔名的方式,簡單的就可以把另一個GPL_QTS-4.5.4-20210802_Kernel.tar.gz也解壓到這個目錄中。
有MCSE認証但不務正業的國際貿易打雜員工
都解壓縮了後,就完成安裝了…

此時我們要修改Makefile檔案,這是編譯器文檔,我們要加入相關的設定參數…

使用WinSCP連上Ubuntu,來到要編譯版本下面的目錄,直接雙擊makefile這個檔案:



WinSCP會打開這個檔案讓你直接在線編輯:


我們要把文件關聯設定參數加到CFLAGS_MODULE及CFLAGS_KERNEL這邊:


※ 詳細參數可google就有,注意參數很長,輸入時不要斷行,要全部在同一行。
※ 參數中是用TS-1279U的機型,這不改沒有關系,因驅動不依賴機型關聯。


輸入完按左上角的存檔後關閉文件即可。

接著後我們依這驅動是要編譯給哪個機型用的,就去剛才下載並解壓的GPL_QTS\Kernel_cfg\XXXXX\ 去把設定檔給複製過來makefile這個文件的目錄中,例如我們要編譯給TS-453D用的,那就去TS-X53D的目鍵下複制該設定檔:



現在準備工作都好了,就可以回到Putty的終端机工作了~
有MCSE認証但不務正業的國際貿易打雜員工
回到Putty終端機這邊,我們設定一下環境變數… 依序輸入下面的命令後按Enter

export PATH=$PATH:~/x86_64-QNAP-linux-gnu/cross-tools/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/x86_64-QNAP-linux-gnu/cross-tools/bin/lib
export CROSS_COMPILE=x86_64-QNAP-linux-gnu-
export ARCH=x86_64

最後就可以開始配置了…

輸入 make menuconfig 按Enter後,會打開配置的對話框,愉快的玩耍吧~ 想要什麼自已來。



有MCSE認証但不務正業的國際貿易打雜員工
有 TrueNAS 可以玩,玩 QNAP 幹嘛?

付錢還要自力做售後服務?
jeel54321 wrote:
有 TrueNAS (恕刪)


因為有的時候會遇到整台機器都是非官方硬體啊…
有MCSE認証但不務正業的國際貿易打雜員工
chirle wrote:
因為有的時候會遇到整(恕刪)


不想用官方硬體,幹嘛去用規定要官方硬體的產品?

你上面搞的難度,都超出我裝 trueNAS 的難度了!不考慮去當 QNAP 的開發人員?

還是你本來就是 QNAP 的網路駐點工程師?
jeel54321 wrote:
不想用官方硬體,幹嘛(恕刪)


…… 純興趣好玩的而已… 這也只是Linux基礎而已,我也還在摸索學習中!

而且我這Linux入門者,離工程師的等級也差太遠了。

會想學習架這個編譯環境,是因為我買了一台超迷你的小主机只有手掌大小,可裝1顆2.5"SATA硬碟、1支M2 SATA 2280的SSD及1支M.2 NVMe 的SSD,我把它放在客廳跑NAS系統做監控攝影機的儲存並接到電視當成電視盒子追劇使用,非常的好用。

但它的EC是用ITE 8110E,我如果想在系統中,要調取相關的硬體監控數據,如風扇轉速、溫度… 就得先驅動這顆EC Chip,再調取它生成的數據,而且就算是我主機板上的SIO晶片和QNAP家同一型號,也無法直接拿來用,它是依原廠硬體定制的,我想拿來用也得重新編譯才能使用,所以才會去尋找資料…

雖然沒有這些硬體監控數據,系統也是正常運作,但看到系統溫度顯示的是0℃/32℉就是覺得很難受…

總結就是不想花錢加上有輕微強迫症,自已動手樂趣多! 又可以學習相關知識~
有MCSE認証但不務正業的國際貿易打雜員工
給熱心地樓主拍拍手。
除了自我學習,還願意熱心分享。
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!