Linux系统引导和内和初始化(哈尔滨工业大学课件)

合集下载

嵌入式linux培训第一章.pptx

嵌入式linux培训第一章.pptx

2)、Linux发展史
1991年Linux诞生,由芬兰赫尔辛基大学学生 Linus Torvalds在本校用于系统教学的Minix系 统基础上开发的类UNIX操作系统。它的标志是 一个名为Tux的可爱的小企鹅。
1991年10月5日,Linus发布了Linux的第一个 版本:Linux 0.0.2,遵循通用公共许可证 (GPL,General Public License)
1.2开发软件安装与常用软件的使用
安装开发软件ADS软件、keilMDK、jlink、 虚拟机vmware、vmwaretools软件、 red hat 9操作系统、学会使用上述软件、 DNW及超级终端使用。
1.2.1 ADS1.2
ADS(ARM Developer Suite)是ARM 公司推出的新一代ARM继承开发工具。 ADS由命令行开发工具,ARM实时库, GUI开发环境(Code Warrior 和AXD), 实用程序和支持软件组成。有了这些部件, 用户就可以为ARM系统的RISC处理器编 写和调试自己的开发应用程序。
实验一 嵌入式开发软件的安装及使用
1.3 linux操作系统
Linux发行版本: RedHat Fedora Core Mandrake Suse Debian CentOS Ubuntu RedFlag
1.3.1 linux操作系统安装前准备
1、Linux操作系统硬件准备: CPU:Pentium以上处理器。 内存:至少128MB,推荐使用256MB以上的内
嵌入式系统的特点为应用的特定性和广泛 性、高效性、高可靠性、软硬一体
返回
返回
2、嵌入式操作系统是嵌入式应用软件的 基础和开发平台。嵌入式系统的出现,解 决了嵌入式软件开发标准化的难题。

第2章 引导和初始化

第2章 引导和初始化

2.3 Linux的初始化
8191
init_stack
ESP
task_struct
0
init_task
0号进程的管理结构 将SS设为$__KERNEL_DS,让ESP指向init_stack的 最后一个字节,开始使用0号进程的系统堆栈。 2.6中,放在堆栈中的是thread_info,可以只用4KB
setup程序在0x90200处,它完成实模式下的初始化。 其中0x90200-0x90226是一些系统参数,它们与位 于从0x90000到0x90200之间的引导参数一起构成整个 操作系统的初始参数区。 这些参数大部分是在操作系统引导映像创建时,由 映像创建程序写入的;也有部分是由setup程序测试系 统后记录下来的。这部分数据是操作系统接受的第一 批参数,它们将影响整个操作系统的初始化过程。
第二章 引导和初始化
引导和初始化
操作系统内核驻留在外存(磁盘、Flash等),但 必须在内存中运行。 因此,系统开机的第一件大事是将操作系统内核读 入内存。这一过程称为引导或自举(Bootstrap)。 完成引导过程的程序称为引导程序。 不同的操作系统有不同的引导方式,需要不同的引 导程序(Lilo、Grub、ntldr等)。引导程序也驻留在外 存,也需要先装入内存。 各CPU都规定了自己执行的初始位置,并在此位置 上放置了一片ROM。由ROM中的程序装入引导程序。
2.1 开机过程
BIOS 是一个简单的操作系统,它永远驻留在机器 的ROM中。 BIOS由下面四部分组成: 1、开机自检POST(Power-On Self Test)。 2、选择引导设备,读入引导程序,并将控制权交 给引导程序。 3、为用户提供服务(int 10h、int 13h等)。 4、管理程序(Setup设置程序)。 目前的操作系统只需要BIOS提供两种功能: 1、引导,将引导程序读入内存; 2、报告系统配置信息。

linux操作系统讲解PPT课件

linux操作系统讲解PPT课件

