日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

详解-制作根文件系统,并使用yaffs,jffs,nfs挂载系统(2)

發布時間:2023/12/10 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 详解-制作根文件系统,并使用yaffs,jffs,nfs挂载系统(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.安裝mkyaffsimage, mkyaffs2image命令(用來制作yaffs文件系統)

第一個命令針對Flash小頁512B,第二個針對Flash大頁2KB
首先下載壓縮文件?yaffs_source_util_larger_small_page_nand.tar.bz2
安裝mkyaffs2image命令為例:

tar –xjf yaffs_source_util_larger_small_page_nand.tar.bz2 //解壓出yaffs1和yaffs2 cd /Development_util_ok/yaffs2/utils make //生成mkyaffsimage和mkyaffs2image sudo cp mkyaffs2image /usr/local/bin //將mkyaffs2image命令復制到可執行目錄路徑下

然后輸入mkyaffs2image命令,如果不能運行,則使用chmod命令加可執行屬性即可

?

2.安裝mkfs.jffs2命令(用來制作jffs文件系統)
首先下載壓縮文件mtd-utils-05.07.23.tar.bz2,然后安裝步驟如下:

tar -xf mtd-utils-05.07.23.tar.bz2 cd mtd-utils-05.07.23/util make sudo make install

?

3.制作文件系統

3.1 解壓安裝busybox-1.7.0

cd busybox-1.7.0 make menuconfig

然后在菜單里進入-> Busybox Settings-> Busybox Library Tuning選上:

[*] Tab completion //tab補齊命令

然后輸入vi Makefile,找到CROSS_COMPILE字段,后面添加”arm-linux-”:

?接著輸入:

make //編譯 mkdir /work/nfs_root/busybox1.7_fs //創建要安裝的文件系統目錄 make install CONFIG_PREFIX=/work/nfs_root/busybox1.7_fs //指定安裝位置

安裝好了后,可以看到busybox1.7_fs/bin里便保存著linux命令,如下圖所示:

?

3.2構造lib目錄(被應用程序調用的C庫函數,比如:printf,strcmp,fopen等)

cd /work/nfs_root/busybox1.7_fs mkdir lib //創建lib目錄 (存放庫函數) cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib //進入源目錄 cp *.so* /work/nfs_root/ busybox1.7_fs/lib -d //復制glibc庫到lib目錄(*:匹配符,-d:表示如果是鏈接文件,則繼續保持鏈接)

?

3.3構造etc目錄
在etc目錄下,需要構造以下3個文件

  • etc/inittab :? ? ?init進程會根據inittab文件里,來創建其它子進程,比如-/bin/sh進程
  • etc/init.d/rcS: 腳本文件,里面用來執行命令,比如設置網卡,使用mount -a來裝載/etc/fstab中的文件系統
  • etc/fstab :? ? ???里面保存要被掛載的哪個文件系統,比如proc、sysfs、tmpfs、devpts等系統

1)構造/etc/inittab

cd /work/nfs_root/busybox1.7_fs mkdir etc/ vi etc/inittab

添加以下幾句:

::sysinit:/etc/init.d/rcS //內核啟動時,執行/etc/init.d/rcS console::askfirst:-/bin/sh //啟動console對應的-/bin/sh進程之前,等待用戶按enter鍵,等價于: ::askfirst:-/bin/sh ::ctrlaltdel:/sbin/reboot //按下ctrl+alt+del組合鍵時,啟動reboot命令 ::shutdown:/bin/umount -a -r //系統關機前,卸載所有文件系統

2)構造etc/init.d/rcS

mkdir etc/init.d/ vi etc/init.d/rcS

添加以下幾句:

mount -a //裝載/etc/fstab中的文件系統 echo /sbin/mdev > /proc/sys/kernel/hotplug //使/sbin/medv指向hotplug,從而支持熱拔插 mdev -s //使用medv命令將會掃描/sys/class和/sys/block中所有的類設備目錄,然后把讀取到的dev相關文件自動在/dev創建下的所有設備節點,

并給rcS文件加上可執行權限:

sudo chmod +x etc/init.d/rcS //使腳本rcS能夠執行命令

3)構造etc/fstab

PS: 使用mdev命令需要sysfs、tmpfs、devpts這3個文件系統的支持

  • mdev:? ?是udev的一個迷你版, 它主要的功能是管理/dev目錄底下的設備節點。它同時也是用來接替devfs及熱插拔的功能
  • proc:? ? ?虛擬文件系統, 它只存在內存當中,而不占用外存空間, 可以通過proc得到系統的信息,比如運行的每個進程pid便存在/proc里
  • sysfs:?? ?管理虛擬系統,為udev提供設備入口和uevent通道, sysfs類型,需要掛載到/sys目錄下
  • tmpfs:? ?臨時文件系統,用來減少對flash頻繁讀寫,tmpfs類型,需要掛載到/dev目錄下
  • devpts:??內核虛擬系統, devpts類型,需要掛載到/dev/pts目錄下
