Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1064581
  • 博文数量: 573
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 66
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-28 16:21
文章分类

全部博文(573)

文章存档

2018年(3)

2016年(48)

2015年(522)

分类: LINUX

2015-12-02 10:10:25

1,win7系统有线上网:
1),不要用无线上网,从路由器引一根有线出来,另一头接交换机。
2),再从交换机引出一根网线接win7。
3),查看其他电脑无线上网时候的IP地址,IP网段:192.168.1.1,cmd,ipconfig看地址。
4),网络连接-》右键属性-》更改适配器设置-》本地连接-》右键-》启用。
5),本地连接-》右键-》属性-》internet协议版本 4(TCP/IPV4)-》取消自动获取IP
使用下面的IP
IP地址:192.168.1.90   //设置win7 IP
子网掩码:255.255.255.0
默认网关:192.168.1.1
首选DNS服务器:192.168.1.1
6),打开浏览器检测是否可以正常上网?
cmd中ipconfig查看IPV4地址是否设置成功?
如果不能上网,就关闭windows防火墙。


2,虚拟机ubuntu也上网:
1),虚拟机-》VM-》Virtual Machine Setting-》NetWork Adapter:Bridged
2),edit-》Virtual NetworkEdit-》VMnet0,Bridged选择-》在下面选择Bridged
3),system settings-》network-》wired-》options-》IPV4 settings-》
method:manual
ADD
Address:192.168.1.91      //设置ubuntu IP
NetMask:255.255.255.0
GateWay:192.168.1.1
DNS server:192.168.1.1
4),/etc/init.d/networking restart     
//ubuntu网络重启,用配置来配置静态IP,才需要网络重启,用图形界面配置,不需要执行这个命令。
5),打开火狐浏览器检测是否可以正常上网?
或者在终端上:ping 192.168.1.90(ctrl+alt+t:可以弹出终端)
或者:ping
或者:ifconfig查看

3,编译内核 生成内核镜像文件 uImage
1),CRT终端  SSH2协议连接上ubuntu:192.168.1.198(前提是ubuntu已经安装了:apt-get install ssh)
2),解压内核压缩包(放在ubuntu)
# tar xjvf kernel-2.6.13-20081206.tar.bz2
3),编译内核
root用户下:
# cd /linux/kernel/kernel-2.6.13
# cp config_TQ2440_C43 .config
# vi Makefile : 修改 194行
ARCH ?= arm
CROSS_COMPILE ?= /home/wangxc/linux/toolchain/crosstools_3.4.1_softfloat/arm-linux/gcc-3.4.1-glibc-2.3.3/bin/arm-linux-   //指定编译工具
# make clean; make  //编译    
/*linux/kernel/kernel-2.6.13/arch/arm/boot下 得到 zImage 文件
出现:Kernel: arch/arm/boot/zImage is ready :表示 内核编译成功
*/
/etc/init.d/ssh restart
4),zImage 转化成 uImage
//uImage=头部+真正的内核zImage,因为uboot支持的内核有一个头部。
# cd linux/kernel/kernel-2.6.13/arch/arm/boot
//将mkimage.sh文件 和 mkimage 文件,都复制到这个目录下。
mkimage文件时可执行文件
mkimage.sh文件的内容如下:
./mkimage -A arm -O linux -T kernel -C none -a 0x32000000 -e 0x32000040 -n Linux-2.6.13 -d zImage uImage
0x32000000 : 是内核uImage在sdram中的加载地址
0x32000040 : 是内核zImage在sdran中的入口地址
....
地址越来越大的方向是内核代码存储的地方。
./mkimage -A arm -O linux -T kernel -C none -a 0x32000000 -e 0x32000040 -n Linux-2.6.30 -d zImage uImage
# ./mkimage.sh    //linux/kernel/kernel-2.6.13/arch/arm/boot下 得到 uImage 文件,mkimage命令是内核镜像转换工具。生成 uImage 之后,就可以下载内核到开发板了。

