各位小伙伴在使用ElfBoard開發板的過程中,必然會有拷貝文件到開發板中的這個操作,通常可以通過U盤進行拷貝,但是為了更方便的傳輸文件,還可以通過搭建網絡服務的方式進行文件傳輸,下面給小伙伴們介紹一些常用的網絡服務的搭建和使用。
首先ubuntu的網絡模式需要設置為橋接模式,電腦主機、ubuntu主機、開發板三者的ip要處于同一網段,且ubuntu主機要能上外網,同時還要關閉ubuntu和windows防火墻(關閉ubuntu防火墻:sudo ufw disable)。
本文中使用的三者的ip分別如下:
電腦主機ip:192.168.0.64
Ubuntu主機ip:192.168.0.51
開發板ip:192.168.0.232
然后參照以下的操作步驟就可以進行網絡服務的搭建和使用。
TFTP服務搭建
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議),是TCP/IP協議族中用來在客戶機和服務器之間進行簡單文件傳輸的協議,開銷很小。TFTP通常用于內核調試。在嵌入式Linux開發過程中,內核調試是其中一個基礎、重要的環節。調試內核通常是與 Bootloader配合使用,只需在Bootloader中實現了網卡驅動和TFTP客戶端,就可以使用TFTP進行傳輸內核。使用TFTP協議傳輸文件,還需要在主機安裝TFTP服務端,可以在 Linux系統下實現,也可以在Windows系統下實現,下面在Linux(Ubuntu)系統下安裝TFTP服務端進行測試。
1.安裝服務器、客戶端和守護進程
elf@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa xinetd
2.服務器配置
首先,在/home/elf目錄下建一個tftpboot,并把屬性改成任意用戶可讀寫:
elf@ubuntu:~$ mkdir tftpboot elf@ubuntu:~$ chmod 777 tftpboot
然后,進入目錄 /etc/xinetd.d/,并在其中新建文件tftp,把指定的內容加入到tftp文件中:
elf@ubuntu:~$ cd /etc/xinetd.d/ elf@ubuntu:~$ sudo vim tftp
添加以下內容到tftp文件:
service tftp { disable = no 138 socket_type = dgram protocol = udp wait = yes user = elf server = /usr/sbin/in.tftpd server_args = -s /home/elf/tftpboot -c per_source = 11 cps = 100 2 }
最后,修改配置文件/etc/default/tftpd-hpa:
elf@ubuntu:~$ sudo vim /etc/default/tftpd-hpa
修改為:
TFTP_USERNAME="tftp" TFTP_DIRECTORY="/home/elf/tftpboot" TFTP_ADDRESS="0.0.0.0:69" TFTP_OPTIONS="--secure -l -c -s"
注意:將“TFTP_DIRECTORY” 改為新建tftpboot目錄所在的路徑。
3. 重新啟動服務
elf@ubuntu:~$ sudo /etc/init.d/xinetd reload [ ok ] Reloading xinetd configuration (via systemctl): xinetd.service. elf@ubuntu:~$ sudo /etc/init.d/xinetd restart [ ok ] Restarting xinetd (via systemctl): xinetd.service. elf@ubuntu:~$ sudo /etc/init.d/tftpd-hpa restart [ ok ] Restarting tftpd-hpa (via systemctl):tftpd-hpa.service.
4. 測試服務器
測試一下,在/tftpboot文件夾下新建立一個文件 :
elf@ubuntu:~/tftpboot$ touch abc
進入另外一個文件夾:
elf@ubuntu:~/tftpboot$ cd /home/ elf@ubuntu:/home$ sudo tftp 192.168.0.51 //192.168.0.51為本機IP tftp> get abc tftp> quit elf@ubuntu:/home$ ls abc elf
如果可以下載abc文件說明服務器已經安裝成功。
NFS服務搭建
在嵌入式Linux開發中,需要在Linux主機編寫程序代碼,然后編譯程序,生成的二進制程序文件要傳輸到目標機上才能調試、運行。那么如何更快、更便捷地傳輸文件,提高開發工作的效率呢?NFS無疑是最好的選擇。通過NFS服務,主機將用戶指定的目錄通過網絡共享給目標機(和windows的文件網絡共享類似)。目標機可以直接運行存放于Linux主機共享目錄下的二進制程序,這樣調試程序時十分方便、高效。
NFS即網絡文件系統(Network File-System),可以通過網絡讓不同機器、不同系統之間可以實現文件共享。通過NFS,可以訪問遠程共享目錄,就像訪問本地磁盤一樣。
1. ubuntu下搭建nfs服務器的方法
軟件下載安裝:
elf@ubuntu:~$ sudo apt-get install nfs-kernel-server nfs-common portmap
創建NFS的目錄為nfs_rootfs,并在該目錄下新建測試文件test;
elf@ubuntu:~$ mkdir nfs_rootfs elf@ubuntu:~$ cd nfs_rootfs/ elf@ubuntu:~/nfs_rootfs$ touch test elf@ubuntu:~/nfs_rootfs$ ls test
修改配置文件:
elf@ubuntu:~/nfs_rootfs$ sudo vim /etc/exports
在文件中添加以下配置:
/nfs_rootfs *(rw,sync,no_root_squash,no_subtree_check) /home/elf/nfs_rootfs *(rw,sync,no_root_squash,no_subtree_check)
重啟配置文件和服務:
elf@ubuntu:~/nfs_rootfs$ sudo exportfs -rv elf@ubuntu:~/nfs_rootfs$ sudo /etc/init.d/rpcbind restart elf@ubuntu:~/nfs_rootfs$ sudo /etc/init.d/nfs-kernel-server restart
2. 驗證
在開發板上驗證nfs服務器,執行完以下命令將nfs服務器掛載到開發板的/mnt目錄:
root@ELF1:~# mount -t nfs4 -o vers=4 172.16.0.51:/home/elf/nfs_rootfs /mnt/
掛載成功后,查看/mnt目錄,會看到剛才解壓的文件系統:
root@ELF1:~# ls /mnt/ test
SSH服務搭建
SSH為SecureShell的縮寫,由IETF的網絡小組(Network Working Group)所制定的建立在應用層基礎上的安全協議。SSH是較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議,利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平臺,目前為止,幾乎所有UNIX平臺,包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix等,都可運行。
1. 在系統開發過程中經常會遇到下列情形
(1)Linux主機不在本地,但又要使用或者維護這臺計算機;
(2)一個嵌入式Linux產品不方便接調試串口,需要進行維護;
(3)在遠程機器和本地機器之間進行文件傳輸。
如果遠程目標系統已經開啟了SSH服務,通過SSH可以輕松解決以上問題。使用SSH服務,一方面需要在遠程系統上安裝SSH服務,另一方面要在本地系統上安裝SSH客戶端,常見的SSH客戶端有 putty、SSH Secure Shell Client 等。
2. SSH有以下幾個知識要點
(1)SSH是安全的加密協議,用于遠程連接Linux服務器;
(2)SSH默認端口是22號端口,安全協議版本SSHv2,除了SSHv2版本之外還有SSHv1版本(有漏洞,不安全);
(3)SSH服務端主要包含兩個服務功能SSH遠程連接和SFTP服務;
(4)Linux SSH客戶端包含SSH遠程連接命令以及遠程拷貝scp命令等。
3. 安裝SSH
(1)在Ubuntu(Linux主機)終端鍵入以下指令,安裝SSH服務:
elf@ubuntu:/$ sudo apt-get install ssh
(2)啟動SSH服務:
elf@ubuntu:/$ sudo service ssh start
(3)查看SSH服務的狀態:
elf@ubuntu:/$ sudo service ssh status ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-08-23 17:19:57 CST; 45s ago Main PID: 7383 (sshd) Tasks: 1 (limit: 2292) CGroup: /system.slice/ssh.service └─7383 /usr/sbin/sshd -D 8月 23 17:19:57 ubuntu systemd[1]: Starting OpenBSD Secure Shell server... 8月 23 17:19:57 ubuntu sshd[7383]: Server listening on 0.0.0.0 port 22. 8月 23 17:19:57 ubuntu sshd[7383]: Server listening on :: port 22. 8月 23 17:19:57 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
(4)關閉SSH服務:
elf@ubuntu:/$ sudo service ssh stop
(5)測試方法:
在Windows主機通過putty訪問Linux系統,打開putty界面,使用SSH登錄,ip設置Linux主機的ip,端口號默認為22。
第一次登錄,會提示如下警告,點擊“是”即可:
登錄時,輸入用戶名與密碼完成登錄。
關于網絡服務搭建和使用的相關操作就介紹到這里,希望本篇文章能夠幫助大家在學習嵌入式開發的過程中提供幫助。
-
嵌入式
+關注
關注
5072文章
19026瀏覽量
303524 -
嵌入式開發
+關注
關注
18文章
1022瀏覽量
47518 -
開發板
+關注
關注
25文章
4959瀏覽量
97215
發布評論請先 登錄
相關推薦
評論