欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    [计算机软件及应用]10-Linux.doc

    • 资源ID:1991416       资源大小:269KB        全文页数:31页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [计算机软件及应用]10-Linux.doc

    Linux-2.6.32.2内核在mini2440上的移植-根文件系统制作(1)  1根文件系统制作在构建文件系统时,建议遵循FHS(Filesystem Hierarchy Standard,文件系统层次标准),它定义了文件系统中目录、文件的分类存放原则,定义了系统运行需要的最小文件目录的集合,FHS文档可以到www.pathname.com/fhs/下载。【1】下载busybox 源代码可以从http:/www.busybox.net/downloads/,这里下载的是busybox-1.13.3.tar.bz2,友善官方也有提供直接复制过来即可:rootlocalhost linux-test# lsbusybox-1.13.3-mini2440.tgz   linux-2.6.32.2  linux-2.6.39  yaffs2rootlocalhost linux-test# 【2】根文件系统目录说明嵌入式 Linux 中都需要构建根文件系统,构建根文件系统的规则在FHS(FilesystemHierarchy Standard)文档中,下面是根文件系统顶层目录。目录 内容bin    存放所有用户都可以使用的、基本的命令。sbin   存放的是基本的系统命令,它们用于启动系统、修复系统等。usr    里面存放的是共享、只读的程序和数据。proc  这是个空目录,常作为proc 文件系统的挂载点。dev   该目录存放设备文件和其它特殊文件。etc    存放系统配置文件,包括启动文件。lib     存放共享库和可加载块(即驱动程序),共享库用于启动系统、运行根文件系统中的可执行程序boot  引导加载程序使用的静态文件。home 用户主目录,包括供服务账号锁使用的主目录,如FTP。mnt    用于临时挂接某个文件系统的挂接点,通常是空目录。也可以在里面创建空的子目录。opt    给主机额外安装软件所摆放的目录。root   root 用户的主目录tmp   存放临时文件,通常是空目录。var   存放可变的数据,如日志等。【3】创建系统目录。操作如下:在与linux内核相同的目录下创建一个目录,此目录名字可以自己指定,这里创建的目录名为myrootfs。rootlocalhost linux-test# mkdir myrootfsrootlocalhost linux-test# lsbusybox-1.18.4.tar.bz2  linux-2.6.32.2  linux-2.6.39 myrootfs  yaffs2进入到/root/linux-test/myrootfs/rootfs 目录,新建一个建立根文件系统目录的脚本文件mkrootfs:rootlocalhost linux-test# cd myrootfsrootlocalhost myrootfs# gedit mkrootfs将下列内容复制其中:#!/bin/shecho "-Create rootfs directons start.-"mkdir rootfscd rootfsecho "-Create root,dev.-"mkdir bin boot dev etc home lib mnt proc root sbin sys tmp usr var  wwwmkdir etc/init.d etc/rc.d etc/sysconfigmkdir usr/sbin usr/bin usr/lib usr/modulesecho "make node in dev/console dev/null"mknod -m 666 dev/console c 5 1mknod -m 666 dev/null c 1 3mkdir mnt/etc mnt/jffs2 mnt/yaffs mnt/data mnt/tempmkdir var/lib var/lock var/run var/tmpchmod 1777 tmpchmod 1777 var/tmpecho "-make direction done-"然后执行:wq保存退出。使用命令chmod a+x mkrootfs 改变文件的可执行权限:rootlocalhost myrootfs# chmod a+x mkrootfs运行./mkrootfs 脚本:rootlocalhost myrootfs# ./mkrootfs-Create rootfs directons start.-Create root,dev.-make node in dev/console dev/null-make direction done-rootlocalhost myrootfs# 这样就完成了根文件系统目录的创建。在上面脚本执行过程创建的两个设备文件console 和null非常重要,这两文件和控制台设备有关,在前面提到过的在内核挂载文件系统时出现的告警“Warning: unable to open an initial console”与之有关。【4】编译并安装内核模块首先就进入到内核顶级目录下,并确认内核顶层目录下的Makefile中的ARCH=arm,CROSS_COMPILE=arm-linux-,然后执行编译:rootlocalhost linux-test# cd linux-2.6.32.2rootlocalhost linux-2.6.32.2# make modules等到编译完成后,安装编译好的模块:rootlocalhost linux-2.6.32.2# make modules_install ARCH=arm INSTALL_MOD_PATH=/root/linux-test/myrootfs/rootfs等到模块安装完成后可以看到rootlocalhost linux-2.6.32.2# cd ./myrootfs/rootfsrootlocalhost rootfs# ls ./lib/modules2.6.32.2  2.6.32.2-FriendlyARMrootlocalhost rootfs# ls ./lib/modules/2.6.32.2build           modules.dep          modules.ofmap     modules.symbolskernel          modules.ieee1394map  modules.order     modules.usbmapmodules.alias   modules.inputmap     modules.pcimap    sourcemodules.ccwmap  modules.isapnpmap    modules.seriomaprootlocalhost rootfs# ls ./lib/modules/2.6.32.2/kernelcrypto  drivers  fs  lib  net  soundrootlocalhost rootfs# 上面的目录中有make modules_install安装的模块。【5】建立动态链接库这里的动态链接库直接用友善之臂的,可以从其官方光盘映像/linux目录下rootfs_qtopia_qt4-20110304.tar.gz,先解压友善之臂的根文件包:rootlocalhost myrootfs# cd ./rootlocalhost linux-test# lsbusybox-1.13.3-mini2440.tgz  linux-2.6.39  rootfs_qtopia_qt4-20110304.tar.gzlinux-2.6.32.2          myrootfs      yaffs2rootlocalhost linux-test# tar -zxf rootfs_qtopia_qt4-20110304.tar.gz -C ./rootlocalhost linux-test# lsbusybox-1.13.3-mini2440.tgz  linux-2.6.39  rootfs_qtopia_qt4                  yaffs2linux-2.6.32.2          myrootfs      rootfs_qtopia_qt4-20110304.tar.gzrootlocalhost linux-test# 拷贝其lib 的内容到新建的根文件目录lib 内:rootlocalhost linux-test# cp -rfd ./rootfs_qtopia_qt4/lib/* ./myrootfs/rootfs/lib/rootlocalhost linux-test# 还有一种做法:对于"lib"目录:这个里面放的都是库文件,直接从交叉编译器的库文件目录中拷贝过来: #cp -f /usr/local/arm/4.4.3/arm-none-linux-gneabi/libc/armv4t/lib/*so* lib/ -a【5】交叉编译BosyboxBosybox 是一个遵循GPL v2 协议的开源项目,它在编写过程总对文件大小进行优化,并考虑了系统资源有限(比如内存等)的情况,使用Busybox 可以自动生成根文件系统所需的bin、sbin、usr 目录和linuxrc 文件。(1)解压busyboxrootlocalhost linux-test# lsbusybox-1.13.3-mini2440.tgz linux-2.6.39  rootfs_qtopia_qt4                  yaffs2linux-2.6.32.2          myrootfs      rootfs_qtopia_qt4-20110304.tar.gzrootlocalhost linux-test# tar -zxf busybox-1.13.3-mini2440.tgz rootlocalhost linux-test# lsbusybox-1.13.3          linux-2.6.39       rootfs_qtopia_qt4-20110304.tar.gzbusybox-1.13.3-mini2440.tgz    myrootfs           yaffs2linux-2.6.32.2          rootfs_qtopia_qt4rootlocalhost linux-test# (2)进入busybox的顶层目录,修改Makefilerootlocalhost linux-test# cd busybox-1.13.3rootlocalhost busybox-1.13.3# gedit Makefile在gedit打开的Makefile中,定位到164行附近,修改如下:# Note: Some architectures assign CROSS_COMPILE in their arch/*/MakefileCROSS_COMPILE ?= arm-linux-# bbox: we may have CONFIG_CROSS_COMPILER_PREFIX in .config,# and it has not been incl? yet. thus using an awkward syntax. .定位到189行附近,修改如下:ARCH ?= arm# Architecture as present in compile.hUTS_MACHINE := $(ARCH)然后保存。(3)配置busybox在busybox顶层目录下执行make menconfig 进行配置rootlocalhost busybox-1.13.3# make menconfig出现如下图配置菜单 下面只列出了要注意的地方,没有列出的默认即可。  <1>、Busybox Settings->    Build Options->* Build BusyBox as a static binary (no shared libs)                  Force NOMMU build                                                  * Build with Large File Support (for accessing files > 2 GB)       (arm-linux-) Cross Compiler prefix   /指定编译前缀,按回车就可进行修改    Installation Options  -> * Don't use /usr      /选中该项可以避免buysbox被安装到宿主机系统的/usr目录下,破坏宿主机系统。     Applets links (as soft-links)  -> (/root/linux-test/myrootfs/rootfs) BusyBox installation prefix   /这里需要指定busybox的安装路径,按回车即可输入。    Busybox Library Tuning ->* Support for /etc/networks   * Command line editing  (1024) Maximum length of input  * vi-style line editing commands(15)  History size          *   History saving             *   Tab completion     *     Username completion      *   Fancy shell prompts <2>Linux Module Utilities->(/lib/modules)Default directory containing modules(modules.dep)Default name of modules.dep下面是在busybox 中配置对dev 下设备类型的支持,dev 的创建有手动创建、使用devfs 文件系统创建和?v创建三种方法,而?v的一个简化版是busybox 自带的mdev ,适合于嵌入式的应用埸合。其具有使用简单的特点。它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程序所需的节点文件。在以busybox 为基础构建嵌入式linux 的根文件系统时,使用它是最优的选择。<3>Linux System Utilities ->*Support /etc/mdev.conf*Support command execution at device addition/removal<4>Init Utilities ->“Support reading an inittab file”应该选中,这样可以根据自己编写的inittab文件初始化;“Support running commands with a controlling-tty”应该选中,否则会提示非常困扰的“/bin/sh: can't access tty; job control turned off”的提示,尽管可以进入控制台命令行。(4)编译busybox编译busybox 到指定目录,在busybox-1.13.3的根目录下执行make CONFIG_PREFIX=/root/linux-test/myrootfs/rootfs install在rootfs 目录下会生成目录bin、sbin、usr 和文件linuxrc 的内容。rootlocalhost busybox-1.13.3# make CONFIG_PREFIX=/root/linux-test/myrootfs/rootfs install. .-You will probably need to make your busybox binarysetuid root to ensure all configured applets willwork properly.-rootlocalhost busybox-1.13.3# rootlocalhost busybox-1.13.3# ls ./myrootfs/rootfsbin   dev  home  linuxrc  proc  sbin  tmp  varboot  etc  lib   mnt      root  sys   usr  wwwrootlocalhost busybox-1.13.3# 【6】建立etc 目录下的配置文件(1) 建立/etc/group系统用户组配置文件,内容如下:root:*:0:daemon:*:1:bin:*:2:sys:*:3:adm:*:4:tty:*:5:disk:*:6:lp:*:7:lpmail:*:8:news:*:9:u p:*:10:proxy:*:13:kmem:*:15:dialout:*:20:fax:*:21:voice:*:22:cdrom:*:24:floppy:*:25:tape:*:26:s o:*:27:a io:*:29:ppp:x:99:500:x:500:plg501:x:501:fa(2)建立passwd系统密码文件,内容如下: root:0:0:root:/:/bin/shftp:14:50:FTP User:/var/ftp:bin:*:1:1:bin:/bin:daemon:*:2:2:daemon:/sbin:nobody:*:99:99:Nobody:/:sky:502:502:Linux User,:/home/sky:/bin/shrootlocalhost rootfs# ls ./etcgroup  init.d  passwd  rc.d   sysconfigrootlocalhost rootfs# (3) 在etc/sysconfig 目录下新建主机文件名HOSTNAME,内容为"mini2440"。rootlocalhost rootfs# cat >>./etc/sysconfig/HOSTNAMEmini2440rootlocalhost rootfs# 当录入完文件内容“mini2440”并回车后需要按下Ctrl+C组合键结束录入状态。此时该文件内容为:“mini2440",这句话就是我们在文件系统里面看到那个“root mini2440 /”。(4)新建etc/inittab 系统init进程配置文件,将下面内容复制并粘贴其中:#etc/inittab:sysinit:/etc/init.d/rcSconsole:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a r要记住赋予其可执行属性rootlocalhost rootfs# chmod a+x ./etc/inittab(5)新建etc/init.d/rcS系统启动加载项文件,将下面内容复制并粘贴其中:#!/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binrunlevel=S /运行的级别prevlevel=Numask 022  /文件夹的掩码export PATH runlevel prevlevelecho "-munt all-"mount -a  /挂载/etc/fstab/文件指定的所有的文件系统echo /sbin/mdev>/proc/sys/kernel/hotplugmdev -secho "*"echo "*booting to mini2440 *"echo "Kernel version:linux-2.6.32.2"echo "the fans:singleboy"echo "Date:2011.5.30"echo "*"/bin/hostname -F /etc/sysconfig/HOSTNAME然后使用以下命令改变 rcS 的执行权限:Chmod +x rcSrootlocalhost rootfs# chmod +x ./etc/init.d/rcSrootlocalhost rootfs# (6)新建etc/fstab 系统挂载文件系统列表文件,将下面内容复制并粘贴其中:#device mount-point  type       option      dump  fsck  orderproc      /proc             proc      defaults        0      0none     /tmp              ramfs     defaults       0       0sysfs     /sys              sysfs      defaults        0      0mdev    /dev              ramfs     defaults        0       0(7)新建etc/profile用户环境配置文件,将下面内容复制并粘贴其中:#Ash profile#vim:syntax=sh#No core file by defaults#ulimit -S -c 0>/dev/null 2>&1USER="id -un"LOGNAME=$USERPS1='uh W$'PATH=$PATHHOSTNAME='/bin/hostname'export USER LOGNAME PS1 PATH修改环境变量PS1(命令行提示符),可以使用vi编辑/etc/profile文件,在最后加上: export PS1='uh W$ ' 即可,其中u显示当前用户账号,h显示当前主机名,W显示当前路径,$显示'$'符号 W 代替 w 就可以实现绝对路径到相对路径的转换 下面简单说说环境下默认的特殊符号所代表的意义: d :代表日期,格式为weekday month date,例如:"Mon Aug 1" H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略 t :显示时间为24小时格式,如:HH:MM:SS T :显示时间为12小时格式 A :显示时间为24小时格式:HH:MM u :当前用户的账号名称 v :BASH的版本信息 w :完整的工作目录名称。家目录会以 代替 W :利用basename取得工作目录名称,所以只会列出最后一个目录 # :下达的第几个命令 $ :提示字符,如果是root时,提示符为:# ,普通用户则为:$(8) 建立etc/mdev.conf (mdev设备配置文件)、 net.conf (网络配置文件件),mime.types: MIME(Multipurpose Internet Mail Extensions) 内容均为空。rootlocalhost rootfs# touch./etc/mdev.conf rootlocalhost rootfs# touch ./etc/net.confrootlocalhost rootfs# touch ./etc/mine.types(9)建立boa WEB服务器文件配置文件在etc/boa目录,并在boa目录中建立boa.conf文件,内容为空。rootlocalhost rootfs# mkdir ./etc/boarootlocalhost rootfs# touch ./etc/boa/boa.confrootlocalhost rootfs# (10)先建立etc/rc.d/init.d目录rootlocalhost rootfs# mkdir ./etc/rc.d/init.d然后建立etc/rc.d/init.d/httpd文件rootlocalhost rootfs# gedit ./etc/rc.d/init.d/httpdrootlocalhost rootfs# 将下面内容复制并粘贴:#!/bin/shbase=boa# See how we were called.case "$1" in  start)        /usr/sbin/$base        ;  stop)    pid=/bin/pidof $base    if -n "$pid" ; then        kill -9 $pid    fi        ;esacexit 0(11)新建etc/resolv.conf,DNS配置文件,存放访问外网时需要DNS 的信息,内容如下:nameserver 61.144.56.100 (12)在/home/sky目录,与etc目录passwd文件中的sky相对应rootlocalhost rootfs# mkdir ./home/skyrootlocalhost rootfs# 3.2,根文件系统测试将制作的文件系统通过下面三种方法测试【1】将nfs文件系统作为根文件系统进行测试(1) 将制作好的根文件系统rootfs复制到/nfsboot目录下作为mini2440的根文件系统rootlocalhost myrootfs# cp -drf ./rootfs /nfsboot/rootlocalhost myrootfs#  cd /nfsbootrootlocalhost nfsboot# 复制时需要加上drf参数,d表示文件的链接关系不变。r表示递归复制此目录下所有的子目录和文件。(2)确保rootfs目录可读写rootlocalhost nfsboot# ls -l总计 63216drwxr-xr-x 17 root root     4096 06-01 07:14rootfs-rwxrw-rw-  1 root root 58487616 2009-07-18 root_qtopia-128M.img-rw-r-r-  1 root root  2114212 05-27 11:45 uImagerootlocalhost nfsboot#  进入到内核目录下,执行:rootlocalhost myrootfs# cd ./linux-2.6.32.2rootlocalhost linux-2.6.32.2# gedit .config在打开的配置文件中在命令模式下:/CMD,会自动定位到340行,对照上面CONFIG_CMDLINE参数修改成如下:# Boot options#CONFIG_ZBOOT_ROM_TEXT=0CONFIG_ZBOOT_ROM_BSS=0CONFIG_CMDLINE="root=/dev/nfs rw nfsroot=192.168.1.111(虚拟机IP):/nfsboot/rootfs ip=192.168.1.230(开发板IP) console=ttySAC0 mem=64M"# CONFIG_XIP_KERNEL is not setCONFIG_KEXEC=yCONFIG_ATAGS_PROC=y在内核目录下命令终端中执行rootlocalhost linux-2.6.32.2# make men onfig在打开的配置菜单-> Boot options ->回车可以看到刚才的修改结果,如下图: 当然上图高亮的菜单选项上按回车也可以进行修改,但没有在vim编辑器中修改方便。(5)确保内核提供nfs boot支持在刚才的配置菜单中定位到       Device Drivers  ->      <*> Memory Technology Device (MTD) support  ->    <*>   Caching block device access to MTD devices      * Network device support  ->       *   Ethernet (10 or 100Mbit)  ->        <*>   DM9000 support      File systems  ->     * Network File Systems  ->      - Network File Systems                                        <*>   NFS client support                                               *     NFS client support for NFS version 3                           *       NFS client support for the NFSv3 ACL protocol extension      *     NFS client support for NFS version 4 (EXPERIMENTAL)                   NFS client support for NFSv4.1 (DEVELOPER ONLY)              *     Root file system on NFS                                       < >   NFS server support  要确保上面蓝色高亮部分的选项被选上。(6)重新编译内核,将生成的zImage【2】将制作根文件系统编译进内核,并制作成initramfs文件系统 现在基于Linux的发行版通常采用initramfs代替initrd,架构更简单,应用也更灵活一些,不需要创建内存设备块,能根据文件的大小自动申请或释放内存。(1) 配置linux内核,支持initramfs在命令终端的linux-2.6.32.2内核目录下rootlocalhost # cd linux-test/linux-2.6.32.2然后执行rootlocalhost linux-2.6.32.2# make menconfigGeneral setup  -> * Initial RAM filesystem and RAM disk (initramfs/initrd) suppor(/root/linux-test/myrootfs/rootfs) Initramfs source file(s)/填写你要制作成initramfs格式的根文件系统目录。原因很简单,我们使用的是initramfs,而不是ramdisk,所以不用配置ramdisk的驱动支持项Device Drivers->Block devices->RAM block device support 项。相应的之后的(4096)Default RAM disk size kbytes等相关默认配置选项就不会再出现了。另外initramfs技术和ramdisk技术的另一个重要的区别就是initramfs并不是在内存中模拟出一个磁盘,所以也就不在需要ramdisk中所需的ext2驱动支持。所以,File systems菜单下的ext2文件系统支持< > Second extended fs support选项就可以取消了。(2) 进入制作好的根文件系统rootfsrootlocalhost linux-2.6.32.2# cd ./myrootfs/rootfsrootlocalhost rootfs# 因为initramfs根文件系统启动时执行的第一个程序是init,而不是linuxrc,所以在此,我们制作的根文件系统需要添加一个init文件,相应的linuxrc文件就不再需要了。于是执行rootlocalhost rootfs# ln -s ./bin/busybox init这样就为busybox创建了一个软链接init,这个文件就是我们要创建的init文件。(3)修改内核的命令行参数rootlocalhost rootfs

    注意事项

    本文([计算机软件及应用]10-Linux.doc)为本站会员(音乐台)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开