4,解压文件系统:
1),解压
ubuntu CRT下:
# tar -xjvf root_2.6.13_condense.tar.bz2
# cd /home/wangxc/linux/rootfs
# cp -r ./opt/EmbedSky/root_2.6.13_condense ./nfs_2.6.13
2),查看,修改linux的启动脚本,即启动选项
vi /linux/rootfs/nfs_2.6.13/etc/init.d/rcS //是网络文件系统的配置文件,不是ubuntu的/etc/init.d/rcS
#ifconfig eth0 192.168.1.6 up  //这行要注释掉

5,开发板IP,和相关环境的设置:
1),开发板接线上电:
开发板网线连接交换机,串口USB线:串口端接开发板,USB接win7,开发板打到Nor Flash启动,开发板上电:
开发板上电成功:LCD屏幕上会出现天嵌科技。
2),安装串口驱动:
这个驱动成功的话:计算机-》右键,设备管理器-》会出现端口-》选择:Prolific USB-to-Serial Comm Port(COM1)-》右键,属性:可以更改端口的许多参数
3),CRT终端  serial协议连接上COM1:回车,会出现Nor Flash的各种选项
4),下面就开始在 CRT终端  serial协议COM1上进行一些操作:
q,q:连续2次q,退出选项,进入uboot命令行模式;
/*注意:下面的网段不是家里的网段
setenv serverip 192.168.100.90 (win7 IP)
setenv ipaddr 192.168.100.92 (board IP)
setenv bootargs noinitrd console=ttySAC0,115200 root=/dev/nfs rw nfsroot=/home/wangxc/linux/rootfs/nfs_2.6.13 ip=192.168.100.92:192.168.100.91:192.168.100.1:255.255.255.0:host:eth0:off mem=64M
setenv bootargs noinitrd console=ttySAC0,115200 root=/dev/nfs rw nfsroot=/home/wangxc/linux/rootfs/nfs_2.6.30 ip=192.168.100.92:192.168.100.91:192.168.100.1:255.255.255.0:host:eth0:off mem=64M
saveenv
*/
》printenv  //查看开发板的环境变量
》setenv serverip 192.168.1.90    //serverip设置 win7 IP
》setenv ipaddr 192.168.1.92   //ipaddr设置 board IP
》setenv bootargs noinitrd console=ttySAC0,115200 root=/dev/nfs rw nfsroot=/home/wangxc/linux/rootfs/nfs_2.6.13 ip=192.168.1.92:192.168.1.91:192.168.1.1:255.255.255.0:host:eth0:off mem=64M
//bootargs:告诉板子,启动后,到哪里去找文件系统。也即,它的文件系统挂载在哪里了?nfsroot设置 网络文件系统所在的目录[在ubuntu下面共享出来的一个文件夹], ip设置:第1个是board IP,第2个是网络文件系统所在IP,也就是ubuntu ip,当然网关192.168.1.1也要设置
//console : 指明控制台用什么设备,ttySAC0表示用串口0作为控制台,如果没有这项。内核的启动信息将不会通过串口打印到屏幕
  //console : tty1 可能表示指定的控制台是LCD屏幕。内核里面使用printk时,肯定要发送到具体的硬件,所以肯定要调用具体的硬件函数,究竟打印到串口还是LCD或者同时打印到2个,由 console来决定。
》 saveenv //保存设置的开发板环境变量


