迅爲iMX6ULL開發板移植 ssh 服務

硬件平臺:i.MX6UULL開發板

 

轉自:迅爲i.MX6UULL開發板使用手冊第七十五章

 

整個移植過程是比較簡單的,而且我們沒有做任何協議方面的瞭解,只是“配置”+“編譯”就完成了整個工作,現在大家應該對移植開源軟件有了基本的瞭解。本章節使用的資料已經放到了開發板網盤資料中,路徑爲:11_Linux 系統開發進階\75_章節使用資料

入門視頻教程中,給 Windows 系統安裝了 ssh 客戶端,給 Ubuntu 安裝了 ssh 服務器,這樣就可以通過 ssh 在 Windows 和虛擬機 Ubuntu 之間傳輸文件。其實在開發板上也是可以移植和安裝 ssh 服務器,這樣就可以通過網絡,在 Windows 和開發板之間傳輸文件。

我們要完成的目標是能夠通過 ssh 在開發板在 Windows 和開發板之間傳輸文件,當然也是可以使用ssh 控制檯。

這個實驗比前面的“串口文件傳輸工具”教程在工程(實用性)上是更加有用的,假如在實際的產品中,運行的是根文件系統,沒有界面,如果數據需要在開發板和 Windows 傳輸數據,對於普通用戶來說,是一個很好的選擇,操作起來比較簡單,只需要登陸然後直接將文件拖來拖去即可。

這個實驗的難度要比“串口文件傳輸工具”要大一點,ssh 服務器需要依賴其他的庫文件,所以需要開發者先移植完成所有依賴的庫文件,最後才能移植 ssh 服務器。

 

75.1 SSH 官網和下載地址

本小節的地址在作者沒有代理的情況下,測試可用。

OpenssL 下載官網地址,如下所示。就是羅永浩捐過 100 萬的那個開源組織。

https://www.openssl.org/source/

OpenssL 的 github 下載地址,如下所示。

https://github.com/openssl/openssl

ssh 開源組織官網地址,如下所示。

http://www.openssh.com/

HXng KXng(o 用 X 替代,以防文檔上傳之後被屏蔽)的 ssh 下載地址,測試可以用,

如下所示。

https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/

zlib 官網地址,如下所示。

http://www.zlib.net/

75.2 詳細移植過程

源碼使用迅爲下載好的,編譯器使用“arm-2009q3”。

作者是在 “/home/topeet/project/ssh-arm/”目錄下,放三個需要移植的文件,移植文件的安裝目錄是“/home/topeet/project/ssh-arm/”目錄下的“install”文件夾。install 下新建兩個文件夾 “openssl-0.9.8h”和“zlib-1.2.3”,後面編譯之後需要安裝到這個目錄下。

 

 

75.2.1 移植 Zlib

Ø 從迅爲提供的資料中拷貝“zlib-1.2.3.tar.gz”到 Ubuntu 系統,使用命令“tar -vxf

zlib-1.2.3.tar.gz”解壓,得到“zlib-1.2.3”文件夾,使用命令“cd zlib-1.2.3”進入“zlib-1.2.3” 文件夾,如圖 75.2.1.1

 

 

Ø 接着使用命令“./configure --prefix=/home/topeet/project/ssh-arm/install/zlib-1.2.3”,設置配置文件,如圖 75.2.1.1 所示。

 

 

Ø 使用命令“vim Makefile”修改編譯參數,將所有 gcc 修改爲“arm-none-linux-gnueabi-gcc”,

如圖 75.2.1.3 所示。

 

 

Ø 接着使用編譯命令“make”,如圖 75.2.1.4 所示。

 

 

 

Ø 執行 make 無報錯後,接着使用安裝命令“make install”,如圖 75.2.1.5 所示。

 

 

Ø 現在已經安裝好了 zlib 庫,在後面編譯 SSH 的時候,需要用到 zlib 庫,作者這裏的路徑是 “/home/topeet/project/ssh-arm/install”,後面配置的時候需要對應生成的庫文件,如圖 75.2.1.6 所示。

 

Ø

這部分移植其實就是修改了編譯器,修改編譯器之後編譯出的文件和不修改編譯出來的文件是不一樣的。在移植過程中,可能因爲沒有將編譯器配置爲目標系統的編譯器,那麼編譯出來的一定運行不了。

這裏可以通過 linux 的 strings 命令查看非文本文件中的可讀內容(libz.a),通常可以和 grep 命令搭配使用。

