Linux嵌入式系统环境搭建、内核配置、最小系统启动与设备文件分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Linux嵌入式系统设计与开发1第一部分嵌入式系统开发环境第一章嵌入式系统开发环境的搭建,以及相关工具的使用1.1虚拟机+linuxredhat9.0安装1.1.1虚拟机软件的安装及配置。虚拟机软件是一种可以在一台电脑上模拟出来若干台PC,每台PC可以运行单独操作系而互不干扰,实现一台电脑“同时”运行几个操作系统,还可以将这几个操作系统连成一个网络的软件。采用VMwareWorkstation5.5例说明如何在windows创建一个虚拟机环境。VMwareWorkstation安装后的界面如下:创建一个虚拟机选择linux指定虚拟机存放的路径选择网络配置对于虚拟机的设备进行配置,这里采用虚拟光驱,指定安装linux镜像的路径设备相关信息设置如下,启动虚拟机,开始安装。进行linux安装1.1.2Redhat9.0的安装。注意不安装防火墙,采用workstation,确保服务samba,tftp,tfp,nfs,SSH,DHCP,telnet都安装上。1.2Linux系统服务的配置配置系统服务时,要使防火墙关闭,或使其为低。1.2.1网络配置[root@localhost/]#setup进入网络配置菜单,设置ip。[root@localhostroot]#servicenetworkrestart重启网络服务[root@localhostroot]#ifconfig察看网络配置1.2.2Tftp服务的配置选择tftp服务[root@localhost/]#setup配置tftp服务目录[root@localhost/]#vi/etc/xinetd.d/tftpservicetftp{disable=nosocket_type=dgramprotocol=udpwait=yesuser=rootserver=/usr/sbin/in.tftpdserver_args=-s/tftpbootper_source=11cps=1002}启动tftp服务[root@localhost/]#servicexinetdrestartStoppingxinetd:[OK]Startingxinetd:[OK]检测tftp服务[root@localhost/]#netstat-a|greptftpudp00*:tftp*:*1.2.3Samba服务器配置选择samba服务[root@localhost/]#setup编辑smb.conf配置文件,[root@localhost/]#vi/etc/samba/smb.conf增加用户名以及共享路径,如下:[homes]comment=HomeDirectoriespath=/browseable=nowritable=yesvalidusers=rootcreatemode=0664directorymode=0775[root@localhost/]#smbadduserroot:admin增加samba用户[root@localhost/]#servicesmbrestart激活samba服务[root@localhost/]#servicesmbstatus察看samba服务1.2.4telnet服务器配置选择telnet服务[root@localhost/]#vi/etc/pam.d/login注释掉authrequired/lib/security/pam_securetty.so这句话重启服务[root@localhost/]#servicexinetdrestart至此可以以root用户telnet登录1.2.5nfs服务器配置选择nfs服务[root@localhost/]#vi/etc/exports增加nfs服务输出的路径以及供给的ip地址,例如增加如下条目:/home/nfsroot192.168.230.128(rw,sync)表示ip地址为192.168.230.128可以读写本机的目录/home/nfsroot[root@localhost/]#servicenfsrestart激活nfs服务[root@localhost/]#servicenfsstatus察看nfs服务的状态1.2.6DHCP服务器配置注意:当配置DHCP服务时会对于局域网有影响,建议在虚拟机的环境下,网络设备选择Host-only工作方式,如果不是虚拟机,请把网络连接与局域网断开。选择DHCP服务器[root@localhost/]#cp/usr/share/doc/dhcp-3.0pl1/dhcpd.conf.sample/etc/dhcpd.conf创建一个DHCP服务的配置文件[root@localhost/]#vi/etc/dhcpd.conf编辑dhcpd.conf配置DHCP服务,下面的例子实现了基本的配置,目的是为在虚拟机上实现linux内核在网络上的启动。本机的ip是192.168.230.129ddns-update-styleinterim;ignoreclient-updates;subnet192.168.230.0netmask255.255.255.0{#---defaultgatewayoptionrouters192.168.230.129;optionsubnet-mask255.255.255.0;optiontime-offset-18000;#EasternStandardTimerangedynamic-bootp192.168.230.120192.168.230.128;default-lease-time21600;max-lease-time43200;filename/pxelinux.0;#为实现通过网络启动加载的文件#wewantthenameservertoappearatafixedaddress}[root@localhost/]#servicedhcpdstart开启dhcp服务[root@localhost/]#servicedhcpdstatus察看服务是否运行1.2.7支持网络启动内核的配置方法基本原理,实现网络启动必须支持PXE,PXE(Pre-bootExecutionEnvironment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXEclient在网卡的ROM中,当计算机引导时,BIOS把PXEclient调入内存执行,并显示出命令菜单,经用户选择后,PXEclient将放置在远端的操作系统通过网络下载到本地运行。PXE协议的成功运行需要解决以下两个问题:l既然是通过网络传输,那么计算机在启动时,它的IP地址由谁来配置;l通过什么协议下载Linux内核和根文件系统对于第一个问题,可以通过DHCPServer解决,由DHCPserver来给PXEclient分配一个IP地址,DHCPServer是用来给DHCPClient动态分配IP地址的协议,不过由于这里是给PXEClient分配IP地址,所以在配置DHCPServer时,需要增加相应的PXE特有配置。至于第二个问题,在PXEclient所在的ROM中,已经存在了TFTPClient。PXEClient使用TFTPClient,通过TFTP协议到TFTPServer上下载所需的文件。1.2.7.1配置DHCP和tfpt服务,配置方式见以上描述。1.2.7.2配置bootstrapBootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。bootstrap文件在dhcpd.conf中被指定为pxelinux.0文件,放置在/tftpboot。Linux内核以及Linux根文件系统也放置在/tftpboot。pxelinux.0在执行过程中,要读配置文件,所有的配置文件都放在/tftpboot/pxelinux.cfg/目录下。由于PXElinux具有为不同的PXEClient提供不同的Linux内核以及根文件系统的功能,所以要通过不同的配置文件名来区分出不同的PXEClient的需求。比如一个PXEClient由DHCPServer分配的IP地址为192.168.0.22,那么相对应的配置文件名为/tftpboot/pxelinux.cfg/C0A80016(注:C0A80016为IP地址192.168.0.22的十六进制表示)。如果找不到,就按照顺序C0A80016-C0A8001-C0A800-C0A80-C0A8-C0A-C0-C-default查找配置文件。[root@localhost/]#cp/usr/lib/syslinux/pxelinux.0/tftpboot/[root@localhost/]#cd/tftpboot/[root@localhosttftpboot]#mkdirpxelinux.cfg[root@localhosttftpboot]#cdpxelinux.cfg/[root@localhostpxelinux.cfg]#videfaultdefaultlinux-bootprompt1timeout30labellinux-bootkernelvmlinuzappendinitrd=initrddevfs=nomountramdisk_size=9216把内核vmlinuz,initrd拷贝到/tftp下,这样当启动另外一个虚拟机,启动时按F12,即可进入网络启动。启动界面如下:1.3交叉工具链的介绍与使用1.3.1基础知识交叉编译,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(OperatingSystem)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。在主机平台上开发程序,并在这个平台上运行交叉编译器,编译我们的程序;而由交叉编译器生成的程序将在目的平台上运行。例如:arm-linux,说明平台所使用的是arm体系结构,运行的操作系统是linux1.3.2GNU交叉工具链的下载Arm工具链的官方下载地址:://ftp.arm.linux.org.uk/pub/arm-linux-/toolchain/cross3.0.tar.bz2://可以下载arm-linux-gcc-3.4.1编译linux2.6的内核1.3.3GNU交叉工具链的介绍以及使用1.3.3.1常用工具介绍arm-linux-as编译ARM汇编程序arm-linux-ar把多个.o合并成一个.o或静态库(.a),arm-linux-ranlib为库文件建立索引,相当于arm-linux-ar–sarm-linux-ld连接器(Linker),把多个.o或库文件连接成一个可执行文件arm-linux-objdump查看目标文件(.o)和库(.a)的信息arm-linux-objcopy转换可执行文件的格式arm-linux-strip去掉elf可执行文件的信息.使可执行文件变小arm-linux-readelf读elf可执行文件的信息arm-linux-gcc编译.c或.S开头的C程序或汇编程序arm-linux-nm用来列出目标文件的符号清单1.3.3.2主要工具的使用1.3.3.2.1arm-linux-gcc的使用1.编译C文件,生成elf可执行文件h1.c源文件#includestdio

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功