》printenv  //查看开发板的环境变量
》setenv serverip 192.168.1.90    //serverip设置 win7 IP
》setenv ipaddr 192.168.1.92   //ipaddr设置 board IP
》setenv bootargs noinitrd console=ttySAC0,115200 root=/dev/nfs rw nfsroot=/home/wangxc/linux/rootfs/nfs_2.6.30 ip=192.168.1.92:192.168.1.91:192.168.1.1:255.255.255.0:host:eth0:off mem=64M
》setenv bootargs noinitrd console=ttySAC0,115200 root=/dev/nfs rw nfsroot=/home/wangxc/linux/rootfs/nfs_2.6.30.a ip=192.168.1.92:192.168.1.91:192.168.1.1:255.255.255.0:host:eth0:off mem=64M
//bootargs:告诉板子,启动后,到哪里去找文件系统。也即,它的文件系统挂载在哪里了?nfsroot设置 网络文件系统所在的目录[在ubuntu下面共享出来的一个文件夹], ip设置:第1个是board IP,第2个是网络文件系统所在IP,也就是ubuntu ip,当然网关192.168.1.1也要设置
  //setenv bootargs noinitrd root=/dev/mtdblock2 rw console=ttySAC0,115200
》 saveenv //保存设置的开发板环境变量

6,内核的移植:开发板中加载内核
1),打开 samba 服务器:共享目录:指定为 文件系统,内核源码的上一级目录。
2),win7中启动TFTP服务:
在win7的samba共享文件夹中,Tftpd32工具放在uImage所在的目录下,即win7中,X:\kernel\kernel-2.6.13\arch\arm\boot下。
双击即可启动 免安装版的 Tftpd32工具,即是:打开TFTP服务。
注意:启动Tftpd32工具之后,在uImage传输过程中,不要关闭了,最小化即可。
另外:在win7上安装非免安装的tftp,要注意,配置tftp根目录,这个根目录就是文件系统所在目录
     也就是ubuntu里面的目录,还要配置tftp安全里面的,发送和接收使能c/
3),传内核到开发板的SDRAM;
NorFlash:掉电丢失
serial CRT 下:
》 tftp 32000000 uImage,当然要在win7上安装tftp服务。
/*出现下面的这个,表示传输成功,另外:TFTP工具上有数据,也表示有数据在传输
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
TFTP from server 192.168.1.199; our IP address is 192.168.1.197
Filename 'uImage'.
Load address: 0x32000000
Loading: T #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
done
Bytes transferred = 1659012 (195084 hex)
如果不成功:检查网线接口是否松动?
如果还是不成功,可以把windows防火墙要关闭
关闭防火墙的方法:控制面板\系统和安全\Windows 防火墙\自定义设置\关闭windows防火墙(2个都是关闭)
如果还是不成功,可以把360等杀毒软件关闭。
*/


7,启动内核+挂载文件系统  //启动时会根据 环境bootargs 指定开发板的文件系统想挂载哪里的文件系统
1),serial CRT 下:
》 bootm  //出现:Please press Enter to activate this console. 表示启动成功,如果成功,进入下面第6步
2),报错:
/*
Root-NFS: Unable to get mountd port number from server, using default
Root-NFS: Server returned error -5 while mounting /home/wangxc/linux/rootfs/nfs_2.6.13
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or unknown-block(2,0)
Please append a correct "root=" boot option
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
*/
则在ubuntu安装nfs服务器:
ubuntu CRT下:
# apt-get install nfs-kernel-server,还得配置,
在ubuntu下面的/etc/exports ,添加一行
/home/wangxc/linux/rootfs/nfs_2.6.13 192.168.1.*(rw,sync,no_root_squash)  //注意:这里的网段一定要正确
上面一句的含义:
/home/wangxc/linux/rootfs/nfs_2.6.13 是NFS服务器端要被挂载的文件夹
192.168.1.*指的是这个网段的客户端可以挂载本文件夹,此处也可以写成主机名称,
括号里的rw指的是授权可读可写。


所以自己做的根文件系统myrootfs同样可以挂载:
#sudo mount -t nfs 192.168.1.91:/home/wangxc/linux/rootfs/nfs_2.6.13 /mnt
#sudo mount -t nfs 192.168.1.91:/home/wangxc/linux/rootfs/myrootfs /mnt
上面的命令:是把nfs挂载在ubuntu的/mnt目录下。
如果/etc/exports 文件修改了,一定要重启nfs:之前若没有打开NFS服务,则要打开NFS服务。
# /etc/init.d/nfs-kernel-server restart
/*
 * Stopping NFS kernel daemon
   ...done.
 * Unexporting directories for NFS kernel daemon...
   ...done.
 * Exporting directories for NFS kernel daemon...
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.1.*:/home/wangxc/linux/rootfs/myrootfs".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x


   ...done.
 * Starting NFS kernel daemon
   ...done.
*/


