嵌入式Linux開發-根文件系統NFS網絡掛載

      網友投稿 990 2025-04-02

      1. 前言


      根文件系統是Linux內核啟動之后掛載的第一個文件系統,上篇文章里已經介紹過,如何使用busybox來制作根文件系統。這篇文章介紹根文件系統制作成功后,如何讓內核找到文件系統,并完成掛載,進入到系統命令行終端。

      根文件系統支持從網絡掛載和本地掛載兩種方式:

      嵌入式Linux開發-根文件系統NFS網絡掛載

      (1)如果是采用網絡掛載就將路徑設置為/dev/nfs,NFS是Linux下常用的網絡文件系統,這種方式掛載一般是在系統開發階段,方便修改調試代碼,也就是將根文件系統放在PC機上,嵌入式開發板通過網絡到PC機進行訪問。

      (2)本地掛載就是讓內核從SD卡、EMMC、光盤等設備里加載根文件系統,設備路徑設置為/dev/sda、/dev/ram等等。具體設備節點名稱是什么就填什么。本地掛載一般用在產品發布的時候,當整個系統開發完畢,就將PC機上的完整目錄拷貝到本地存儲設備里,讓內核直接從本地加載,這樣開啟啟動的速度會快很多,文件讀寫也快很多,不在經過網絡傳輸。本地掛載不方便調試代碼,一般開發階段還是NFS方式比較方便。

      上面說的路徑設置這些配置是在uboot里設置,uboot有一個環境變量專門用于給內核傳參,當內核啟動之后,會根據uboot傳遞的參數完成執行。

      當前采用的開發板是友善之臂的Tiny4412,內核、uboot、交叉編譯器都采用官方光盤自帶的文件。

      如果設置內核為NFS網絡掛載,uboot的環境變量設置格式如下:

      TINY4412 # setenv bootargs root=/dev/nfs nfsroot=192.168.10.11:/home/wbyq/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702 TINY4412 # saveenv TINY4412 # reset

      2. NFS網絡方式掛載

      前提是先把根文件系統制作好才能繼續這一步。當前的宿主機采用redhat6.3,這個系統比較老,但是功能是很齊全的,運行起來很流暢。要進行NFS網絡掛載,需要先把PC機的網絡與開發板的網絡設置好,保證在同一個局域網內。當前的redhat6.3系統是跑在VM虛擬機里,接下來就對網絡進行配置。

      開發板NFS網絡掛載的思路:

      PC機開啟NFS服務器,配置NFS共享的路徑: 將rootfs共享出來.

      開發板當做NFS客戶端,去掛載PC機共享的目錄,完成文件系統的訪問

      (1)配置虛擬機網絡

      (2)配置PC機NFS服務器

      [wbyq@wbyq rootfs]$ sudo vim /etc/exports /home/wbyq/work/rootfs *(insecure,rw,no_root_squash,sync)

      編寫個腳本方便啟動NFS服務器: 可以放在用戶目錄下

      比如: nfs_restart.sh 運用腳本要使用管理員權限,腳本改權限為可執行

      service nfs restart #重啟 NFS 服務器 service iptables stop #關閉防火墻 ifconfig eth0 192.168.10.11 #設置IP地址

      查看系統網卡名稱: ifconfig

      (3)運行腳本啟動NFS服務器

      [wbyq@wbyq ~]$ sudo ./nfs_restart.sh [sudo] password for wbyq: 關閉 NFS 守護進程: [失敗] 關閉 NFS mountd: [失敗] 關閉 NFS quotas: [失敗] 關閉 NFS 服務: [確定] 啟動 NFS 服務: [確定] 關掉 NFS 配額: [確定] 啟動 NFS mountd: [確定] 正在啟動 RPC idmapd: [確定] 正在啟動 RPC idmapd: [確定] 啟動 NFS 守護進程: [確定] [wbyq@wbyq ~]$ sudo ./nfs_restart.sh 關閉 NFS 守護進程: [確定] 關閉 NFS mountd: [確定] 關閉 NFS quotas: [確定] 關閉 NFS 服務: [確定] 啟動 NFS 服務: [確定] 關掉 NFS 配額: [確定] 啟動 NFS mountd: [確定] 正在啟動 RPC idmapd: [確定] 正在啟動 RPC idmapd: [確定] 啟動 NFS 守護進程: [確定] [wbyq@wbyq ~]$

      (4)設置UBOOT的環境變量

      進入到uboot的命令行,設置環境變量。 set bootargs root=/dev/nfs nfsroot=192.168.10.11:/home/wbyq/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702 set bootargs root=/dev/nfs nfsroot=<服務器地址>: ip=<開發板IP>:<服務器地址>:<網關>:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702 執行示例: TINY4412 # set bootargs root=/dev/nfs nfsroot=192.168.10.11:/home/wbyq/work/rootfs ip=192.168.10.123:192.168.10.11:192.168.10.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0 lcd=S702 TINY4412 # save TINY4412 # reset

      重啟之后開發板正常就會進入到Linux命令行:

      Linux 嵌入式 網絡

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:制造業生產管理年底總結(制造行業的年終總結)
      下一篇:項目和平臺協同運營的區別(項目與運營的區別和聯系)
      相關文章
      国产亚洲av片在线观看18女人 | 亚洲午夜视频在线观看| 国产成人亚洲精品91专区高清| 77777午夜亚洲| 亚洲欧洲综合在线| 亚洲黄色网址大全| 精品日韩亚洲AV无码一区二区三区 | 亚洲国产成人精品无码一区二区| 久久久久久久亚洲Av无码| 亚洲AV成人无码久久精品老人| 亚洲av午夜福利精品一区| 亚洲精品无码乱码成人| 亚洲乱码中文字幕综合| 国产亚洲av片在线观看16女人| 国产亚洲精品福利在线无卡一| 亚洲日韩中文字幕日韩在线| 亚洲AV无码乱码在线观看牲色| 午夜亚洲av永久无码精品| 亚洲AⅤ视频一区二区三区| 亚洲AV无码乱码在线观看性色扶| 亚洲国产av无码精品| 亚洲精品无码专区久久同性男| 亚洲综合色成在线播放| 国产亚洲老熟女视频| 亚洲色精品vr一区二区三区 | 亚洲日本va在线视频观看| 国产亚洲美女精品久久久2020| 亚洲婷婷五月综合狠狠爱| 亚洲av永久无码精品网站| 亚洲激情视频在线观看| 亚洲另类精品xxxx人妖| 亚洲精品123区在线观看| 亚洲成av人片天堂网无码】| 亚洲高清无码专区视频| 亚洲色大成网站WWW久久九九| 无码久久精品国产亚洲Av影片 | 久久亚洲AV成人无码国产最大| www.亚洲色图| 在线观看亚洲av每日更新| 亚洲国产精品婷婷久久| 亚洲成年人电影网站|