mkdir proc/ //創建proc要掛載的目錄 mkdir sys/ //創建sysfs要掛載的目錄, mkdir dev/pts -p //創建devpts要掛載的目錄 vi etc/fstab

添加以下幾句

# device mount-point type options dump fsck order proc /proc proc defaults 0 0 tmpfs /tmp tmpfs defaults 0 0 sysfs /sys sysfs defaults 0 0 devpts /dev/pts devpts defaults 0 0

?

3.4構造其它文件/目錄
1)創建終端文件(dev/console和dev/null)

sudo mknod -m 660 dev/console c 5 1 sudo mknod -m 660 dev/null c 1 3

2)創建其它目錄

mkdir mnt tmp root


4.制作燒寫yaffs2

mkyaffs2image busybox1.7_fs busybox1.7_fs.yaffs2 //使用mkyaffs2image生成yaffs2

進入uboot燒寫:

nfs 30000000 192.168.1.199:/work/nfs_root/busybox1.7_fs.yaffs2 nand erase root nand write.yaffs 0x30000000 0x260000 $(filesize) // write.yaffs:實現yaffs文件系統鏡像的燒寫, 如果NandFlash相應的區域有壞塊,可以跳過壞塊。

設置啟動參數:

set bootargs noinitrd root=/dev/mtdblock3 rootfstype=yaffs2 init=/linuxrc console=ttySAC0 save

啟動內核:


5.制作燒寫jffs2

mkfs.jffs2 -n -s 2048 -e 128KiB -d busybox1.7_fs -o busybox1.7_fs.jffs2 /*-n:表示每塊不添加清除標記, -s:size一頁大小為2k, -e:一塊大小為128kb-d:制作的dir目錄, -o:輸出文件 */

進入uboot燒寫:

nfs 30000000 192.168.1.199:/work/nfs_root/busybox1.7_fs.jffs2 nand erase root nand write.jffs2 0x30000000 0x260000 $(filesize) // write. jffs2 :和yffs原理一樣

設置啟動參數:

set bootargs noinitrd root=/dev/mtdblock3 rootfstype=jffs2 init=/linuxrc console=ttySAC0 save

啟動內核:

?

6.通過uboot啟動nfs系統
6.1 在內核documentation目錄里找到nfsroot.txt文檔
找到nfs服務器地址設置"nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]":

  • server-ip:? ??服務器(虛擬機)IP地址
  • root-dir:? ? ??nfs根目錄位置
  • nfs-options:選項,默認可以不填

找到nfs客戶端設置"ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>":

  • client-ip:??客戶端(開發板)IP地址
  • server-ip:服務器(虛擬機)IP地址
  • gw-ip:? ? ??網關地址,一般都是192.168.1.1
  • netmask:??子網掩碼,255.255.255.0
  • hostname:主機名,可以不填
  • device:? ? ??網卡設備,默認一個網卡就填eth0
  • autoconf:??自動連接,填off不自動連接

6.2 所以設置啟動參數為

set bootargs noinitrd root=/dev/nfs nfsroot=192.168.1.199:/work/nfs_root/busybox1.7_fs ip=192.168.1.198:192.168.1.199:192.168.1.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0

啟動內核:

?

7.在內核里使用mount掛載nfs目錄

mount -t nfs -o nolock,vers=2 192.168.1.199:/work/nfs_root /mnt //mount命令將遠端虛擬機/work/nfs_root目錄掛載到開發板/mnt目錄里 //nolock:禁用文件鎖 vers=2:nfs版本協議2 192.168.1.199:虛擬機地址

運行出錯:

找到原因是網卡沒設置,輸入mount前設置即可(也可以直接寫入/etc/init.d/rcS):

ifconfig eth0 up ifconfig eth0 192.168.1.198

?


8.如果mount掛載/啟動nfs系統失敗,那么有可能有下面兩個原因
8.1 確定板子是否與虛擬機位于同一網段

ifconfig eth0 up //開啟網關0,連接網線到路由器 ifconfig eth0 192.168.1.107 //設置ip,與虛擬機ip網段一樣, ping 192.168.1.106 //與虛擬機ping一下,是否已通


8.2 確定虛擬機是否能被掛載目錄
要使虛擬機能夠被掛載目錄,在/etc/exports中添加需要被掛載的目錄即可
例如:

sudo vi /etc/exports /work/nfs_root *(rw,sync,no_root_squash) //要被掛載的目錄:/work/nfs_root sudo /etc/init.d/nfs-kernel-sever restart //然后輸入命令重啟nfs服務

轉載于:https://www.cnblogs.com/lifexy/p/7049743.html

總結

以上是生活随笔為你收集整理的详解-制作根文件系统,并使用yaffs,jffs,nfs挂载系统(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。