3),此时还出现不能挂载:因为我们的内核(kernel)没有配置nfs,所以要在内核里面通过
ubuntu CRT下:
# cd /home/wangxc/linux/kernel/kernel-2.6.13
/*这个内核其实是别人(开发板产商)已经移植好的,适合TQ2440开发板的内核,我们这里是直接使用,就不从网上下载来移植了。
*移植一个操作系统是非常难的,所以移植裁剪一个操作系统:是我们现阶段学习操作系统的中级目标。
*移植操作系统在公司里面往往是一个团队来完成的,一个人来完成难度非常大的。
*/
# make menuconfig  
//在ubuntu 终端下执行,以免屏幕宽度不够,编译图形界面工具,重新配置,在里面使能nfs功能,
make menuconfig:这个命令会读取.config 文件
/*可能报错:
*** Unable to find the ncurses libraries or the
 *** required header files.
 *** 'make menuconfig' requires the ncurses libraries.
 *** Install ncurses (ncurses-devel) and try again.
make[1]: *** [scripts/kconfig/dochecklxdialog] Error 1
make: *** [menuconfig] Error 2
根据提示,需要安装ncurses-devel的库,解决方法:     
*/
# sudo apt-get install libncurses5-dev  //安装ncurses-devel的库
/*可能报错:
/usr/bin/ld: cannot find -lncurses
lncurs 找不到
*/
# apt-get install libncurses-dev  //下载安装图形界面的库
/*进入图形界面之后:
1,找到 File System 文件系统,enter进入
2,找到 network file system 网络文件系统,enter进入
3,NFS server suport 加 *,用空格可以加 *,表示网络服务支持,
4,会出现2个子菜单,都选上,即都加*; 
5,第1个子菜单,还会出现2个子菜单,也选上,即也加*;
6,连续按2次esc键退出到 make menuconfig 刚进去的图形界面,
7,找到save configuration to an alternate file,选择即可保存刚才配置的数据。
8,也可以直接到第8步,选择exit 退出。会提示是否保存刚才修改的配置,选择OK即可。
*/
4),前面已经报错过了,所以还要在kernel下面make(记得转换zImage===uImage),再传内核到开发板;
5),再次启动内核:
serial CRT 下:
》bootm  //出现:Please press Enter to activate this console. 表示启动成功,当然,文件系统也挂载成功了。
6),回车,即可进入网络文件系统
7),检查启动是否成功
serial CRT 下:
# ifconfig  //查看开发板的IP是否已经存在
# ls       //查看开发板的根目录是不是我们指定的要挂载的文件系统
# ping  //查看开发板是否可以上网了


8,启动成功之后:
1),至此:开发板+ubuntu+win7 都能互相 ping通,并且都能 ping通
2),serial CRT 下:
# ls -l  
/*可查看开发板的启动目录,即开发板的根目录就是 ubuntu中 /home/www/linux/rootfs/nfs-2.6.13
  即是开发板的内核在Nor Flash中,但是文件系统不在开发板中,而是挂载的 ubuntu中的网络文件系统。
由于/home/wangxc/linux/目录在win7中通过samba共享了,所以,
开发板的根目录 和 ubuntu中 /home/wangxc/linux/rootfs/nfs-2.6.13 目录,win7中 X:\rootfs 目录 
相互映射:任何1方修改,增加,删除,编辑任何目录,文件,3方都能立马看见,里面的内容完全一样。
*/

阅读(936) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:volatile用法

给主人留下些什么吧!~~