女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

添加社區軟件包proftpd教程

瑞薩MCU小百科 ? 來源:瑞薩MCU小百科 ? 2025-03-12 14:40 ? 次閱讀

14.7.3添加社區軟件包proftpd

通常我們的應用還需要實現開機自啟動,這些也可以在配方中實現。下面以一個稍微復雜一點的FTP服務應用為例說明如何使用Yocto構建包含特定應用的生產鏡像,這里的FTP服務程序采用的是開源的Proftpd,各個版本源碼位于ftp://ftp.proftpd.org/distrib/source/。

本節重點描述如何移植FTP服務到目標機器中的方法。通過搜索當前源代碼倉庫發現Yocto項目中已經存在proftpd的配方,只是沒有添加的系統鏡像中。下面詳細描述具體的移植過程。

01查找Yocto的proftpd配方

bitbake -s | grep proftpd

注:這里可以看到Yocto項目中已經存在proftpd配方,版本為1.3.6-r0。

39c45ac6-fd65-11ef-9310-92fbcf53809c.png

02單獨編譯proftpd

左右滑動查看完整內容

PC:~/renesas/yocto/build-remi-1g$ bitbake proftpd

39e2f486-fd65-11ef-9310-92fbcf53809c.png

03打包proftpd到文件系統

在conf/local.conf中增加一行語句:

左右滑動查看完整內容

IMAGE_INSTALL_append = " proftpd"

3a095e14-fd65-11ef-9310-92fbcf53809c.png

04重新構建鏡像

左右滑動查看完整內容

PC:~/renesas/yocto/build-remi-1g$ bitbake myir-image-full

3a23c0d8-fd65-11ef-9310-92fbcf53809c.png

05燒錄新鏡像

系統構建完成之后,需重新燒錄鏡像并查看proftpd服務是否運行:

左右滑動查看完整內容

root@myir-remi-1g:~# ps -axu | grep proftpd
root 501 0.0 0.0 2780 624 ttySC0 S+ 00:39 0:00 grep proftpd

06ftp賬戶權限配置

這里補充說明一下FTP的賬戶設置。FTP客戶端有三種類型登錄賬戶,分別為匿名賬戶,普通賬戶和root賬戶。

匿名賬戶

用戶名默認為ftp,不需要設置密碼,用戶登錄后可以查看系統/var/lib/ftp目錄下的內容,默認沒有寫權限。

由于系統默認不存在/var/lib/ftp目錄,所以需要用戶在目標機器上創建一個目錄/var/lib/ftp。

為了盡量不修改meta-openembbed,我們可以通過為proftpd recipes添加Append文件“proftpd_1%.bbappend”來實現/var/lib/ftp目錄的創建。

首先需要在meta-myir-remi/recipes-common/recipes-devtools/目錄下新建一個proftpd文件夾,之后進入文件夾,新建一個proftpd_1%.bbappend文件。加入下面這段task安裝任務,保存退出至構建目錄。然后重復之前章節添加應用的步驟,重新構建鏡像文件進行測試。

左右滑動查看完整內容

do_install_append() {
install -m 755 -d ${D}/var/lib/${FTPUSER}
chown ftp:ftp ${D}/var/lib/${FTPUSER}
}

3af2a83a-fd65-11ef-9310-92fbcf53809c.png

普通賬戶

在目標機器上使用useradd和passwd命令可以創建普通用戶,并設置用戶密碼之后,客戶端也可以使用該普通賬戶登錄到該用戶的HOME目錄。

如果需要在編譯鏡像時包含普通用戶,可以參照以下鏈接添加普通用戶,然后重新構建鏡像文件,具體方法這里不再描述。(您可復制下方鏈接至瀏覽器,或掃描二維碼進行查看)

添加普通用戶

https://docs.yoctoproject.org/3.1.1/mega-manual/mega-manual.html#ref-classes-useradd

root賬戶

如果需要開放root賬戶登錄FTP服務器,需要先修改 /etc/proftpd.conf文件,在文件中增加一行配置 "RootLogin on"。與此同時,也需要為root賬戶設置密碼,重啟proftpd服務之后,客戶端也可以使用root賬戶登錄到目標機器上。

左右滑動查看完整內容

root@myir-remi-1g:/# systemctl restart proftpd

注意:修改/etc/proftpd.conf使能root賬戶登錄僅用于測試目的,關于/etc/proftpd.conf的更多配置,參見下方鏈接。(您可復制下方鏈接至瀏覽器,或掃描二維碼進行查看)

關于/etc/proftpd.conf的更多配置

http://www.proftpd.org/docs/example-conf.html

07實現proftpd自啟動

本節將以proftpd為例從recipe源碼的層面介紹如何添加應用程序recipe并實現程序的開機自啟動。

proftpd位于源代碼倉庫layers/meta-openembedded/meta-networking/recipesdaemons/proftpd,目錄結構如下。

3b795182-fd65-11ef-9310-92fbcf53809c.png

左右滑動查看完整內容

