www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > > 充電吧
[導(dǎo)讀]前言:   最近試著在嵌入式系統(tǒng)建立一個(gè)ftp服務(wù)器。從網(wǎng)上搜羅了一大堆,但是下載下來編譯的時(shí)候卻發(fā)現(xiàn)自己對(duì)交叉編譯方面的知識(shí)知道的太少了。哎,于是抱著網(wǎng)絡(luò),狂搜了一通,終于多少有點(diǎn)頭緒。但是運(yùn)氣比

前言:

  最近試著在嵌入式系統(tǒng)建立一個(gè)ftp服務(wù)器。從網(wǎng)上搜羅了一大堆,但是下載下來編譯的時(shí)候卻發(fā)現(xiàn)自己對(duì)交叉編譯方面的知識(shí)知道的太少了。哎,于是抱著網(wǎng)絡(luò),狂搜了一通,終于多少有點(diǎn)頭緒。但是運(yùn)氣比較差,很多程序源碼都不能正確的編譯,目前只有這個(gè)vsftpd和tftp編譯通過了。真的好不容易呀,對(duì)于我這種菜鳥來說。所以,還是將這期間的一些東西記錄下來,也免得健忘的我以后再也回憶不起來了。

  正題:

  1. FTP相關(guān)知識(shí)

  1.1 綜述

  文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)的目的是在互聯(lián)網(wǎng)上進(jìn)行平臺(tái)無關(guān)的數(shù)據(jù)傳輸,它基于客戶機(jī)Client/服務(wù)器Server框架。RFC959規(guī)定FTP將通過兩個(gè)信道(端口)傳輸,一個(gè)傳輸數(shù)據(jù)(端口20),另外一個(gè)傳輸控制信息(端口21)。在控制信道之上,雙方交換用于發(fā)起數(shù)據(jù)傳輸?shù)拿睢?

  一個(gè)FTP連接包含4個(gè)步驟:用戶鑒權(quán);建立控制信道;建立數(shù)據(jù)信道;關(guān)閉連接。

  FTP的連接控制使用傳輸控制協(xié)議(Transmission Control Protocol,TCP),從而保證了數(shù)據(jù)的可靠傳輸。因此,F(xiàn)TP在數(shù)據(jù)傳輸中不需要關(guān)系分組丟失和數(shù)據(jù)錯(cuò)誤檢測。

  1.2 vsftpd

  在UNIX和Linux中,從安全角度上考慮的話,首推的就是VSFTPD(Very Secure FTP Daemon)

  ,它可以運(yùn)行在諸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服務(wù)器不支持的特征。比如: 非常高的安全性需求

  帶寬限制

  良好的可伸縮性

  創(chuàng)建虛擬用戶的可能性

  IPnG(譯注:IPv6)支持

  中等偏上的性能

  分配虛擬 IP 的可能性 高速

 ?。ㄆ鋵?shí)以上的綜述是我東拼西湊出來了,因?yàn)槲夷壳耙策€沒有感到它的優(yōu)點(diǎn)。呵呵?。?

  1.3 tftp

  TFTP
