一.编译
1. uboot的编译
-
a. 修改 /work/tq/uboot/Makefile
-
#CROSS_COMPILE = /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-
-
CROSS_COMPILE = /work/tq/bak/toolchain/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux-
-
b. make EmbedSky_config
-
c. make -j8
-
d. 烧写 dnw
2. 内核的编译
-
a. 修改交叉编译工具链
-
由于没有在path环境变量中设arm-linux-gcc,
-
所以需要改/work/tq/bak/toolchain/4.3.3/bin/arm-linux-gcc
-
#exec arm-none-linux-gnueabi-gcc -march=armv4t $*
-
exec /work/tq/bak/toolchain/4.3.3/bin/arm-none-linux-gnueabi-gcc -march=armv4t $*
-
b. 修改 /work/tq/kernel/Makefile
-
#CROSS_COMPILE = arm-linux-
-
CROSS_COMPILE = /work/tq/bak/toolchain/4.3.3/bin/arm-none-linux-gnueabi-
-
c. cp -arf ./config_EmbedSky_W35 .config
-
d. make -j16 zImage 在当前目录下生成zImage.bin
2.1 问题:如果不选启动时会出现Kernel panic - not syncing: Attempted to kill init!
-
Kernel Features --->
-
[*] Use the ARM EABI to compile the kernel
-
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTA)
3.busybox的编译
-
/work/tq/rootfs/busybox-1.16.0/Makefile
-
164 #CROSS_COMPILE ?=
-
165 CROSS_COMPILE ?=/work/tq/bak/toolchain/4.3.3/bin/arm-none-linux-gnueabi-
-
-
191 #ARCH ?= $(SUBARCH)
-
192 ARCH ?= arm
4.文件系统
-
从2.6.30.4目录下将root_qt_4.5_2.6.30.4_20100601.tar.bz2出来
-
cong@msi:/work/tq/rootfs$ sudo /work/tq/bak/toolchain/sbin/mkyaffs2image ./opt/EmbedSky/root_qt_4.5_2.6.30.4/ rootfs.img
5.烧写
ubuntu下用dnw
二. 具体使用
1. nfs的访问
-
主机端:
-
a. 安装nfs: root@ubuntu: # apt-get install nfs-kernel-server
-
b. 安装nfs客户端: root@ubuntu: # apt-get install nfs-common
-
c. 配置文件/etc/exports,添加如下一行
-
/tmp/ *(rw,sync,no_subtree_check,no_root_squash,insecure)
-
d. 启动NFS: root@ubuntu: # /etc/init.d/nfs-kernel-server start
-
-
TQ2440端:
-
[root@EmbedSky sky]# mount -t nfs 192.168.4.87:/tmp /mnt/ -o nolock -o tcp
nfs: server ******* not responding, still trying
解决: a.改nfs的协议,从udp该到tcp
b.改每次传输的块,更改rsize和wsize
2.网络设定
-
a.临时修改mac地址
-
[root@EmbedSky /]# ifconfig eth0 down
-
[root@EmbedSky /]# ifconfig eth0 hw ether 10:44:45:67:89:AB
-
[root@EmbedSky /]# ifconfig eth0 up
-
b. 永久修改
-
/etc/net.conf
-
IPADDR=192.168.4.239
-
NETMASK=255.255.255.0
-
GATEWAY=192.168.4.1
-
MAC=10:AC:45:67:89:ab
3. 通过nfs挂载根文件系统
3.1
主机端的设置:
-
a.将root_qt_4.5_2.6.30.4_20100601.tar.bz2解压到/work/tq/rootfs_nfs中
-
cong@msi:/work/tq/rootfs_nfs$ ls
-
bin dev etc home lib linuxrc mnt opt proc root sbin sys tmp usr var web
-
-
b.将/work/tq/rootfs_nfs添加到/etc/exports下
-
cong@msi:/work/tq/rootfs_nfs$ cat /etc/exports
-
# /etc/exports: the access control list for filesystems which may be exported
-
/work/tq/rootfs_nfs *(rw,sync,no_subtree_check,no_root_squash,insecure)
-
-
c.并重启nfs-server
-
cong@msi:/work/tq/rootfs_nfs$ sudo /etc/init.d/nfs-kernel-server restart
3.1
TQ2440的设置
参考
4.tftp服务器的配置
-
1.1 搭建tftp服务器
-
TFTP(Trivial File Transfer Protocol,简单文件传输协议),是一个基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于开销不大、不复杂的应用场 合。TFTP协议专门为小文件传输而设计,只能从服务器上获取文件,或者向服务器写入文件,不能列出目录,也不能进行认证。
-
在嵌入式Linux开发中,TFTP协议在很多场合都被用到,甚至是必不可少的,特别是在内核调试阶段,在U-Boot下通过TFTP协议从服务器上加载内核并运行,既方便又快捷。
-
一般的发行版默认都没有安装TFTP服务以及TFTP服务器。TFTP服务依赖于网络守护进程服务程序,可选择安装inetd或者升级版的xinetd, 然后安装tftp和tftp-server,接着修改或者创建/etc/xinetd.d/tftp配置文件,最后重启xinetd,启动TFTP服务。 无论采用什么发行版,TFTP服务器的安装都是这样的流程,只不过不同发行版的安装命令不同而已,下面以ubuntu为例进行说明。
-
安装xinetd:
-
ky@ubuntu:~$ sudo apt-get install xinetd
-
安装tftp和tftpd:
-
ky@ubuntu:~$ sudo apt-get install tftp tftpd
-
或者安装tftp的增强版本tftp-hpa:
-
ky@ubuntu:~$ sudo apt-get install tftp-hpa tftpd-hpa
-
建立配置文件。建立/etc/xinetd.d/tftp文件,写入如下内容:
-
service tftp
-
{
-
socket_type = dgram
-
protocol = udp
-
wait = yes
-
user = root
-
server = /usr/sbin/in.tftpd
-
server_args = -s /var/tftpboot/
-
disable = no
-
per_source = 11
-
cps = 100 2
-
flags = IPv4
-
}
-
其中server_args设置的/var/tftpboot目录是tftp服务器的目录,设置其访问权限为777:
-
ky@ubuntu:~$ sudo mkdir -pv /var/tftpboot/
-
ky@ubuntu:~$ sudo chmod 777 /var/tftpboot/
-
启动或者重启xinetd服务:
-
ky@ubuntu:~$ sudo /etc/init.d/xinetd start或者restart
-
本机测试。在/tftpboot目录下创建一个ky文件,启动另外一个终端,输入:
-
ky@ubuntu:~$ tftp 127.0.0.1
-
tftp> get ky #获取ky文件
-
tftp> q #退出tftp
-
在终端输入ls命令,可以看到当前目录下看到ftp获取到的ky文件。
-
用开发板来验证tftp服务器是否可用。启动开发板,进入U-Boot命令行,用tftp命令加载tftp服务器中的文件,如:
-
U-Boot$ tftp 80008000 zImage
-
ENET:auto-negotiation complete
-
ENET:Link status up
-
ENET:FULL DUPLEX
-
ENET:100MBase
-
MAC: 00:61:62:69:6e:67
-
TFTP from server 192.168.1.3; our IP address is 192.168.1.5
-
Filename 'zImage'.
-
Load address: 0x80008000
-
Loading: #################################
-
done
-
Bytes transferred = 479927 (752b7 hex)
-
说明:
-
(1)使用开发板与虚拟机安装的客户系统进行TFTP通讯,需要将虚拟网卡设置为Bridged模式,并建议使用静态IP地址。
-
(2)如果以上设置都确认无误,但tftp还是不成功,请检查主机的防火墙是否已经关闭。
-
[转]http://www.diybl.com/course/6_system/linux/ubuntu/20110902/559396.html
-
噢了
阅读(2141) | 评论(0) | 转发(1) |