文档详情

嵌入式系统第六讲之二 eLinux系统构建与启动分析.ppt

发布:2017-06-19约1.13万字共91页下载文档
文本预览下载声明
内核启动第1阶段 流程 内核启动第1阶段 源代码 内核启动第一阶段源代码位于: linux/arch/arm/kernle/head-armv.S 内核启动第2阶段 从C代码文件linux/init/main.c中的start_kernel函数处开始执行, …… 直到调用kernelthread()产生init线程(位于linux/init/main.c),完成KERNEL的启动过程。 内核启动第2阶段 系统首先完成一些相关的初始化工作: lock_kernel(); printk(linux_banner); //打印LINUX版本信息等。 setup_arch(command_line);//处理器相关的初始化过程 printk(Kernel command line: %s\n, saved_command_line); parse_options(command_line); //解析BootLoader传递过来的内核参数 trap_init();//设置陷阱门和中断门 内核启动第2阶段 init_IRQ();//初始化系统IRQ sched_init(); //进程调度机制的初始化 ……. console_init(); //控制台设备的初始化 fork_init(mempages);// 根据系统物理内存的大小计算运行创建线程(包括进程)的数量。 …… 内核启动第2阶段 最后,在rest_init()中调用kernel_thread()产生产生第一个核心线程init(位于linux/init/main.c),然后调用cpu_idle(),等待系统调度init线程,从而完成KERNEL的启动过程。 内核启动第2阶段 — init()函数 init()函数主要完成如下工作: do_basic_setup():完成外设及其驱动程序的加载和初始化。 prepare_namespace:为系统准备好命名空间,并挂载根文件系统。 execve():在/sbin、/etc、/bin目录下查找init程序并执行。 内核启动第2阶段 源代码 内核启动第二阶段源代码位于: linux/init/main.c 内核启动第3阶段 内核启动第二阶段完成后,一般会在/sbin、/etc、/bin等目录下查找init程序并执行,init的执行过程如下: init从配置文件/etc/inittab中获取所有信息; /etc/inittab中会定义一个启动教本,如sysinit、rc、rcS等; PXA270开发系统中启动运行脚本文件/etc/rc.d/rc.sysinit,将完成驱动模块的动态加载、配置网络等工作。 3 根文件系统 根文件系统的基本结构 由于多数嵌入式系统并不需要多用户支持,因此嵌入式Linux的根文件系统通常要比普通Linux的目录树精简得多。 一般来说,目录/bin, /dev, /etc, /lib, /proc, /sbin, 和 /usr等顶层目录都是不可缺省少的 根文件系统的基本结构 /bin:必要的用户命令(二进制文件); /dev:设备文件和其他特殊文件; /etc:系统配置文件,包括启动文件; /lib:必要的链接库,例如C链接库、内核模块等; /proc:用来提供内核与进程信息的虚拟文件系统; /sbin:必要的系统管理员命令(二进制); /usr:在第二层目录中包含对大多数用户都有用的大量应用程序和文件。 根文件系统的基本结构 一般来说,目录/boot, /home, /mnt, /opt, /root, /tmp, /var等顶层目录则是可以选择的 根文件系统的基本结构 /boot:引导加载程序使用的静态文件,如内核镜像; /home:用户主目录,包括供FTP等服务使用的主目录; /mnt:安装点,用于暂时安装文件系统; /opt:附加的软件套件; /root:root用户的主目录; /tmp:暂时性的文件; /var:监控程序和工具程序所存放的可变数据。 构建根文件系统框架—目录 创建顶层目录 $ cd ${PRJROOT}/rootfs $ mkdir bin dev etc lib proc sbin tmp usr var $ chmod 1777 tmp 然后,可以建立/usr的目录结构 $mkdir usr/bin usr/lib usr/sbin 最后,还可以建立/var的目录结构: $ mkdir var/lib var/lock var/log var/run var/tmp $ chmod 1777 var/tmp 构建根文件系统 内核模块 在编译ARM-Linux内核镜像时,可能会有一部分以核心可加载模块的形式编译为
显示全部
相似文档