让内核/根文件系统 运行在目标板上
怎样让内核和根文件系统运行在目标板上呢,最常见的方法是使用tftp下载内核到目标板上,然后通过适当的参数引导内核来挂载根文件系统(通过主机使用NFS)。
5.2.1使用NFS从主机导出根文件系统
我们介绍一些需要执行的典型的步骤(需要root 权限):
1. 选择一个在您的网络上未被使用的IP地址分配给您的目标。同时您需要确保您在配置ltib时,根文件系统可以使用该IP地址。目标甚至可以启用DHCP来得到IP。但是如果您在ltib配置时选择了DHCP和NFS部署,它实际上将绕过eth设备的设置,而且依赖于当前设置的内核启动参数。
2. 记住您主机的IP地址。例如,我们假设以下的参数:
目标IP地址: 192.168.0.254
主机地址:192.168.0.204
根文件系统位置:~/ltib(根据下载的BSP包可能不同,但是大多是以它为前缀)/rootfs
3. 创建一个链接,从/tftpboot目录到根文件系统:
# ln –s ~/ltib/rootfs /tftpboot/192.168.0.254
4. 确保您已经在您的系统上安装了NFS服务器和端口映射(若未安装可参考安装一节)。
5. 导出目录,通过编辑‘/etc/exports’,增加条目:
/home/
注意:这个例子将关闭该目录下所有的安全性!任何主机都可以访问此导出的目录。可以通过 ”man exports” 查看更多的信息。
6. 重启NFS(该目录仍在rootfs目录下):
# sh /etc/rc.d/init.d/nfs restart
5.2.2 确保您有一个tftp守护进程运行在您的主机
大多数的bootloader 加载内核的网络连接使用tftp协议。所以您的目标的bootloader 可以处理已经编译的内核,您必须确保在主机上有一个tftp的守护进程。这里您可以做一些检查,如下:
1、检查tftp服务器程序出现在您的系统中。使用下面的命令检查,如果它没有出现,您可能需要安装tftp-server 包。
# ls /usr/sbin/in.tftpd /usr/sbin/in.tftpd
|
2、检查inetd 是否设置运行tftp服务,可以通过运行如下命令检查。您的输出可能类似这样:
# netstat –a | grep tftp udp 0 0 *:tftp *:*
|
如果这儿没有输出,可以在下面文件中进行修改,使它使能:
/etc/xinetd.d/tftp
In my copy I note the following line:
disable = no
3、如果您的主机有防火墙,请确保它不会阻塞来自于目标的包的传入。所以,建议关闭防火墙。
5.2.3拷贝您的内核镜像到tftp可以检索到的一个位置
一般tftp服务器配置为“chroot”到这个目录。
/tftpserver
这意味着您需要拷贝您的内核到这个目录或者其下的子目录。在我们的示例中,我们做如下操作:
# cp rootfs/boot/uImage /tftpboot
上句命令包含这些信息:/tftpboot是我们前面设置好的tftp服务器目录,该目录可在/etc/xinetd.d/tftp 文件中修改;rootfs/boot/uImage 是LTIB生成的可引导的内核文件;命令的目的是将内核文件拷贝到tftp的服务器目录,方便后面进行tftp下载内核镜像。
5.2.4 使用导出RFS为您的内核设置bootloader参数
这个例子显示的是一个系统(参数为前一节中的设置)使用uboot / ppcboot :
设置网络参数。在ppcboot的提示:
= >setenv ipaddr 192.168.0.254
= > setenv serverip 192.168.0.204
= > setenv bootargs root = /dev/nfs nfsaddrs = 192.168.0.254:192.168.0.204
5.2.5 下载您的内核到目标板上并启动目标
=> tftp 100000 vmlinux.gz.uboot
.........
=> bootm 100000