linux系统运行不像vxworks等嵌入式系统一样,它需要挂载一个根文件系统。在BSP开发之初,我们可以没有测试flash驱动以及网络驱动。基于uboot启动linux时,我们可以使用ramdisk,当网络驱动确认可以使用后,在开发应用程序时,使用nfs是一种很好选择。

1、ramdisk

    关于ramdisk内核的配置,网上有许多讲述。但是有一种错误这里需要重点说一下。

1)、在配置ramdisk大小时,大部分内核配置为4M或者8M。这个值要视自己制作的ramdisk大小为多大。如果大于内核配置的值会出现kernel panic。

2)ramdisk的格式应为ext2,否则会出现挂载错误。

3)meta-altera中生成的rootfs没有ext2格式,应该加上。

在\poky\meta-altera\conf\machine\include\socfpga.inc文件中添加如下:

基于ramdisk与nfs调试linux(基于yocto开发与cyclonev平台)_cyclone

然后执行bitabke core-image-minimal后会生成后缀为.ext2的rootfs。

设置bootargs为

console=ttyS0,115200 initrd=0x1000000,8M root=/dev/ram0 rw。注意initrd后面的地址 0x1000000是使用tftp等命令加载rootfs.ext2到的地址,大小根据自己的设定设置。
2、nfs
如果在上面ramdisk测试后,发现linux运行起来后,网络驱动也可以正常工作,那么我们还可以用nfs。

安装nfs server

sudo apt-get install nfs-kernel-server

创建一个nfs目录,比如在自己的目录下 /home/xx/nfs

把yocto工程生成的tar.gz解压到这个目录。接下来就是配置nfs,在/etc/export中加入

/home/xx/nfs  *(rw,no_root_squash,async,no_subtree_check)

最后重启nfs

sudo service nfs-kernel-server restart


设置bootargs console=ttyS0,115200 root=/dev/nfs rw ip=192.168.9.101 nfsroot=192.168.9.10:/home/xx/nfs