如下圖所示,使用命令“strings -a /home/topeet/project/ssh-arm/install/zlib-

1.2.3/lib/libz.a”可以查看到所有可讀信息,可讀信息比較多,可以保存爲文本再查看,使用

命令“strings -a /home/topeet/project/ssh-arm/install/zlib-1.2.3/lib/libz.a > log.my”重定位一下輸出即可。

 

 

這裏需要用到的命令是“strings -a /home/topeet/project/ssh-arm/install/zlib-

1.2.3/lib/libz.a | grep “GCC””,如圖 75.2.1.8 所示。

 

 

如上圖所示,可以看到編譯器版本是“2009q3-67-4.4.1”的,說明這個庫是使用我們設置的編譯編譯的,編譯出的庫文件當然也是 arm 上使用的。

75.2.2 移植 Openssl

Ø 接着來移植 openssl 庫,拷貝“openssl-0.9.8h.tar.gz”到 Ubuntu 系統,使用命令

“tar -vxf openssl-0.9.8h.tar.gz”解壓,得到“openssl-0.9.8h”文件夾,使用命令“cd openssl-0.9.8h” 進入“openssl-0.9.8h”文件夾,如圖 75.2.2.1 所示。

 

 

Ø 接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux-

gnueabi-gcc' --prefix=/home/topeet/project/ssh-arm/install/openssl-0.9.8h”配置編譯文件, 如圖 75.2.2.2 所示。

 

 

 

配置完成,如圖 75.2.2.3 所示。

 

 

Ø 使用編譯命令“make”編譯完成,如圖 75.2.2.4 所示。

 

 

Ø 最後使用安裝命令“make install”,編譯完成,如圖 75.2.2.5 所示。

 

 

 

如圖 75.2.2.6 所示,可以看到生成了後面移植 ssh 需要的對應的庫文件。

 

 

和前面 libz.a 小節類似,可以使用命令查看一下編譯出來的文件到底有沒有配置正確。

 

 

75.2.3 移植 SSH

Ø 接着來移植 openssh,拷貝“openssh-4.6p1.tar.gz”到 Ubuntu 系統,使用命令“tar -vxf

openssh-4.6p1.tar.gz”解壓,得到“openssh-4.6p1”文件夾,使用命令“cd openssh-4.6p1/”進入“openssh-4.6p1”文件夾,如圖 75.2.3.1 所示。

 

 

Ø這裏看一下 ssh 的 configure 的幫助文件,如圖 75.2.3.2 所示,使用“ ./configure --help”。

 

 

ssh 的 configure 文件中需要配置的參數

--host 表示編譯出來要運行的平臺

--with-libs 表示需要的額外的庫文件;

--with-zlib 表示庫文件 zlib 的 instal 路徑 l;

--with-ssl-dir 表示 OpenSSl 文件的 install 路徑;

--disable-etc-default-login 表示不使用當前環境變量的編譯器,所以後面配置參數時,最後直接配置 CC 和 AR 這兩個編譯器;

CC 表示設置使用的編譯器;

AR 表示設置使用的編譯器的路徑(蠻奇怪,配置文件中似乎沒有這個參數,用戶可以執

行驗證下)。

Ø 接着使用配置命令,命令比較長,作者使用顏色給大家分段:

./configure --host=arm-none-linux --with-libs

--with-zlib=/home/topeet/project/ssh-arm/install/zlib-1.2.3

--with-ssl-dir=/home/topeet/project/ssh-arm/install/openssl-0.9.8h

--disable-etc-default-login

CC=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc

AR=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ar

配置編譯文件,如圖 75.2.3.3 所示。

 

 

配置完成,如圖 75.2.3.4 所示

 

 

 

 

Ø 使用編譯命令“make”,編譯完成,如圖 75.2.3.5 所示

 

 

 

Ø 編譯完成,最後肯定是需要安裝到開發板上的,如下圖所示。最後在目錄下

“/home/topeet/project/ssh-arm/openssh-4.6p1”有這幾個二進制文件“scp 、sftp 、ssh、 sshd、 ssh-add、ssh-agent、ssh-keygen、ssh-keyscan”需要安裝到開發板上。最終編譯出來的二進制文件,可 以使用 file 命令查看文件屬性,如圖 75.2.3.6 所示,使用命令“file scp”,可以看到“scp”文件是 32 位 ARM 上使用的可執行文件

 

 

關注公衆號“迅爲電子” 持續更新行業乾貨!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章