详解嵌入式linux启动信息

合集下载

Linux终端中的系统启动和关机命令

Linux终端中的系统启动和关机命令

Linux终端中的系统启动和关机命令Linux作为一个开源的操作系统,具有强大的灵活性和自定义性。

在Linux终端中,我们可以使用一些命令来控制系统的启动和关机。

本文将详细介绍一些常用的系统启动和关机命令,并探讨它们的功能和使用方法。

一、系统启动命令1. rebootreboot命令用于重新启动系统。

在终端中输入reboot后,系统将会立即重启。

这个命令非常有用,尤其是在需要迅速重启系统的情况下,如在安装软件或更新内核后。

2. shutdownshutdown命令用于正常关机系统。

默认情况下,输入shutdown命令后系统将在一分钟后执行关机操作。

如果需要设置关机时间,可以使用“shutdown -h now”命令来立即关机,或者使用“shutdown -h +分钟数”命令来设置延迟关机的时间。

除了关机命令,shutdown还可以用于重启系统。

例如,使用“shutdown -r now”命令将会立即重启系统。

3. initinit命令是Linux系统的初始化命令,用于切换系统的运行级别。

运行级别是电脑中一种特定的工作状态,对应着一组特定的功能服务。

Linux系统共有七个运行级别,分别是0-6。

其中,0表示关机,6表示重启。

要切换运行级别,可以使用“init 数字”命令进行操作。

例如,“init 3”将将系统切换到文本模式,而“init 5”则进入图形模式。

二、系统关机命令1. halthalt命令用于立即关机系统。

它会发送一个信号给内核,告诉系统立即关闭。

输入“halt”命令后,系统将会停止所有进程并关机。

2. poweroffpoweroff命令用于正常关机系统。

它会先发送一个信号给所有运行的进程,告诉它们系统即将关机。

这个命令会在关机前允许进程的保存和关闭操作,确保数据的完整性。

3. init在上一节中我们已经介绍了init命令的用途。

当我们使用“init 0”或“init 6”命令时,系统将会执行关机或重启操作。

嵌入式linux系统的启动流程

嵌入式linux系统的启动流程

嵌入式linux系统的启动流程
嵌入式Linux系统的启动流程一般包括以下几个步骤:
1.硬件初始化:首先会对硬件进行初始化,例如设置时钟、中
断控制等。

这一步骤通常是由硬件自身进行初始化,也受到系统的BIOS或Bootloader的控制。

2.Bootloader引导:接下来,系统会从存储介质(如闪存、SD
卡等)的Bootloader区域读取引导程序。

Bootloader是一段程序,可以从存储介质中加载内核镜像和根文件系统,它负责进行硬件初始化、进行引导选项的选择,以及加载内核到内存中。

3.Linux内核加载:Bootloader会将内核镜像从存储介质中加载到系统内存中。

内核镜像是包含操作系统核心的一个二进制文件,它由开发者编译并与设备硬件特定的驱动程序进行连接。

4.内核初始化:一旦内核被加载到内存中,系统会进入内核初
始化阶段。

在这个阶段,内核会初始化设备驱动程序、文件系统、网络协议栈等系统核心。

5.启动用户空间:在内核初始化完毕后,系统将启动第一个用
户空间进程(init进程)。

init进程会读取并解析配置文件(如
/etc/inittab)来决定如何启动其他系统服务和应用程序。

6.启动其他系统服务和应用程序:在用户空间启动后,init进
程会根据配置文件启动其他系统服务和应用程序。

这些服务和应用程序通常运行在用户空间,提供各种功能和服务。

以上是嵌入式Linux系统的基本启动流程,不同的嵌入式系统可能会有一些差异。

同时,一些特定的系统也可以添加其他的启动流程步骤,如初始化设备树、加载设备固件文件等。

arm版本linux系统的启动流程

arm版本linux系统的启动流程

arm版本linux系统的启动流程ARM架构是一种常见的处理器架构,被广泛应用于嵌入式设备和移动设备中。

在ARM版本的Linux系统中,启动流程是非常重要的,它决定了系统如何从开机到正常运行。

本文将详细介绍ARM版本Linux系统的启动流程。

一、引导加载程序(Bootloader)引导加载程序是系统启动的第一阶段,它位于系统的固化存储器中,比如ROM或Flash。

在ARM版本的Linux系统中,常用的引导加载程序有U-Boot和GRUB等。

引导加载程序的主要功能是加载内核镜像到内存中,并将控制权转交给内核。

二、内核初始化引导加载程序将内核镜像加载到内存后,控制权被转交给内核。

内核初始化是系统启动的第二阶段,它主要完成以下几个步骤:1. 设置异常向量表:ARM架构中,异常是指硬件产生的中断或故障,比如系统调用、中断请求等。

内核需要设置异常向量表,以便正确处理异常。

2. 初始化处理器:内核对处理器进行初始化,包括设置页表、启用缓存、初始化中断控制器等。

3. 启动第一个进程:内核创建第一个用户进程(一般是init进程),并将控制权转交给它。

init进程是系统中所有其他进程的父进程,负责系统的初始化工作。

三、设备树(Device Tree)设备树是ARM版本Linux系统中的一种机制,用于描述硬件设备的相关信息。

在内核初始化过程中,内核会解析设备树,并建立设备树对象,以便后续的设备驱动程序使用。

设备树描述了硬件设备的类型、地址、中断等信息,以及设备之间的连接关系。

它使得内核能够在运行时自动识别和配置硬件设备,大大提高了系统的可移植性和灵活性。

四、启动初始化(Init)启动初始化是系统启动的第三阶段,它是用户空间的第一个进程(init进程)接管系统控制权后的操作。

启动初始化主要完成以下几个任务:1. 挂载根文件系统:启动初始化会挂载根文件系统,使得用户可以访问文件系统中的文件和目录。

2. 加载系统服务:启动初始化会加载并启动系统服务,比如网络服务、日志服务、时间同步服务等。

petalinux-build_-c_u-boot的编译流程_概述说明

petalinux-build_-c_u-boot的编译流程_概述说明

petalinux-build -c u-boot的编译流程概述说明1. 引言1.1 概述本文旨在介绍petalinux-build -c u-boot命令的编译流程。

Petalinux是一款面向嵌入式Linux开发的工具,而U-Boot是一款应用于嵌入式系统的开源引导加载程序。

通过深入了解这两个工具,并对petalinux-build -c u-boot命令进行详细分析,我们可以更好地理解和掌握其编译流程。

1.2 文章结构本文主要分为五个部分:引言、编译流程概述、编译流程详解、注意事项和常见问题解答以及结论。

在引言中,我们将简要介绍文章的内容和目的。

接下来,在第二部分中,我们将概述Petalinux和U-Boot,并重点介绍petalinux-build -c u-boot命令的作用。

第三部分将详细解释编译流程,并包括准备工作、设置环境变量和构建U-Boot镜像等步骤。

在第四部分,我们将讨论常见错误和解决方法,提供编译优化技巧和建议,并指出其他注意事项。

最后,在结论部分,我们将对编译流程进行总结,并展望未来发展。

1.3 目的本文旨在帮助读者全面了解petalinux-build -c u-boot命令的编译流程。

通过讲解Petalinux和U-Boot的基本知识以及具体的编译步骤,读者可以深入了解如何正确地使用该命令,并解决在编译过程中可能遇到的问题。

同时,本文还将提供一些实用的编译优化技巧和建议,以帮助读者提高工作效率。

希望通过本文的阅读,读者能够更好地掌握petalinux-build -c u-boot命令的使用技巧,并在嵌入式Linux开发中取得更好的成果。

2. 编译流程概述:2.1 Petalinux简介:Petalinux是由Xilinx开发的一种嵌入式Linux开发工具套件,用于构建、定制和部署基于Xilinx处理器系统的嵌入式Linux系统。

它提供了一系列工具和文档,方便开发人员进行Linux镜像的配置、编译和调试。

嵌入式linux开发之EzEmbedded

嵌入式linux开发之EzEmbedded

嵌入式Linux应用开发十分钟入门[介绍]嵌入式linux开发因其门槛高,初学者要想快速入门上手有相当难度,从而导致很多初学者半途而废。

本文介绍了基于Eclipse的在MS Windows环境下运行的嵌入式linux集成开发环境EzEmbedded。

有了它快速入门嵌入式linux开发并上手就成为可能!嵌入式linux应用开发为什么门槛高▲开发环境搭建难需要熟练使用发行版的linux系统,并在此上搭建开发环境。

▲开发过程繁琐需要熟练使用Vi等命令行编辑工具编辑代码、makefile。

▲程序下载调试复杂目前最常用的方式是在目标板上运行nfs服务器,在开发主机上将编译好的可执行文件挂载到目标板上,进行调试,并且调试要么采用printf方式,要么采用命令行的GDB,这种调试下载过程难于搭建和操作,开发效率低下。

▲需要买一块开发板虽然目前嵌入式Linux开发板价格已经很便宜了,但这个开销却不能省略。

对学生朋友这也是考虑因素之一。

综上所述,传统方式学习嵌入式Linux的门槛还真的不低,要求学习者要成为一个linux 系统的专家,从而导致很多初学者不能如愿。

EzEmbedded有什么特点▲EzEmbedded是一个专业级的图形界面的集成开发环境,工程创建、代码编写、编译、下载调试都在图形界面上进行,动动鼠标绝大部分工作就可以轻松完成。

除了工程创建过程的配置和下载调试的配置外,整个开发过程与VS开发本地程序或keil开发单片机程序非常类似。

▲在windows环境下运行,初学者只需要会10个左右的linux命令,其他操作基本上由鼠标就可以完成。

▲EzEmbedded是一个完整的开发环境,不需要其他依赖。

这一点与Eclipse不一样,只要安装了EzEmbedded,开发嵌入式linux的所有工具和组件都已经具备了。

▲EzEmbedded本身带有一个ARM9虚拟开发板,在安装好EzEmbedded后,就可以用鼠标开启开发板,并以之作为目标板进行程序运行和调试。

嵌入式 Linux 启动时间优化

嵌入式 Linux 启动时间优化

嵌入式Linux 启动时间优化1 简介本章包含的话题有启动时间的测量、分析、人因工程(human factors)、初始化技术和优化技巧等。

产品花在启动方面的时间直接影响终端用户对该产品的第一印象。

一个消费电子设备不管如何引人注目或者设计得怎么好,设备从关机状态到可交互的使用状态所需的时间对于获得正面的用户体验尤为关键。

案例#1 就是在关机状态从头启动一个设备的例子。

启动一个设备涉及到许多步骤和一系列的事件。

为了使用前后一致的术语,消费电子Linux 论坛(CE Linux Forum)的启动时间优化工作组起草了一个术语词汇表,该表包括了相关术语在该领域内通用的定义。

该词汇表如下:启动时间相关的词汇表2 技术/项目主页下面主要介绍与减少Linux 启动时间有关的各种技术。

有一部分描述了 上可以下载的本地补丁,而其余部分则介绍了在其他地方维护的项目或者补丁。

2.1 测量启动时间Printk Times –用于显示每个printk 的执行时间内核函数跟踪(Ftrace)–用于报告内核中每个函数的调用时间Linux 跟踪工具箱(LTT)–用于报告确切的内核和进程事件的时间数据Oprofile(译注:最新替代品是perf)–通用的Linux 分析器(Profile)Bootchart –用于Linux 启动过程的性能分析和数据展示。

收集启动过程中的用户空间部分的资源使用情况和进程信息,然后渲染成PNG、SVG 或者EPS 格式的图表。

Bootprobe –一组用于分析系统启动过程的System Tap 脚本当然,别忘了cat /proc/uptime (译注:统计系统已经运行的时间)grabserial –Tim Bird (译注:CE Linux Forum 主席)写的一个非常赞的工具用于记录控制台输出并打上时间戳进程跟踪–同样是Tim Bird 写的一个简单补丁,用于记录exec、fork 和exit 系统调用。

嵌入式中busybox启动基本流程

嵌入式中busybox启动基本流程

一、BusyBoxBusyBox 是标准Linux 工具的一个单个可执行实现。

BusyBox 包含了一些简单的工具,例如cat 和echo,还包含了一些更大、更复杂的工具,例如grep、find、mount 以及telnet。

有些人将BusyBox 称为Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux 的许多工具和命令。

嵌入式根目录下的bin、sbin和usr目录以及linuxrc通常就是BusyBox。

在构建嵌入式linux的根文件系统的时候,会根据目标平台配置BusyBox源码,编译生成这三个目录和一个文件。

根目录下的目录和文件需要自行建立或者从BusyBox的example中拷贝修改。

二、嵌入式中的BusyBox的启动流程脚本执行顺序如下:/sbin/init -> /etc/inittab -> /etc/init.d/rcS1、在kernel/init/main.c的init函数中有代码if (execute_command)execve(execute_command,argv_init,envp_init);execve("/sbin/init",argv_init,envp_init);bootloader会给内核的main函数init=/linuxrc 这个参数,于是就有了execute_command = "/linuxrc",busybox中_install目录下的linuxrc 是busybox的一个软链接,指向/bin/busybox,而/sbin/init也是/bin/busybox的符号链接,因此这个linuxrc基本没什么用处,我们不要这个linuxrc脚本可以直接通过/sbin/init执行busybox的初始化,或者重写linuxrc,添加自己的一些初始化的东西。

嵌入式Linux必学文件处理命令

嵌入式Linux必学文件处理命令

嵌入式Linux必学文件处理命令嵌入式Linux必学文件处理指令Linux系统信息存放在文件里,文件与一般的公务文件类似。

每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。

以下是我整理的嵌入式Linux 必学文件处理指令,期望大家认真阅读!file——1.作用file通过探测文件内容推断文件类型,使用权限是全部用户。

2.格式file[options]文件名3.[options]主要参数-v:在标准输出后显示版本信息,并且退出。

-z:探测压缩过的文件类型。

-L:允许符合连接。

-fname:从文件namefile中读取要分析的文件名列表。

4.简洁说明使用file指令可以知道某个文件到底是二进制(ELF格式)的可执行文件,还是Shell Script文件,或者是其它的什么格式。

file能识别的文件类型知名目、Shell脚本、英文文本、二进制可执行文件、C 语言源文件、文本文件、DOS的可执行文件。

5.应用实例假设我们看到一个没有后缀的文件grap,可以使用下面指令: $ file grapgrap:English text此时系统显示这是一个英文文本文件。

需要说明的是,file指令不能探测包括图形、音频、视频等多媒体文件类型。

mkdir——1.作用mkdir指令的作用是建立名称为dirname的子名目,与MS DOS下的md指令类似,它的使用权限是全部用户。

2.格式mkdir[options]名目名3.[options]主要参数-m,--mode=模式:设定权限模式;,与chmod类似。

-p,--parents:需要时创立上层名目;假设名目早已存在,那么不当作错误。

-v,--verbose:每次创立新名目都显示信息。

--version:显示版本信息后离开。

4.应用实例在进展名目创立时可以设置名目的权限,此时使用的参数是“-m〞。

假设要创立的名目名是“tsk〞,让全部用户都有rwx(即读、写、执行的权限),那么可以使用以下指令:$mkdir-m 777 tskgrep——1.作用grep指令可以指定文件中搜寻特定的内容,并将含有这些内容的行标准输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

详解嵌入式linux启动信息(推荐)作者:佚名来源:不详发布时间:2006-10-27 8:12:31 发布人:zangyl摘要我们在这里讨论的是对嵌入式linux系统的启动过程的输出信息的注释,通过我们的讨论,大家会对嵌入式linux启动过程中出现的、以前感觉熟悉的、但却又似是而非的东西有一个确切的了解,并且能了解到这些输出信息的来龙去脉。

嵌入式linux的启动信息是一个很值得我们去好好研究的东西,它能将一幅缩影图呈现在我们面前,来指导我们更加深入地理解linux内核。

关键字:linux,嵌入式,启动,bootloader正文作为一名嵌入系统开发者,你一定遇到过下面的情景:在某论坛上看到一篇帖子,上面贴着嵌入式linux开发板启动时的有关信息,然后大家在帖子里讨论着这个启动过程中出现的问题,随机举例如下:Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.320010315 (release)(ColdFire patches - 20010318 from http://f/(uClinux XIP and shared lib patches from /)) #20 三6月 18 00:58:31 CST 2003Processor: Samsung S3C4510B revision 6Architecture: SNDS100On node 0 totalpages: 4096zone(0): 0 pages.zone(1): 4096 pages.zone(2): 0 pages.Kernel command line: root=/dev/rom0Calibrating delay loop... 49.76 BogoMIPSMemory: 16MB = 16MB totalMemory: 14348KB available (1615K code, 156K data, 40K init)Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)Inode cache hash table entries: 1024 (order: 1,Mount-cache hash table entries: 512 (order: 0, 4096 bytes)Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)Page-cache hash table entries: 4096 (order: 2, 16384 bytes)POSIX conformance testing by UNIFIXLinux NET4.0 for Linux 2.4Based upon Swansea University Computer Society NET3.039Initializing RT netlink socketStarting kswapdSamsung S3C4510 Serial driver version 0.9 (2001-12-27) with no serial options en abledttyS00 at 0x3ffd000 (irq = 5) is a S3C4510BttyS01 at 0x3ffe000 (irq = 7) is a S3C451Blkmem copyright 1998,1999 D. Jeff DionneBlkmem copyright 1998 Kenneth AlbanowskiBlkmem 1 disk images:0: BE558-1A5D57 [VIRTUAL BE558-1A5D57] (RO)RAMDISK driver initialized: 16 RAM disks of 1024K size 1024 blocksizeSamsung S3C4510 Ethernet driver version 0.1 (2002-02-20) <mac@.tw>eth0: 00:40:95:36:35:34NET4: Linux TCP/IP 1.0 for NET4.0IP Protocols: ICMP, UDP, TCPIP: routing cache hash table of 512 buckets, 4KbytesTCP: Hash tables configured (established 1024 bind 1024)VFS: Mounted root (romfsFreeing init memory: 40K上面的这些输出信息,也可能包括你自己正在做的嵌入式linux开发板的输出信息,其中的每一行,每一个字的含义,你是否深究过,或者说大部分的含义你能确切地知道的?本人想在这里结合本人在实践中一些体会来和广大嵌入式linux的开发者一起读懂这些信息。

我们在这里将以一个真实的嵌入式linux系统的启动过程为例,来分析这些输出信息。

启动信息的原始内容将用标记标出,以区别与注释。

嵌入式linux的启动主要分为两个阶段:①第一部分bootloader启动阶段②第二部分linux 内核初始化和启动阶段第一节:start_kernel第二节:用户模式( user_mode )开始,start_kernel结束第三节:加载linux内核完毕,转入cpu_idle进程第一部分 : bootloader启动Boot loader v0.12NOTE: this boot loader is designed to boot kernels made with the2.4.xx releasesbootloader for XVBuilt at Nov 20 2005 10:12:35Bootloader头信息,版本,编译时间等,这个因不同的bootloader的设计而有所不同,由此你能看出bootloader的版本信息,有很多使用的是通用的bootloader,如u-boot,redboot等。

Loaded to 0x90060000将bootloader加载到内存ram中的0x90060000处,即将bootloader加载到内存的高端地址处。

Linux内核将被bootloader加载到0x90090000处。

Found boot configuration查找到了启动boot的配置信息Booted from parallel flash从flash中启动代码,此处的flash为并行闪存。

Flash的分类列举如下:闪存分三类:并行,串行,不可擦除。

①并行Parallel flash ,Intel于1988年发明.随机读取的速度比较快,随机按字节写,每次可以传NOR Flash输8Bit。

一般适合应用于数据/程序的存贮应用中.NOR还可以片内执行(execute-in-place)X IP.写入和擦除速度很低。

 ,1989年,东芝公司发明.是以块和页为单位来读写的,不能随机访问某个NAND Flash指定的点.因而相对来说读取速度较慢,而擦除和写入的速度则比较快,每次可以传输16Bit,一般适用在大容量的多媒体应用中,容量大。

如:CF,SM.②串行Serial Flash 是以字节进行传输的,每次可以传输1-2Bit.如:MMC,SD,MS卡.串行闪存器件体积小,引脚也少,成本相对也更低廉。

 ③不可擦除Mask Rom Flash的特点是一次性录入数据,具有不可更改性,经常运用于游戏和需版权保护文件等的录入。

其显著特点是成本低。

注意:任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。

NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。

从上面的信息,我们可以对flash类型特点有个比较明确的了解。

CPU clock rate: 200 MHz开发板上所使用的CPU的主频为200MHZ.DRAM size is 128MB (128MB/0MB)动态内存ram大小为128M。

这里我们列举一下内存的类型及工作原理。

根据内存的工作原理可以划分出两种内存:DRAM和SRAM①DRAM表示动态随机存取存储器。

这是一种以电荷形式进行存储的半导体存储器。

D RAM中的每个存储单元由一个晶体管和一个电容器组成。

数据存储在电容器中。

电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。

为了将数据保存在存储器中,DR AM器件必须有规律地进行刷新。

②SRAM是静态的,因此只要供电它就会保持一个值。

一般而言,SRAM 比DRAM要快,这是因为SRAM没有刷新周期。

每个SRAM存储单元由6个晶体管组成,而DRAM 存储单元由一个晶体管和一个电容器组成。

相比而言,DRAM比SRAM每个存储单元的成本要高。

照此推理,可以断定在给定的固定区域内DRAM的密度比SRAM 的密度要大。

SRAM常常用于高速缓冲存储器,因为它有更高的速率;而DRAM常常用于PC中的主存储器,因为其拥有更高的密度。

在嵌入式系统中使用DRAM内存的设计比较广泛。

地址辅助说明:先说明一下内存地址数字情况,主要是为了方便记忆。

可以访问的内存为4G。

0x40000000是1GB处;0x00040000是256K处,0x00020000是128K处,0x90000000是2 GB多的地方。

1M->0x00100000,2M->0x00200000,8M->0x0080000016M->0x01000000,32M->0x02000000256M->0x1000000064K->0x000100004K->0x00001000这个是个快速记忆的方法,你可以根据地址中1的位置和其后0的个数来快速知道换算后的地址是在多少兆的地方。

比如,1的后面5个0,代表1M的大小,6个0,代表16M,以此类推。

ROMFS found at 0x46040000, V olume name = rom 43f291aaromfs,只读文件系统所在的地址为:0x46040000 (flash映射后的第3分区)。

卷名为rom。

romfs和rootfs概念上有所区别。

flash在内存中的的起始地址为0x46000000,而ROMFS在flash分区上的起始位置为0x00040 000,所以ROMFS在内存地址中的位置就为0x46040000。

相关文档
最新文档