安装其他软件:可以根据 需要安装其他软件或工具, 以完成Linux操作系统的网络设置
基本配置:包括用户名、主机名、域名等
网络设置:包括IP地址、网关、DNS等
Linux操作系统的软件包管理和升级
常 见 的 软 件 包 管 理 工 具 : apt 、 yu m 、dnf 等 软件包查询:apt-cache search <关键词>、yum list <软件包名>等 软件包安装:apt-get install <软件包名>、yum install <软件包名>等 软 件 包 升 级 :apt- get update & & apt- get upg rade、 yum update等
Telnet: 一种 用 于网络远程登录 的标准协议,常 用于测试网络连 接
Linux操作系统的多媒体播放器和图形界面
多媒体播放器:VLC、 MPlayer等
图形界面:GNOME、KDE 等
Linux操作系统的安 全性和稳定性
Linux操作系统的用户管理和权限控制
用 户 管 理 : L inux 操 作 系 统 提 供 了 用 户 管 理 功 能 , 可 以 创 建 、 删 除 、 修 改 用 户 账 户 和 组 账 户 , 对用户和组进行权限管理。
Linux操作系统的安 装和配置
Linux操作系统的安装步骤和注意事项
准备安装介质:选择合 适的Linux发行版,并准
备安装光盘或U盘。
启动计算机:将安装介质 插入计算机,重启并进入 BIOS设置,选择从安装介
质启动。
选择安装选项:在安装过 程中,选择合适的安装选 项,如语言、时区、键盘
布局等。

《LINUX入门教程》课件

《LINUX入门教程》课件

网络配置与管理
网络配置基础
介绍Linux系统网络配置的基本 概念和常用命令,如ifconfig、
ip等。
静态IP配置
演示如何为Linux系统配置静态 IP地址、子网掩码和默认网关 等。
动态IP配置
介绍如何使用DHCP协议自动获 取IP地址,以及如何配置DNS 服务器。
网络工具与故障排查
介绍一些常用的网络工具,如 ping、traceroute等,以及如 何进行网络故障排查和优化。
游戏
Linux游戏平台如SteamOS逐渐受到游戏 爱好者的青睐,提供了丰富的游戏资源和 优化。
桌面
Linux桌面操作系统如Ubuntu、Fedora 等,提供了丰富的应用和工具,适用于日 常办公、学习和娱乐。
嵌入式系统
Linux适用于各种嵌入式设备,如智能家 居、智能硬件等。
移动设备
Android操作系统基于Linux内核,广泛 应用于智能手机和平板电脑等移动设备。
Linux系统具有强大的安全机制,包括 防火墙、权限管理、加密等,可以有效 抵御病毒和黑客攻击。
灵活性
Linux系统支持多种硬件平台和设备, 可以根据需求进行定制化配置。
免费和开源
Linux遵循开源软件许可证,用户可以 自由获取和使用源代码,降低了使用成 本和维护成本。
Linux的应用领域
服务器
Linux是许多企业和组织的首选服务器操 作系统,广泛应用于Web服务器、数据库 服务器、邮件服务器等场景。
同的权限。
常用命令与工具
1 2 3
常用命令
Linux系统中常用的命令包括“ls”、“cd”、 “pwd”、“cp”、“mv”、“rm”等,用于 文件和目录的操作。

Linux系统引导与配置.ppt

Linux系统引导与配置.ppt
titleredhatlinux241814roothd04kernelbootvmlinuz241814rorootlabelinitrdbootinitrd241814imgtitledosrootnoverifyhd00chainloader1923引导装载程序grub参数介绍参数描述default定义默认引导项timeout设定grub菜单显示的时间password设置grub密码以保护grub安全性splashimage设置grub背景画面title用来装载一个操作系统的一组特定命令的标root指定根文件系统的位置kernel引导系统时使用的内核的位置及选项initrdinitialramdisk映像grubconf的常用参数
– Password
--md5
$1$2!aX.5sd$#*dll/
• 为保护某个操作系统,还可以在某个作系统条 目下加入lock项目
9.2.4 GRUB应用技巧及维护
修复MBR的方法: 使用启动盘引导:
– 输入命令grub进入grub shell环境 – 运行命令root (hd0,0) – setup (hd0)
/etc/inittab设定的运行级别来执行相应的脚 本进行系统初始化 4. 在指定的各个虚拟终端上运行/sbin/mingetty, 等待用户的登录。
9.2.1 引导装载程序
1.引导装载程序(Boot Loader)
– LILO(LInux LOader) – GRUB(GRand Unified Bootloader) – NT Os Loader
9.3 init过程
• 考察/etc/inittab文件 • 定制init启动内容
9.3.1 考察/etc/inittab文件
• id:3:initdefault: • # System initialization. • si::sysinit:/etc/rc.d/rc.sysinit • l0:0:wait:/etc/rc.d/rc 0 • l1:1:wait:/etc/rc.d/rc 1 • l2:2:wait:/etc/rc.d/rc 2 • l3:3:wait:/etc/rc.d/rc 3 • l4:4:wait:/etc/rc.d/rc 4 • l5:5:wait:/etc/rc.d/rc 5 • l6:6:wait:/etc/rc.d/rc 6 • ca::ctrlaltdel:/sbin/shutdown -t3 -r now • # UPS connected and working correctly. • pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down“ • 1:2345:respawn:/sbin/mingetty tty1 • 2:2345:respawn:/sbin/mingetty tty2

Linu操作系统内存磁盘初始化技术

Linu操作系统内存磁盘初始化技术

Linux 操作系统内存磁盘初始化技术具体解析Linux 内存初始化技术〔initrd〕用于支持两阶段的系统引导过程,是在系统启动过程中被挂载的临时root 文件系统〔译者注:这里的root 文件系统是指的根文件系统〕。

initrd 包含很多可执行程序和驱动,并允许在临时的内存磁盘根文件系统被卸载,内存被释放后挂载真实的root 文件系统。

在很多嵌入式linux 文件系统中,initrd 是最终的根文件系统。

这篇文章主要讲解了linux2.6 内核的initrd 技术,包括在内核中的创立及使用。

什么是内存磁盘初始化?Initrd 挂载优先级高于真实根文件系统,它被邦定在内核上,做为内核启动过程的一局部被加载〔load〕。

然后,做为两阶段引导过程的第一局部,内核挂载〔mount〕initrd,用于获得并加载真实有效的文件系统。

为了到达这个目的,initrd 包含有最起码的名目与程序,例如insmod,来安装内核模块到内核中。

对于桌面或效劳器linux,initrd 是临时文件系统,它的生存周期很短,仅仅是做为到达真实根文件系统的桥梁。

但对于没有存储设备的嵌入式系统来说,它才是永久性的根文件系统。

本篇文章对这两方面均有涉及。

深入分析initrdInitrd 包含有必需的程序和系统文件,用于支持系统的启动的其次阶段过程。

创立初始化内存的方法,是随着你所使用的系统版本而转变的。

从Fedora Core3 以后,initrd 就由回送设备〔loop device〕建立。

什么是回送设备?它是一个设备驱动,允许你将一个文件挂载为块设备,并对其文件系统做出描述。

或许loop device 并不存在与你的内核中,但是你能够通过内核的配置工具〔make menuconfig〕翻开它。

路径是:Device Drivers-》Block Devices-》LoopBack Device support。

下面为检查命令:# mkdir temp ; cd temp# cp /boot/initrd.img.gz .# gunzip initrd.img.gz# mount -t ext -o loop initrd.img /mnt/initrd# ls -la /mnt/initrd#现在,你可以通过查看/mnt/initrd 的子名目来查看initrd 的内容。

精品课件-Linux原理与结构-第3章