(Trivial File Transfer Protocol,簡單文件傳輸協(xié)議)也是TCP/IP協(xié)議族中的用于客戶機(jī)與服務(wù)器之間進(jìn)行簡單文件傳輸?shù)膮f(xié)議,只是其提供不復(fù)雜、開銷不大的文件傳輸服務(wù)。值得注意的是TFTP承載在UDP上,故而不提供可靠的數(shù)據(jù)流傳輸服務(wù)、不提供存取授權(quán)與認(rèn)證機(jī)制,其通過超時(shí)重傳方式來保證數(shù)據(jù)的到達(dá)。與FTP相比,TFTP要小的多,所以它只能從遠(yuǎn)程服務(wù)器上讀、寫文件(郵件)或者讀、寫文件傳送給遠(yuǎn)程服務(wù)器,不能列出目錄并且用戶認(rèn)證。另外,與FTP不同的是,TFTP采用默認(rèn)端口69#來進(jìn)行傳輸。

  2. 編譯系統(tǒng)

  編譯環(huán)境:虛擬機(jī)Fedora3.0;

  交叉編譯工具:mipsel-linux;

  3. 源碼下載

  官方網(wǎng)站:http://vsftpd.beasts.org/

  下載地址:ftp://vsftpd.beasts.org/users/cevans/

 ?。ㄗ钚碌陌姹荆簐sftpd-2.0.5.tar.gz)

  http://sourceforge.net/

 ?。?.0的簡單版本的tftp server和client C程序)

  4. vstftp編譯細(xì)節(jié)

  為了避免出錯(cuò),我在寫該部分的時(shí)候?qū)φ麄€(gè)下載以及編譯過程重新執(zhí)行了一遍,確保在我的系統(tǒng)上是Success的。

  4.1 交叉編譯

  #tar -zxvf vsftpd-2.0.5.tar.gz

 ?。d vsftpd-2.0.5

 ?。i Makefile

  根據(jù)自己的編譯器修改CC選項(xiàng),我的修改為: CC=mipsel-linux-gcc

 ?。ake

  如果順利的話,應(yīng)該生成vsftpd文件。

  4.2 安裝

  因?yàn)槲覀兪且獙⑵浞胖玫轿覀兊那度胧较到y(tǒng)中的,所以不能使用make install來直接安裝,需要我們自己手動(dòng)來拷貝一些文件到自己系統(tǒng)的相關(guān)目錄下。這個(gè)從INSTALL文件中有很詳細(xì)的說明,但這里我還是羅嗦一下吧(備注:我這里提到了目標(biāo)路徑均是嵌入式系統(tǒng)的相關(guān)路徑):

  #cp vsftpd /usr/local/sbin/ 或者 /usr/sbin/

 ?。p vstftpd.conf.5 /usr/local/man/man5/ 或者 /usr/share/man/man5/

  或者/usr/man/man5/

  #cp vsftpd.8 /usr/local/man/man8 或者 /usr/share/man/man5/

  或者/usr/man/man5/

 ?。p xinetd.d/vsftpd.conf /etc/vsftpd.conf

  注:vsftpd的配置選項(xiàng)均在vsftpd.conf文件中,根據(jù)自己的需求可以增添或者刪減一些內(nèi)容。

  4.3 運(yùn)行模式

  現(xiàn)在大致我們已經(jīng)將vsftpd移植到我們的嵌入式平臺(tái)中去了。但是vsftpd有三種運(yùn)行模式:inetd、xinted和standalone模式。對(duì)于RPM包管理的系統(tǒng),有xinted服務(wù)器一說,對(duì)于非RPM包管理系統(tǒng),沒有xinted,一般都使用inetd或者standalone來啟動(dòng)和管理服務(wù)器,這也就是獨(dú)立運(yùn)行模式。

  為了能讓vsftpd在系統(tǒng)中運(yùn)行,我們必須檢查以下幾個(gè)方面:

  1) 是否存在用戶nobody

  #useradd nobody/ftp

  2) 目錄/usr/share/empty

  3) 如果支持用戶匿名訪問,在需要?jiǎng)?chuàng)建目錄/var/ftp

 ?。kdir /var/ftp/

 ?。seradd –d /var/ftp ftp

  在以上的基礎(chǔ)上,我們就可以按照以下三種方式來運(yùn)行vsftpd。

 ?。?) inetd

  我們需要編輯配置文件/etc/inetd.conf,并在文中的FTP那行,有則修改無則增添如下項(xiàng)目:

  ftp stream tcp nowait root /usr/sbin/tcpd vsftpd

  (2) xinted

  需要修改源碼xinted.d/vsftpd文件。對(duì)如下的內(nèi)容需要在server欄填入4.2中的拷貝的vsftpd路徑,另外默認(rèn)disable=no,即每次開機(jī)會(huì)自動(dòng)啟動(dòng)該項(xiàng)服務(wù),如果需要手動(dòng)啟動(dòng)的話,將其更改為yes。

  service ftp

  {

  socket_type = stream

  wait = no

  user = root

  server = /usr/local/sbin/vsftpd

  # server_args = # log_on_success += DURATION USERID # log_on_failure += USERID nice = 10 disable = no } 通過service xinetd restart或者/etc/init.d/xinetd restart來啟動(dòng)該項(xiàng)服務(wù)(在修改了以上配置或者采用手動(dòng)啟動(dòng)方式)。

  注:選用inted或者xinted模式運(yùn)行的時(shí)候vsftpd.conf中的listen選項(xiàng)為no。

 ?。?) standalone模式

  選用standalone模式的時(shí)候需要將vsftpd.conf文件中l(wèi)isten選項(xiàng)改為yes。

  對(duì)于以上三種模式來說,均可以使用通用的vsftpd啟動(dòng)模式,即:

  /usr/sbin/vsftpd & 或者/usr/local/vsftpd &

  通常會(huì)犯的錯(cuò)誤就是在鍵入上述命令之后系統(tǒng)提示:“500 OOPS: could not bind listening IPv4 socket”的出錯(cuò)信息,這往往是由于沒有修改好vsftpd.conf文件使得xinetd已經(jīng)啟動(dòng)了vsftpd,而vsftpd卻設(shè)置成了standalone模式。所以,先使用service xinetd stop停止xinetd服務(wù),然后再通過上面的命令來啟動(dòng)?;蛘呷绻麅H使用standalone模式來啟動(dòng),可以刪除掉/etc/xinetd/vsftpd文件。

  當(dāng)然,你可以通過pgrep vsftpd來檢查vsftpd是否運(yùn)行起來,當(dāng)屏幕上出現(xiàn)一個(gè)阿拉伯?dāng)?shù)字的時(shí)候,恭喜你,嵌入式系統(tǒng)中的vsftpd服務(wù)器已經(jīng)建立起來了。之后就可以與通信的另外一個(gè)PC主機(jī)或者同樣的嵌入式系統(tǒng)(當(dāng)然,這個(gè)系統(tǒng)中應(yīng)當(dāng)有ftp的客戶端程序,如:ftp命令、lftp以及gftp等工具)進(jìn)行測試連接了。

  5. tftp編譯細(xì)節(jié)

  5.1 交叉編譯

  #tar -zxvf tftp-1.0.tar.gz

 ?。d tftp-1.0

  #vi Makefile

  根據(jù)自己的編譯器修改CC選項(xiàng),我的修改為:

  CC=mipsel-linux-gcc

  同時(shí),將strip 修改為mipsel-linux-strip.

  #make

  如果順利的話,應(yīng)該生成tftpc(client端)和tftpd(server端)文件。

  5.2 安裝

  因?yàn)槲覀兪且獙⑵浞胖玫轿覀兊那度胧较到y(tǒng)中的,所以不能使用make install來直接安裝,需要我們自己手動(dòng)將生成的tftpc和tftpd拷貝到自己系統(tǒng)的目錄下(我放到根目錄下,其實(shí)這個(gè)是個(gè)不好的習(xí)慣,應(yīng)該也放到sbin下)。

  5.3 運(yùn)行

  現(xiàn)在我們已經(jīng)可以在嵌入式系統(tǒng)中運(yùn)行tftp的server以及client了。當(dāng)通信鏈路建立起來之后,tftp server端可以通過運(yùn)行./tftpd 來啟動(dòng)。從端的啟動(dòng)就要略微負(fù)責(zé)些了,因?yàn)橐付ㄒ恍〇|西。比如我們需要從IP地址為192.168.81.123的tftp server端取到一個(gè)test.doc的文件,則需要在從端輸入如下命令:./tftpc 192.168.81.123 –P 69# -g test.doc

  簡單說明一下:-P 69#是指采用端口69通信;-g 從server端得到文件;-p就是發(fā)送文件到server端嘍。

  Tftp運(yùn)行起來很簡單,且不需要鑒權(quán),但其目前還是不能提供目錄瀏覽的功能。

  6. 小結(jié)

  總結(jié)起來,在進(jìn)行以上編譯的時(shí)候,我不知道犯了多少錯(cuò)誤,完全是Linux的菜鳥,但這一周以來我真的懂得了很多這方面的知識(shí),所以加油、加油!我要繼續(xù)努力!
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