龙芯2K1000使用nfs挂载文件系统进行使用
- 在使用龙芯2K1000板子进行开发时,最方便的方式就是通过网络挂载文件系统NFS进行程序开发,这样能大大提高开发效率。
准备:
在龙芯2K上使用nfs挂载启动,首先需要主机上具有以下三个服务:
- 用于load记载linux内核的tftp服务。
- 用于给龙芯机器分配IP地址的DHCP服务。
- 最后存放用于启动挂载的文件系统的nfs服务。
龙芯内核配置:
- 1、一个支持从nfsroot挂载文件系统的可以运行在龙芯机器上的内核。
关于如何编译内核,如果交叉编译内核,这里不多说,大家参考一下这里就行:
http://dev.lemote.com/code/linux_loongson
为了能够支持nfsroot,除了基本的网络支持外,下面的几个选项是需要的:
要能够自动获取ip地址,所以要求你所在的网络有一个dhcp服务器,没有的话,自己配置一个吧(后面将介绍)。
Networking ---> Networking support Networking options ---> Packet socket Unix domain sockets TCP/IP networking IP: kernel level autoconfiguration IP: DHCP support
要支持nfsroot,
File systems ---> Network File Systems ---> <*> NFS client support Root file system on NFS
好了,可以编译内核了,关于最新的内核源代码,可以从这里下载。
-dev version: http://dev.lemote.com/cgit/rt4ls … oongson-dev-to-ralf
-stable version: http://dev.lemote.com/cgit/rt4ls.git/log/?h=to-ralf
主机服务配置:
TFTP服务配置
- 安装服务包
$ sudo apt-get install tftpd-hpa
- 启动服务,把/tftproot当tftp服务的主目录(不要想着其他方法,这个最easy不过)
$ sudo mkdir /tftproot $ sudo in.tftpd -s -l /tftproot
启动完以后,把内核复制到/tftproot下就行了。
DHCP服务配置
如果你所在网络有这个服务,就不要再配置了,否则自己配置一个。
$ sudo apt-get install dhcp3-server $ vim /etc/dhcpd.conf ddns-update-style none; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.121 192.168.1.121; } $ /usr/sbin/dhcpd
通过上面的配置,可以给你的机器分配一个192.168.1.121的地址,如果想要其他地址,可以修改这个配置。
NFS服务配置
这个也是非常easy了。
$ sudo apt-get install nfs-kernel-server $ sudo apt-get install nfs-common $ vim /etc/exports /opt/loongos *(rw,sync,no_root_squash) $ /etc/init.d/portmap restart $ /etc/init.d/nfs-kernel-server start //验证是否生效 $ showmount -e $ mkdir /opt/loongos -p $ chmod 777 /opt/loongos
启动步骤:
开机,按下DEL键,直到出现PMON>提示行。
PMON> ifaddr syn0 192.168.10.139 // 配置一个临时的ip地址,这个地址只在pmon中有效,如果想配置一个持久的,那么请用set ifconfig rtl0:192.168.1.121 PMON> load tftp://192.168.10.94/vmlinuz_usenfs // 装载那个支持nfsroot的内核 PMON> g root=/dev/nfs rw nfsroot=192.168.10.94:/opt/loongos ip=192.168.10.139:192.168.10.94:192.168.10.1:255.255.255.0::syn0:off console=tty console=ttyS0,115200 no_auto_cmd
- 文件系统中dev目录下的console节点和null节点不能创建,所以我去dev目录下检查了一下,发现居然没有这两个节点,因此我自己手动加入这两个节点:
mknode console c 5 1 mknode null c 1 3
如果没有问题,应该可以进入到一个基本的文件系统里头了。
关于ip的各个字段的含义:
ip=<client-ip>:<nfssever-ip>:<gateway-ip>:<netmask>:<host-name>:<device>:<auto-conf>