精品课件-Linux原理与结构-第3章
另外,在引导期间,引导程序还应能与用户交互,接受 用户提供的命令行参数(如显示模式、内存大小、initrd文 件名等)并将它们传递给内核,以指导内核的初始化。
早期的Linux自己实现引导程序,如Bootsect。目前的 Linux使用独立的第三方引导程序,如GRUB。为了完成引导 过程中的复杂交互,Linux专门定义了一个引导协议。
12
图3.1 引导后的内存布局
13
Linux引导协议由一组参数组成,位于实模式初始化程 序中,读入内存后的位置在X+0x1F1处,其中各主要参数的 意义如表3.1所示。在表3.1中,Offset是相对于X的偏移量, 是各协议参数的存储位置。
14
表3.1 Linux引导协议参数区
偏移量 0x1F1 0x1F4 0x1FC 0x210 0x211 0x214 0x218 0x21C 0x228 0x234 0x238 0x23C 0x250 0x258
(2) 在压缩的内核映像之前有一段解压缩程序,用于解 压内核映像。
(3) 文件头部是一段实模式初始化程序,用于将处理器 切换到保护模式。
9
由于处理器最初运行在实模式中,能够直接访问的内存 空间只有1 MB,因而引导程序必须将内核的实模式初始化程 序放在基本内存(低640 KB)中,但却应将内核映像放置在1 MB以上的位置。
长度/字节 1 4 2 1 1 4 4 4 4 1 4 4 8 8
名称 setup_sects syssize root_dev type_of_loader loadflags code32_start Ramdisk_image Ramdisk_size cmd_line_ptr relocatable_kernel cmdline_size hardware_subarch setup_data pref_address

Linux操作系统课件ppt--第8次 Linux启动引导流程

Linux操作系统课件ppt--第8次 Linux启动引导流程