ubuntu@ubuntu2004:~/renesas/yocto/myir-renesas-yocto$:~/renesas/yocto/layers/meta-op
enembedded/meta-networking/recipes-daemons/proftpd$ 
.
├── files
│ ├── basic.conf.patch
│ ├── build_fixup.patch
│ ├── close-RequireValidShell-check.patch
│ ├── contrib.patch
│ ├── default
│ ├── proftpd-basic.init
│ └── proftpd.service
└── proftpd_1.3.6.bb
1 directory, 8 files

?proftpd_1.3.6.bb為構建proftpd服務的配方

?proftpd.service為開機自啟動服務

?proftpd-basic.init為proftpd的啟動腳本

proftpd_1.3.6.bb中指定了獲取proftpd服務程序的源代碼路徑以及針對該版本源碼的一些補丁文件,如下:

左右滑動查看完整內容

SRC_URI = "ftp://ftp.proftpd.org/distrib/source/${BPN}-${PV}.tar.gz 
file://basic.conf.patch 
file://proftpd-basic.init 
file://default 
file://close-RequireValidShell-check.patch 
file://contrib.patch 
file://build_fixup.patch 
file://proftpd.service 

recipes配方中還指定了proftpd的Task配置任務(do_configure)和安裝過程(do_install):

左右滑動查看完整內容

# proftpd uses libltdl which currently makes configuring using
# autotools.bbclass a pain...
do_configure () {
 install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}
 install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}
 oe_runconf
 cp ${STAGING_BINDIR_CROSS}/${HOST_SYS}-libtool ${S}/libtool
}


FTPUSER = "ftp"
FTPGROUP = "ftp"


do_install () {
 oe_runmake DESTDIR=${D} install
 rmdir ${D}${libdir}/proftpd ${D}${datadir}/locale
 [ -d ${D}${libexecdir} ] && rmdir ${D}${libexecdir}
 sed -i '/ *User[ 	]*/s/ftp/${FTPUSER}/' ${D}${sysconfdir}/proftpd.conf
 sed -i '/ *Group[ 	]*/s/ftp/${FTPGROUP}/' ${D}${sysconfdir}/proftpd.conf
 install -d ${D}${sysconfdir}/init.d
 install -m 0755 ${WORKDIR}/proftpd-basic.init ${D}${sysconfdir}/init.d/proftpd
 sed -i 's!/usr/sbin/!${sbindir}/!g' ${D}${sysconfdir}/init.d/proftpd
 sed -i 's!/etc/!${sysconfdir}/!g' ${D}${sysconfdir}/init.d/proftpd
 sed -i 's!/var/!${localstatedir}/!g' ${D}${sysconfdir}/init.d/proftpd
 sed -i 's!^PATH=.*!PATH=${base_sbindir}:${base_bindir}:${sbindir}:${bindir}!' 
${D}${sysconfdir}/init.d/proftpd


 install -d ${D}${sysconfdir}/default
install -m 0755 ${WORKDIR}/default ${D}${sysconfdir}/default/proftpd
……
}

這兩個函數對應BitBake構建過程的config和install任務。

關于任務的更多信息,參見下方鏈接。

關于任務的更多信息

https://www.yoctoproject.org/docs/3.1.1/mega-manual/mega-manual.html#ref-tasks

當前目標機器采用systemd作為初始化管理子系統systemd是一個Linux系統基礎組件的集合,提供了一個系統和服務管理器,運行為PID 1并負責啟動其它程序。Yocto項目下使用systemd的配置參見下方鏈接。(您可復制下方鏈接至瀏覽器,或掃描二維碼進行查看)

Yocto項目下使用systemd的配置

https://docs.yoctoproject.org/3.1.1/mega-manual/mega-manual.html#selecting-an-initialization-managerproftpd_1.3.6.bb

通過繼承systemd.class(具體內容可以查看poky/meta/classes/systemd.bbclass)默認使能了 SYSTEMD_AUTO_ENABLE變量并實現開機自啟動,用戶自己編寫的recipes也可以通過設置變量SYSTEMD_AUTO_ENABLE實現開機自啟動,示例如下:

左右滑動查看完整內容

SYSTEMD_AUTO_ENABLE_${PN} = "enable"

其中Proftpd服務的開機自啟動服務文件proftpd.service內容如下:

左右滑動查看完整內容

ubuntu@ubuntu2004:~/renesas/yocto/layers/meta-openembedded/meta-networking/recipes-d
aemons/proftpd/files$ cat proftpd.service
[Unit]
Description=proftpd Daemon
After=network.target
[Service]
Type=forking
ExecStart=@SBINDIR@/proftpd -c @SYSCONFDIR@/proftpd.conf
StandardError=syslog
[Install]
WantedBy=default.target

?After:表示此服務在network啟動后再啟動。

?Type:表示啟動的方式為forking。

?ExecStart:表示需要啟動的程序,及對應的參數。

如需了解更多關于systemd的信息請查看此網站。

未完待續

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 移植
    +關注

    關注

    1

    文章

    394

    瀏覽量

    28575
  • FTP
    FTP
    +關注

    關注

    0

    文章

    115

    瀏覽量

    41192
  • 程序
    +關注

    關注

    117

    文章

    3820

    瀏覽量

    82395
  • 軟件包
    +關注

    關注

    0

    文章

    108

    瀏覽量

    11878

原文標題:添加社區軟件包proftpd——RZ MPU工業控制教程連載(63)

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Openwrt開發指南 第12章 添加OpenWrt軟件包

    OpenWrt是一個比較完善的嵌入式Linux開發平臺,在無線路由器應用上已有4000多個軟件包。我們可以在其基礎上增加軟件包,以擴大其應用范圍。在OpenWrt中增加軟件包極其方便,按照
    的頭像 發表于 06-29 09:09 ?9867次閱讀

    RT-Thread Studio添加軟件包報錯怎么解決?

    RT-Thread Studio添加軟件包報錯ImportError: No module named psutil
    發表于 03-01 08:41

    軟件包怎么使用

    RT-thread有很多實用的軟件包,包含網絡、IOT、外設、系統等多個方面,對于項目的快速開發或者評估來說是非常方便的。但不是所有軟件包都是友好的,因為有些軟件包是第三方貢獻的,軟件
    發表于 01-21 07:53

    RTThread settings添加軟件包界面不顯示求解

    目前使用出現了兩個問題1、客戶端莫名其妙的卡死,無響應,必須任務管理器強制停止才行。2、rtthread settings 添加軟件包界面不顯示,必須按shift+s才會出現,去掉某些軟件包但是
    發表于 08-25 14:50

    RT-THREAD studio 2.0.0不能添加軟件包能幫忙看看是什么問題嗎

    1.電腦聯想小新15,intel平臺2.windows10專業版64位系統3.問題描述:RT-THREAD studio 2.0.0不能添加軟件包4.用兩臺聯想筆記本電腦對比過,一臺能夠正常添加
    發表于 11-30 10:15

    在rt-thread studio里添加軟件包失敗怎么解決?

    在rt-thread studio里使用軟件包功能,添加軟件包之后,點擊保存,在項目欄測沒有軟件包添加
    發表于 02-13 14:14

    RT-Thread 軟件包介紹

    RT-Thread 軟件包介紹軟件包的目的軟件包在高級語言中非常常見,很多高級語言都有對應的軟件包平臺,比如 Python 的 PyPi,Ruby 的 Gems 等等。
    發表于 05-21 19:38 ?5694次閱讀

    RT-Thread軟件包定義和使用

    RT-Thread軟件包是運行于RT-Thread物聯網操作系統平臺上,面向不同應用領域的通用軟件組件 。RT-Thread 同時提供了開放的軟件包平臺,為開發者提供了眾多可重用軟件包
    的頭像 發表于 05-21 11:29 ?1.1w次閱讀
    RT-Thread<b class='flag-5'>軟件包</b>定義和使用

    如何下載與安裝Synergy軟件包

    Synergy ISDE 視頻教程 - 下載和安裝Synergy軟件包
    的頭像 發表于 07-20 05:03 ?3796次閱讀

    RT-Thread社區上有哪些優秀的軟件包

    SX12XX 軟件包是基于 semtech 官網 Firmware Drivers V2.1.0代碼庫的移植實現,目前只支持 SX1278 LoRa設備。該軟件包在原代碼庫功能的基礎上,對接 RT-Thread SPI 設備驅動框架,實現參數的配置和數據的讀取。
    的頭像 發表于 04-03 15:35 ?7926次閱讀

    什么是Linux軟件包,如何管理它們

    現代類 Unix 操作系統都提供了一個集中的軟件包管理機制,以幫助用戶搜索、安裝和管理軟件。而軟件通常以的形式存儲在倉庫中,對軟件包的使用
    的頭像 發表于 02-06 14:59 ?1750次閱讀

    工控軟件包開源分享

    電子發燒友網站提供《工控軟件包開源分享.zip》資料免費下載
    發表于 06-25 10:22 ?4次下載
    工控<b class='flag-5'>軟件包</b>開源分享

    RT-Thread在線軟件包改為本地軟件包的方法

    RT-Thread 的軟件包,使用時需要手動通過 ENV 工具 更新到 本地的 packages 目錄,并且 packages 目錄默認不參與 Git 工程管理,軟件包多了,偶爾需要更改軟件包本身的一些代碼,這就造成了
    的頭像 發表于 08-11 15:02 ?1636次閱讀
    RT-Thread在線<b class='flag-5'>軟件包</b>改為本地<b class='flag-5'>軟件包</b>的方法

    使用pkgs-test工具對軟件包進行qemu測試

    pkgs-test是一個可以在github actions上面檢查軟件包編譯情況的工具。除了檢查軟件包的編譯情況pkgs-test目前還添加了qemu運行測試。
    的頭像 發表于 09-25 16:19 ?951次閱讀

    RT-Thread中mymqtt軟件包的使用方法

    在上一篇文章 RT-Thread中Lan8720和lwip協議棧的使用的工程基礎上添加mymqtt軟件包。 使能mqtt example和mqtt test,保存,等待下載更新軟件包
    的頭像 發表于 10-13 10:44 ?1285次閱讀
    RT-Thread中mymqtt<b class='flag-5'>軟件包</b>的使用方法