您的位置:首页 > 其它

ubuntu1204 nfs搭建

2015-01-29 13:34 267 查看
I.MX6
NFS

开发环境

host:
ubuntu 12.04
host ip addr--192.168.1.100

develop board:
mars board i.mx6
ip addr--192.168.1.102

一.安装nfs

1.服务器端:sudo apt-get install portmap

2.服务器端:sudo apt-get install nfs-kernel-server

3.客户端:sudo apt-get install nfs-common

4.创建nfs服务器工作目录

$sudo mkdir /home/nfsroot

5.服务器端配置:sudo gedit /etc/exports

添加:/home/nfsroot 192.168.1.*(rw,sync,no_root_squash)

(共享目录) (允许IP)

(rw权限是可擦写,还有ro只读,sync代表数据会同步写入到内存与硬盘中,

async则代表数据会先暂存于内存当中,而非直接写入硬盘,开放客户端使

用root身份来操作服务器的文件系统,那么开no_root_squash才行,

root_squash不允许)

6.启动服务器端:sudo /etc/init.d/portmap restart

7.启动服务器端:sudo /etc/init.d/nfs-kernel-server restart

8.host挂接开发板文件系统到nfs服务器目录

解压rootfs.ext2.gz

$ gunzip rootfs.ext2.gz

挂接解压出的rootfs.ext2到nfs服务器目录

$ mount -o loop -t ext2 rootfs.ext2 /home/nfsroot

二.tftp及其相关设置

1.安装tftp

$sudo apt-get install tftp-hpa tftpd-hpa

2.创建tftp服务器目录

$sudo mkdir /home/tools/tftpboot

递归设置nfs和tftp目录为777权限

$cd /home/tools/rootfs

$sudo chmode -R 777 *

3.配置tftp服务器

$sudo gedit /etc/default/tftpd-hpa

修改如下:

TFTP_DIRECTORY="/home/tools/tftpboot"

TFTP_OPTIONS="-l -c -s"

TFTP_DIRECTORY为tftp服务器目录。

TFTP_OPTIONS为访问权限等选项。

4.重启tftp服务器

sudo service tftpd-hpa restart

5.拷贝编译好的develop board linux uImage拷贝到tftp服务器主目录

这里tftp服务器主目录为/home/tools/tftpboot

三.修改u-boot源文件且编译烧录:

当你用路由器将开发板和host相连时(甚至用交叉线直接和host相连时),必须修正u-boot中的dhcp 路由解析问题

(或直接把路由中的dhcp禁止掉,这个我没试)

diff --git a/common/cmd_net.c b/common/cmd_net.c

index 65f32bc..9b1e650 100644

--- a/common/cmd_net.c

+++ b/common/cmd_net.c

@@ -221,6 +221,7 @@ static int netboot_common(enum proto_t proto, cmd_tbl_t *cmdtp, int argc,

case 3: load_addr = simple_strtoul(argv[1], NULL, 16);

copy_filename (BootFile, argv[2], sizeof(BootFile));

+ setenv ("bootfile", BootFile);

break;

diff --git a/net/bootp.c b/net/bootp.c

index 9e32476..df9f5eb 100644

--- a/net/bootp.c

+++ b/net/bootp.c

@@ -116,7 +116,8 @@ static void BootpCopyNetParams(Bootp_t *bp)

memcpy (NetServerEther, ((Ethernet_t *)NetRxPacket)->et_src, 6);

#endif

if (strlen(bp->bp_file) > 0)

- copy_filename (BootFile, bp->bp_file, sizeof(BootFile));

+ if (!getenv("bootfile"))

+ copy_filename (BootFile, bp->bp_file, sizeof(BootFile));

debug("Bootfile: %s\n", BootFile);

四.重启开发板,进入u-boot命令行

先ping host

u-boot>ping 192.168.1.100

如果不通,检查网络连接,且不要用1G的网关(或路由),也不要将开发板和主机的千兆网卡通过交叉线直接相连。

u-boot对1G网络无法支持.

五.设置环境变量

u-boot>setenv serverip 192.168.1.100

u-boot>setenv nfsroot /home/yanghua/nfsroot

六.再次检查host的tftp服务是否启动---重新启动之

$sudo service tftpd-hpa restart

七.tftp download uImage:

u-boot>dhcp 192.168.1.100:uImage

这一步可以省略,直接到运行第八步

八.以nfs为根文件系统启动内核:

u-boot>run bootcmd_net

等开发板正常启动进入linux后,可以在host的nfsroot中新建文件,可以看到开发板相应的目录也发生改变

----检查nfs

等开发板正常启动进入linux后,检查其文件系统:

$mkdir /mnt/nfs

nfs挂接到/mnt/nfs目录下:

$mount -t nfs -o nolock 192.168.1.100:/home/nfsroot /mnt/nfs

mount -t nfs -o nolock 192.168.1.100:/home/tools/rootfs /mnt/nfs

注意要有-o nolock 选项,否则失败

进入nfs目录,可以看到主机上的文件(注意,必须重新进入该目录)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: