终于自动挂载文件系统成功了!!!出错的地方两个!!!
第一,恢复出厂设置一定要用eop下载uboot,dnw下载的不行!!!最后记得erase nand params!!
第二,set bootargs noinitrd root=/dev/nfs nfsroot=202.193.61.195:/work/nfs_root/first_fs ip=202.193.61.196:202.193.61.195:202.193.61.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
参数解读:
nfsroot=202.193.61.195: ubuntu ip地址
/work/nfs_root/first_fs要挂载的目录
ip=202.193.61.196: 单板ip(恢复出厂设置后记得先配置ip,手动挂载下能不能成功,可以成功的话再修改bootargs自动挂载!)
202.193.61.195: 依然是ubuntu ip !!!!!注意!!!
202.193.61.1: 网关,只要处于同一网段就好。
255.255.255.0:: 子网掩码
eth0: 网卡,一般都是0
off 是否自动配置 off就可以
下面回顾下整个过程!
最小根文件系统的组成:1.dev/console /dev/null 2.init程序(来源busybox)3./etc/inittab 4.配置文件指定的应用程序 5.C库
1.配置编辑busybox
(1)将busybox-1.7.0.tar.bz2文件上传到ubuntu中work/system,使用tar xjf busybox-1.7.0.tar.bz2解压,查看install文件,
(2)在busybox-1.7.0文件夹下中使用make menuconfig 配置busybox(其实什么都不用改),配置完成执行make命令。
(3)执行mkdir -p /work/nfs_root/first_fs创建first_fs文件夹。使用make CONFIG_PREFIX=/work/nfs_root/first_fs install安装到first_fs文件夹中。安装完成,使用ls命令查看,已经有了一些文件夹。bin下面的ls指向busybox的链接。
2.创建dev目录
(1)在busybox-1.7.0文件夹下使用 vi Makefile打开Makefile,找到交叉编译工具链,设置为CROSS_COMPILE__?=arm-linux-,之后保存退出。
(2)在ubuntu下创建目录/work/nfs_root/first_fs,使用ls /dev/console /dev/null -l命令查看主设备号和次设备号
(3)在first_fs目录下使用mkdir dev命令创建dev文件夹,进入dev文件夹中是要用sudo mknod console c 5 1和sudo mknod null c 1 3命令申请设备文件,之后在dev文件夹下ls -l就可以看到我们创建的设备文件。
(4)在first_fs文件夹下使用mkdir etc创建目录,vi /etc/inittab打开inittab文件,加入console::askfirst:-bin/sh和::sysinit:/etc/init.d/rcS。
拷贝C库,
在first_fs目录下创建脚本文件,mkdir etc/init.d,然后vi etc/init.d/rcS,在rcS文件中加入mount -t proc none /proc。加上可执行属性,chmod +x etc/init.d/rcS。之后ls查看创建的proc。
(5)文件系统一烧进板子,启动的时候就会执行 etc/init.d/rcS 中的mount -t proc none /proc。
也可以使用mount -a命令挂载根文件系统。使用vi etc/init.d/rcS打开文件,注释掉之前的脚本内容,加入mount -a。mount -a会依赖于文件etc/ fstab,在fstab中加入 proc /proc proc defaults 0 0。mount -a命令根据fstab的内容去挂载文件系统。
(6)使用mkyaffs2image first_fs first_fs.yaffs2制作yaffs映像文件(这里略过)。具体参考嵌入式linux开发完全手册371页或者韦东山衔接视频第十一课第四节6min中处。
(7)进入开发板的文件系统之后,使用cat /proc/mounts查看挂在了那些文件系统。
udev机制 自动创建dev目录下的设备节点 busybox中有mdev。打开mdev.txt。步骤如下
在first_fs中 mkdir sys。在first_fs下使用vi /etc/fstab打开文件(参考linux应用开发手册370页!!!认真看!!!少了那个都不行),加入
sysfs /sys sysfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0。
打开etc/init.d/rcS,加入
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
之后制作yaffs2映像文件,烧写到板子。
烧写fs_mini.yaffs2后,在板子文件系统中配置ip,ifconfig etn0 202.193.61.1,处于同一网段,ping 通服务器即可
下面重头戏!!!!!
手工挂接根文件系统!!!
挂接NFS条件:
1.服务器允许目录可被别人挂接。在first_fs目录下sudo vi /etc/exports,打开配置文件,加上要挂接的目录
重启nfs服务 sudo /etc/init.d/nfs-kernel-server restart
之后,在服务器上自己挂接自己,sudo mount -t nfs 202.193.61.195:/work/nfs_root/first_fs /mnt。没有报错表明挂载成功。
2.单板去挂接
从flash上启动根文件系统,再用命令挂接NFS。先使用mkdir /mnt创建目录,使用mount -t nfs -o nolock 202.193.61.195:/work/nfs_root/first_fs /mnt(注意,要先修改开发板ip,ifconfig临时修改。永久修改方法?)
挂载成功如图所示。/mnt目录下的和服务器上的内容一样。
直接从nfs启动,修改set bootargs noinitrd root=/dev/nfs nfsroot=202.193.61.195:/work/nfs_root/first_fs ip=202.193.61.196:202.193.61.195:202.193.61.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
重启 就可以
编译驱动文件
在ubuntu下建立文件夹并进入work/drivers_and_test/first_drv,将pc机上写好的.c文件放入。使用make命令编译。成功后会有.ko文件生成。
/*编译驱动程序依赖于内核,下面是内核的目录。编译驱动之前要先编译内核*/
KERN_DIR = /work/system/linux-2.6.22.6
/*make -C 目录,表示进入目录当中使用makefile编译。*/
all:
make -C $(KERN_DIR) M=`pwd` modules
clean:
make -C $(KERN_DIR) M=`pwd` modules clean
rm -rf modules.order
obj-m += first_drv.o
在单板文件系统中看到的文件和ubuntu中的一样。
首先使用cat /proc/devices查看当前的设备
使用insmod first_drv.ko即可加载驱动。
来源:CSDN
作者:飞猪飞飞
链接:https://blog.csdn.net/qq_16933601/article/details/103206897