Linux系统的引导系统启动菜单程序GRUB
1. GRUB简介 全称是Grand Unified Bootloader,他是为多个操作系统 而设计 现在Linux使用的主流引导程序 可以引导现在几乎所有的操作系统 配置文件放在/boot/grub目录 MBR的引导代码负责找到并加载内核 2. GRUB的启动菜单 3. GRUB启动配置文件参数含义
GRUB的配置文件
2GRUB的菜单项的配置命令 title 菜单项名称 例:#title windows 3 配置linux的启动菜单项 GRUB对于不同的操作系统有不同的引导方式,对linux操作系统 GRUB可以直接引导其内核并启动,典型的linux启动彩单配置为: Title RedHat Linux(2.4.20-8) root(dh0,0) kernel/boot/vmlinuz-2.4.20-8 ro root=LABEL=/ initrd/boot/initrd-2.4.20-8.img linux启动菜单项的配置命令: title:定义linux启动菜单项的名称 root:设置GRUB的根设备(root)为linux内核所在的分区 kernel:使用kernel命令后跟linux内核文件作为参数,加载linux的内核文件 initrd:使用initrd命令加载镜像文件
Linux系统的启动引导步骤
(1) 加载BIOS(Basic Input/Output System) (2) 进入GRUB (/boot/grub) (3) 加载Linux Kernel (4) 执行init (5) 运行/etc/rc.d/rc.sysinit (6) 执行/etc/inittab (7) 执行默认级别中的所有Script(etc/rc.d/rc5.d) (8) 执行/bin/login程序
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux内核源代码导读
哈尔滨工业大学(威海)
嵌入式系统实验室
Autumn 2011
系统引导和初始化
概述 史前时代:BIOS 远古时代:引导装入程序 中世纪:setup( )函数 文艺复兴时期:startup_32( )函数 现代:start_kernel( )函数
引导过程概述
在计算机刚加电的那一刻,所有的硬件设备都是 毫无作用的。整个计算机内如同史前时代的大地 一样,四处处于混乱,无序,随机和离散的状态 ,RAM中包含的是无用的随机数据。 引导(bootstrap)就是从开机加电时混乱无序状态 将OS映像装入RAM,并转入OS的运行,由OS 管理控制计算机的过程
例如Linux的引导装入程序LILO 可让用户从多个操作系统中有选择地引导
2012-7-14
主引导记录块 MBR 由于硬盘容量的迅速增长,一个硬盘常常被划分 为若干“分区”,从而把一个物理硬盘划分为几 个逻辑磁盘
每个逻辑磁盘的第一个扇区仍然是引导扇区,分 别用于相应的逻辑磁盘中的操作系统映像
史前时代:BIOS
计算机加电时,由一个特殊的硬件电路在CPU的 一个引脚上产生一个RESET逻辑值。RESET产 生以后,就把处理器的一些寄存器设成固定的值 ,并执行在物理地址0xfffffff0处的代码。
此时RAM芯片中包含的是随机数据 因此必须将地址0xfffffff0映射到某个只读,不挥发的 存储芯片中,即ROM芯片
2012-7-14
分区标志
start CHS
分区比特
end CHS start LBA
size
从磁盘启动 Linux 从磁盘启动Linux需要一个两步的引导装入程序 ,80x86体系下通常是Linux LOader(LILO)
还有GRUB,比LILO功能更强
LILO被装在MBR上(代替那个装载活动扇区的 小程序),或被装在每个磁盘分区的引导扇区上
在80x86体系中,ROM中存放的程序集叫做基本 输入输出系统(Basic Input/Output System, BIOS)
2012-7-14
BIOS包含几个中断驱动的低级过程 所有操作系统在启动时都要通过这些过程对计算机硬 件设备初始化 一些操作系统,如MS-DOS,依赖于BIOS实现大部分 系统调用
4. 只要找到一个有效的设备,就把第一扇区的内 容拷贝到RAM中物理地址0x00007c00开始的位 置,跳转到该地址处,执行刚才装载进来的代码
2012-7-14
远古时代:引导装入程序
引导装入程序(boot loader)是由BIOS用来把操 作系统内核映像装载到RAM中所调用的一个程 序
由BIOS调用,不属于BIOS 如GRUB和LILO
2012-7-14
BIOS使用实地址模式,因为计算机加电启动时 只有这些可以使用
一个实模式地址由一个seg段和一个off偏移量组成, 计算物理地址:seg*16 + off 因此实模式下CPU寻址电路不需要全局描述符表和页 表将逻辑地址转换成物理地址 显然,对GDT 、LDT和页表进行初始化的代码必须 在实模式下运行
显然,这些引导扇区已不是整个硬盘的第一个扇区了 整个硬盘第一个扇区的层次高于所有逻辑磁盘,不属 于任何一个逻辑磁盘
2012-7-14
机器加电时,BIOS还是会从整个硬盘的第一个 扇区开始引导,因此这个扇区称作主引导记录块 MBR
MBR含有硬盘分区表,和一段小程序
MBR中的程序并不直接引导操作系统,而是根 据盘区划分信息从一个预定的“活跃”逻辑磁盘 中读入其引导扇区
当用户一直按下一个键超过一定时间,键盘设备就反复向 CPU发送相应的键盘码
3. 初始化视频卡 4. 重新初始化磁盘控制器并检测硬盘参数 5. 检查IBM微通道总线(MCA) 6. 检查PS/2指针设备(总线鼠标) 7. 检查高级电源管理(APM)BIOS的支持
2012-7-14
逻辑磁盘的引导扇区程序再负责装入OS映像 也可将LILO或GRUB放在MBR中,使引导过程少转 一道弯
2012-7-14
上电/复位
系统启动
BIOS
Bootloader第一阶段
MBR
Bootloader第二阶段
LILO,GRUB等
内核
启动内核
运行init进程
用户空间
2012-7-14
x86 PC上的Linux引导过程
startup_32( )函数设置一个基本的运行环境(如 堆栈)后清除BSS段,调用decompress_kernel() 函数来解压内核
内核映像并不是可直接执行的目标代码,而是经过压 缩的zImage或bzImage 并非所有部分都是压缩过的,压缩文件头内嵌有解压 自身的代码
ss
2012-7-14
但应保留IRQ2,它是两个PIC间的级联中断
2012-7-14
14. 通过设置cr0状态寄存器中的PE位,将CPU从实地 址模式切换到保护模式。cr0状态寄存器中的PG位被 清0,因此分页机制还没有启用 15. 跳转到startup_32( )汇编语言函数
2012-7-14
文艺复兴时期:startup_32( )函数
即为引导扇区 内容取决于具体操作系统,也可能与文件系统相关
而存放在EPROM中的的程序则负责从磁盘中读 入引导扇区(到内存),称之为初始引导程序
初始引导程序与具体操作系统或文件系统无关
2012-7-14
引导扇区内的程序再负责装入其他扇区,这些扇 区的程序和数据共同完成整个引导过程 或者由引导扇区读入一个中间的工具性程序,称 为引导装入程序(boot loader),再由它负责装 入OS映像
2012-7-14
注意Linux内核并不使用BIOS!
多进程,采用保护模式尤其是页式映射的现代操作系 统,不适合使用BIOS的驱动 BIOS过程必须在实模式下运行,内核进入保护模式 后不能与之共享函数 Linux绕开了BIOS,从硬件接口和中断响应彻底地实 现了自己的设备驱动层 对Linux开说,BIOS作用不过是初始引导和加电自检 以及提供此过程搜集到的信息
8. 如果BIOS支持增强磁盘驱动服务,就调用相应的 BIOS过程在RAM中建立系统可用硬盘表 9. 如果内核映像被低装载到RAM中(0x00010000处 ),就将它移动到物理地址0x00001000处 10. 置位8042键盘控制器的A20引脚(为了兼容性的 必须) 11. 建立临时中断描述符表(IDT)和临时全局描述符 表(GDT) 12. 如果需要,重置浮点单元(FPU) 13. 重新编写可编程中断控制器(PIC),以屏蔽所有 中断
setup() startup_32()
decompress_kernel()
/arch/i386/boot/head.S /arch/i386/boot/compressed/head.S
/arch/i386/boot/compressed/misc.c
/arch/i386/kernel/head.S /init/main.c
虽然BIOS已经初始化了大部分硬件设备,但是Linux 并不依赖于BIOS,而是以自己的方式重新初始化硬 件设备以增强可移植性和健壮性
2012-7-14
setup( )函数执行的操作:
1. 在AIPC兼容的系统中,它调用一个BIOS例程,以 在RAM中建立系统物理内存布局表 2. 设置键盘重复延时和速率
Linux使用一个引导装入程序取代硬盘第一扇区 MBR中原有的小程序
MBR中包含硬盘分区表和一段小程序,该程序用于 装载被启动操作系统所在分区第一个扇字节)
主引导记录MBR 的结构示意图
分区1 硬盘分区表 (共64字节) 魔数(2字节) 分区2 分区3 分区4
1. 调用一个BIOS过程显示“Loading”信息 2. 调用一个BIOS过程从磁盘装入内核映像的初始部 分
即将内核映像第一个512字节从地址0x00090000开始存入 RAM中,将setup()函数代码从地址0x00090200开始存入 RAM
2012-7-14
3. 调用一个BIOS过程从磁盘中装载其余的内核映像
第二部分从磁盘读取可用操作系统映射表,并提 供给用户一个提示符,让用户可以从中选择装一 个操作系统
2012-7-14
用户选择了要装入的OS后,LILO就把相应分区 的引导扇区拷贝到RAM中并执行它,或直接把 内核映像拷贝到RAM中
LILO引导装入程序装入Linux内核映像要依赖于 BIOS例程,主要执行如下操作:
现代:start_kernel( )函数
start_kernel( )函数完成内核的初始化工作。几乎 每个内核部件都是由这个函数进行初始化的。一 要的初始化有:
2012-7-14
Thanks! The end.
2012-7-14
存储在内存EPROM这个特殊位置的程序很小, 不足以直接将OS映像从磁盘上读进来
磁盘的文件系统不同 OS内核映像可能经过压缩,装入的同时需要解压 不同的CPU指令也不同 ……
2012-7-14
引导扇区 为了解决EPROM中的程序不足以直接加载OS映 像,通常在磁盘的第一个扇区中存放一些映像的 地理信息和一段适用于具体操作系统的程序
startup_32() start_kernel()
cpu_idle()
2012-7-14
/init/main.c
内核被解压到内存之后,会再调用 /arch/i386/kernel/head.S中的startup_32()函数,这 个新的startup_32函数会初始化页表,并启用分 页机制
2012-7-14
效果一样,引导装入程序被执行时,用户都可以选择 装入哪个操作系统
相关文档
最新文档