1-linux启动过程分析
- 格式:doc
- 大小:68.50 KB
- 文档页数:9
rc.local介绍(linux启动系列之⼀)linux有⾃⼰⼀套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。
本⽂中假设inittab中设置的init tree为:/etc/rc.d/rc0.d/etc/rc.d/rc1.d/etc/rc.d/rc2.d/etc/rc.d/rc3.d/etc/rc.d/rc4.d/etc/rc.d/rc5.d/etc/rc.d/rc6.d/etc/rc.d/init.d⽬录1. 关于linux的启动2. 关于rc.d3. 启动脚本⽰例4. 关于rc.local5. 关于bash启动脚本6. 关于开机程序的⾃动启动1. 关于linux的启动init是所有进程的顶层init读取/etc/inittab,执⾏rc.sysinit脚本(注意⽂件名是不⼀定的,有些unix甚⾄会将语句直接写在inittab中)rc.sysinit脚本作了很多⼯作:init $PATHconfig networkstart swap functionset hostnamecheck root file system, repair if neededcheck root space....rc.sysinit根据inittab执⾏rc?.d脚本linux是多⽤户系统,getty是多⽤户与单⽤户的分⽔岭在getty之前运⾏的是系统脚本2. 关于rc.d所有启动脚本放置在 /etc/rc.d/init.d下rc?.d中放置的是init.d中脚本的链接,命名格式是:S{number}{name}K{number}{name}S开始的⽂件向脚本传递start参数K开始的⽂件向脚本传递stop参数number决定执⾏的顺序3. 启动脚本⽰例这是⼀个⽤来启动httpd的 /etc/rc.d/init.d/apache 脚本:代码:#!/bin/bash......可以看出他接受start,stop,restart,status参数然后可以这样建⽴rc?.d的链接:代码:cd /etc/rc.d/init.d &&ln -sf ../init.d/apache ../rc0.d/K28apache &&ln -sf ../init.d/apache ../rc1.d/K28apache &&ln -sf ../init.d/apache ../rc2.d/K28apache &&ln -sf ../init.d/apache ../rc3.d/S32apache &&ln -sf ../init.d/apache ../rc4.d/S32apache &&ln -sf ../init.d/apache ../rc5.d/S32apache &&ln -sf ../init.d/apache ../rc6.d/K28apache4. 关于rc.local经常使⽤的 rc.local 则完全是习惯问题,不是标准。
实验内容和实验要求实验1:安装Linux系统(4学时)目的:1.学会在操作系统安装之前,根据硬件配置情况,制订安装计划。
2.学会在安装多操作系统前,利用硬盘分区工具(如PQMagic)为Linux准备分区。
3.学会Linux操作系统的安装步骤和简单配置方法。
4.学会Linux系统的启动、关闭步骤,初步熟悉Linux系统的用户界面。
内容:1.安装并使用硬盘分区工具(如PQMagic),为Linux准备好分区。
2.安装Linux系统(如红旗Linux桌面版)。
3.配置Linux系统运行环境。
4.正确地启动、关闭系统。
5.对图形界面进行一般操作。
要求:1.制订安装计划。
2.如果在机器上已安装了Windows系统,而且没有给Linux预备硬盘分区,则安装硬盘分区工具(如PQMagic),运行它,为Linux划分出一块“未分配”分区。
3.在光驱中放入Linux系统安装盘,启动系统。
按照屏幕提示,选择/输入相关参数,启动安装过程。
4.安装成功后,退出系统,取出安装盘。
重新开机,登录Linux系统。
5.对Linux系统进行配置,如显示设备、打印机等。
6.利用鼠标对图形界面进行操作。
说明:1.本实验应在教师的授权和指导下进行,不可擅自操作,否则可能造成原有系统被破坏。
2.如条件不允许每个学生亲自安装,可采用分组进行安装或课堂演示安装的方式。
实验2:Linux 应用及shell编程(4学时)目的:1.掌握Linux一般命令格式和常用命令。
2.学会使用vi编辑器建立、编辑文本文件。
3.了解shell的作用和主要分类。
4.学会bash脚本的建立和执行方式。
5.理解bash的基本语法。
6.学会编写简单的shell脚本。
内容:1.正确地登录和退出系统。
2.熟悉使用date,cal等常用命令。
3.进入和退出vi。
利用文本插入方式建立一个文件。
4.学会用gcc编译器编译C程序。
5.建立shell脚本并执行它。
6.学会使用shell变量和位置参数、环境变量。
西安邮电大学(计算机学院)课内实验报告实验名称:进程间通信/信号量/死锁专业名称:班级:学生姓名:学号(8位):指导教师:实验日期:一.实验目的及实验环境(一)实验环境CPU:Intel Core i3 2.30 GHz内存:2.0 GB操作系统:LINUX(二)实验目的实验1 掌握linux基本命令和开发环境1. 掌握编译环境gcc及跟踪调试工具gdb2. 掌握常用的linux shell命令3. 掌握编辑环境vim实验2 进程通过观察、分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix规范中fork和kill系统调用的功能和使用。
实验3 线程通过观察、分析实验现象,深入理解线程及线程在调度执行和内存空间等方面的特点,并掌握线程与进程的区别。
掌握posix规范中pthread_creat()函数的功能和使用方法。
实验4 互斥通过观察、分析实验现象,深入理解互斥锁的原理及特点掌握在posix 规范中的互斥函数的功能及使用方法。
二.实验内容(一)实验21. 填写代码:1)建立child_proc_number个子进程,要执行:proc_number = i;do_something(); 父进程把子进程的id保存到pid[i] 。
2)向pid[ch-'0']发信号SIGTERM,杀死该子进程。
3)杀死本组的所有进程。
2. 实验过程先猜想一下这个程序的运行结果。
假如运行“./process 20”,输出会是什么样?然后按照注释里的要求把代码补充完整,运行程序。
可以多运行一会儿,并在此期间启动、关闭一些其它进程,看process的输出结果有什么特点,记录下这个结果。
开另一个终端窗口,运行“ps aux|grep process”命令,看看process究竟启动了多少个进程。
回到程序执行窗口,按“数字键+回车”尝试杀掉一两个进程,再到另一个窗口看进程状况。
Linux 基本操作系统实验一linux基本操作系统实验一实验一linux基本操作一、实验目的:1.熟练掌握进入与退出redhatlinux系统的过程。
2.熟悉在窗口环境下操作使用linux系统的基本方法。
3.熟悉在文字模式环境下使用linux的基本命令。
二、实验任务:1.练习使用图形模式下系统的使用。
2.图形模式下的桌面、窗口、面板、图标、抽屉、便捷菜单的采用。
3.图形模式下文件夹、文件的基本操作。
4.文字模式下系统的基本操作。
5.在图形模式下运行应用程序的方法。
基本概念1.系统登入打开微型计算机电源开关;?屏幕上见到选项菜单:选redhat回车;稍等片刻(系统正装载,启动)屏幕显示装载信息;见系统登录界面提示输入用户名时,输入用户名:stud01并回车;(超级用户用户名为root,普通用户用户名为:stud01、stud02、。
)见到系统提示信息:password:时,输出用户口令:并contrary;(普通用户口令为:stud01、stud02、。
)此时可以见到系统图形界面,表示登录成功,在图形界面下可以利用鼠标进行操作。
?若要使用文字界面,可以使用:“应用程序”/“终端”命令进入文字界面,在文字界面下可以通过输入命令进行操作。
2.虚拟终端的切换采用组合键:ctrl+alt+fn其中fn分别为f1、f2、。
f7功能键,可以转换交互式终端。
3.申请帮助命令的使用man进入相关命令的帮助信息显示,pgup、pgdn可以前后翻页,esc、q退出帮助。
4.重新启动系统文字模式下输出命令:shutdowncrnowcontrary。
图形模式下,选面板->动作->重新启动->回答“是”,以新用户名和口令进入系统。
5.退出系统窗口环境下选择退出系统选面板->动作->冻结选面板->选择退出->关机?文字模式下选择退出系统退出系统:输入命令logout或exit回车关机:输入命令:shutdownch数字回车。
一种基于linux系统的设备及其应用启动的方法在现代科技快速发展的时代,Linux操作系统作为一种开源、稳定、安全的操作系统,被广泛应用于各个领域。
随着物联网技术的兴起,许多设备及其应用也需要在Linux系统上进行启动。
本文将介绍一种基于Linux系统的设备及其应用启动的方法,并探讨其应用领域和优势。
一、方法介绍基于Linux系统的设备及其应用启动方法主要包括以下几个步骤:1. 设备准备:首先,需要将设备与计算机连接,并确保设备的硬件接口与计算机的接口兼容。
例如,如果设备是通过USB接口与计算机连接的,那么需要确保计算机上有USB接口。
2. 系统安装:接下来,需要在计算机上安装Linux操作系统。
根据不同的设备和应用需求,可以选择不同版本的Linux发行版,例如Ubuntu、Fedora等。
安装过程中需要根据系统提示进行操作,包括选择磁盘分区、设置用户名密码等。
3. 驱动安装:安装完Linux系统后,需要根据设备的硬件型号安装相应的驱动程序。
驱动程序可以通过官方网站或者其他渠道下载,然后按照指示进行安装。
驱动程序的安装是保证设备与计算机正常通信的关键步骤。
4. 设备连接:在驱动安装完成后,需要将设备与计算机进行连接。
这一步可以通过USB、蓝牙、Wi-Fi等方式实现,具体取决于设备的接口类型。
连接成功后,计算机会自动识别设备,并为其分配一个唯一的设备ID。
5. 应用启动:最后一步是启动设备的应用程序。
这可以通过终端、图形界面或者命令行等方式实现。
用户可以根据自己的需求选择合适的方式。
在启动应用程序之前,需要确保应用程序已经安装并配置好。
二、应用领域基于Linux系统的设备及其应用启动方法适用于各个领域的设备和应用。
下面以智能家居设备和医疗设备为例,介绍其在不同领域的应用。
1. 智能家居设备:智能家居设备包括智能灯、智能插座、智能门窗等。
通过基于Linux系统的设备及其应用启动方法,可以将这些设备与家庭网络连接,并通过应用程序实现远程控制。
《Linux系统管理》Linux软件包管理实验报告一、实验目的:1.了解作为系统管理员如何为新用户建立帐户2.如何增加、设置或修改账户和组3.掌握常用软件包的管理方法4.掌握网络通信管理5.掌握进程管理6.掌握常用的磁盘管理命令(1)查看student用户的配置文件及管理文件(3)将student用户更名为newStudent(4)显示当前登录的账户信息(2)删除创建的用户。
2.组管理(1)创建一个公共组group1(2)将group1组更名为group(3)添加group组的成员student1,student2,student3,student4,并给每一个用户分配一个密码(2)设定student1为group组的管理员(5)将group组内的用户student3和student4删除3.常用软件包的管理方法(1)RPM软件包①查询系统中安装的所有RPM软件包②查询httpd-2.4.6-90.el7.centos.x86_64.rpm,若不在请安装此包③查询httpd-2.4.6-90.el7.centos.x86_64.rpm包中文件的信息④查询ftp-0.17-67.el7.x86_64.rpm包中文件的信息⑤查询系统中已安装(python-cffi-1.6.0-5.el7.x86_64)包里所包含的文件⑥查询系统中指定文件所属的软件包⑦查询apache-commons-cli-1.2-13.el7.noarch.rpm,若不在请安装此包。
⑧删除apache-commons-cli-1.2-13.el7.noarch.rpm包(2)YUM软件包①查看YUM软件仓库配置文件的关键信息。
②进行YUM本地资源的配置。
③采用YUM命令进行软件包的查询,并安装httpd包(主要观察安装的过程)。
(3)TAR软件包①将整个/etc目录打包压缩成myetc.tar.gz文件,并保存在/root目录中。
第1章Linux系统概述和安装Linux系统是一种类UNIX的完整操作系统。
它不仅功能强大、运行稳定,而且用户可免费使用,分析其源代码。
Linux系统支持x86、ARM等大多数常见硬件架构和TCP/IP 等主流网络协议,有良好的跨平台性能,应用面极其广阔。
本章将介绍Linux系统的基本概念,并演示如何安装一套带有X Window图形操作界面的Linux系统发布版。
1.1 引言计算机系统由硬件系统和软件系统所组成,软件系统中最为重要的是操作系统。
Linux 作为操作系统管理着计算机内所有的硬件资源和软件资源,仿佛是计算机的灵魂。
Linux 系统基于GPL协议发布,该协议是GNU项目所创立开放源代码的公共许可证。
要理解Linux系统并以一种全新的方式开发和发布软件,首先则需要了解GNU项目和Linux系统的渊源。
1.1.1 GNU项目简介GNU项目在1983年由理查德·斯托曼(Richard Stallman)创立,最初的目标是通过使用必要的工具从源代码开始创建一个自由的类UNIX操作系统。
此前的软件均以源代码的形式发布,用户可以根据自己需要修改源代码。
但自从那时起,软件厂商为了保护自己的商业利益,开始使用编译所得的二进制文件发布软件,从而使软件的源代码变为“商业秘密”。
为了改变当时不利于软件技术发展的格局,GNU项目花了十余年时间创建了GCC编译器、Emacs编辑器等多个工具。
所有的工具以源代码形式发布,并且无需支付任何费用,只是这些工具的改进版本和衍生品必须遵循同样的发布形式,这就形成了GPL协议。
但它在20世纪80年代缺少了一个最关键的组件,即操作系统核心,直到Linux系统的诞生。
GNU项目组织结构如图1.1所示。
1.1.2 Linux起源安德鲁·塔能鲍姆(Andrew Tanenbaum)出于教学目的编写了名为Minix的类UNIX 操作系统。
芬兰赫尔辛基大学在读的学生林纳斯·托瓦兹(Linus Torvalds)认为Minix有许多地方不合理,于是开始为自己AT 386微机设计新的操作系统核心。
Linux启动过程详解/?p=1301启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。
这是因为BIOS中包含了 CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。
在此之后,计算机心里就有谱了,知道应该去读取哪个硬件设备了。
启动第二步--读取MBR众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。
其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。
启动第三步--Boot LoaderBoot Loader 就是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader。
我们以Grub为例来讲解吧,毕竟用lilo和spfdisk的人并不多。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。
启动第四步--加载内核根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。
此时,屏幕一般会输出“Uncompressing Linux”的提示。
当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。
至此,Linux 内核已经建立起来了,基于Linux的程序应该可以正常运行了。
启动第五步--用户层init依据inittab文件来设定运行等级内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab 文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。
Linux的运行等级设定如下:0:关机1:单用户模式2:无网络支持的多用户模式3:有网络支持的多用户模式4:保留,未使用5:有网络支持有X-Window支持的多用户模式6:重新引导系统,即重启关于/etc/inittab文件的学问,其实还有很多,在后序文章中设计到的,卖个关子,敬请期待,呵呵启动第六步--init进程执行rc.sysinit在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定 PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。
如果你有兴趣,可以到/etc /rc.d中查看一下rc.sysinit文件,里面的脚本够你看几天的:P启动第七步--启动内核模块具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
启动第八步--执行不同运行级别的脚本程序根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
启动第九步--执行/etc/rc.d/rc.local你如果打开了此文件,里面有一句话,读过之后,你就会对此命令的作用一目了然:# This script will be executed *after* all the other init scripts.# You can put your own initialization stuff in here if you don’t# want to do the full Sys V style init stuff.rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。
你可以把你想设置和启动的东西放到这里。
启动第十步--执行/bin/login程序,进入登录状态此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。
linux启动过程分析/techdoc/install/2008/09/19/1033081.shtml/view-61598-1.html缘起我使用linux有一段时间了,最开始和大多数人一样,使用的是redhat,后来机缘巧合之下,我需要使用gentoo 帮别人解决一个问题,从此喜欢上了gentoo,并且在这只小兔子身上学习到了很多东西。
后来ubuntu如火如荼的流行,周围也有一些朋友开始转换至ubuntu,在使用redhat 的时候,安装软件通常等于上网寻找源代码,make和make install,使用了gentoo以后,安装软件等于emerge软件名字,这个转变当然让我觉得很爽,但是由于我只有一个很烂的旧电脑,内存也不是很强劲,我不得不总是对我的家人说:今晚要开一晚上的机器,它要工作。
然后,我开始在升级和使用旧版本之间进行取舍,最终,我的gentoo 变成了一个无法升级的老牛拉破车。
至今我仍认为Gentoo是非常好的linux发行版,不过,前提是你有一个很快的机器,它又一个超大的内存和强劲的CPU。
ubuntu的出现让我多了一个选择,它是一个二进制的发行版,并且使用apt来管理所有的软件,换句话说,安装软件的命令由emerge变成了apt- get,并且不需要编译,安装软件的速度超快,在国内也有速度很快的镜像和庞大的社区支持。
这对于一台破电脑来说是多么的重要。
我将家里的小电脑安装上了ubuntu,这个小电脑本来寄托了我很多的希望,不过现在,只能放在客厅的电视旁边敝帚自珍了。
我将它作为一个支持多种媒体的媒体播放器使用。
借助于ubuntu丰富的软件支持,我想它可以随时扩充满足我所有的客厅电脑需求。
这个美丽的期待很快被无情的粉碎了,在看任何rmvb 格式的电影的时候,它都会每隔一段时间播放画面出现暂时的停顿,这种停顿在播放大的avi文件的时候表现的更为明显。
主要的原因当然是由于小电脑的性能不能满足ubuntu上的mplayer的需求,不过由于在之前的Gentoo 中并没有出现同样的问题,我相信一定可以通过某种优化来解决这个问题。
小电脑使用VIA C3 1G的CPU,主板为EPIA M10K,我决定去VIA的主页上寻找答案。
从上电到switchroot让我们从启动开始,看看FC6都做了些什么。
众所周知,和所有别的发行版本一样,FC6是由grab引导的,grab通常被安装在主引导扇区,也就是说,如果你在主板的bios中设置了从硬盘启动,那么主板自检以后所执行的第一部分代码就是grub,grub将在其安装时候指定的位置寻找menu.lst这个文件,并且根据这个文件的配置,加载相应的内核,启动linux。
这里值得我们注意的是,由于grub的这种机制,即使是格式化你觉得已经完全不再使用的硬盘分区,也可能造成灾难性的后果,假设我们把grub安装在了mbr,并且将配置文件放置在hda2,hda1安装了一套windows操作系统,通过grub实现多重引导,但是现在我们想放弃hda2的linux 系统,或者想把它换成另外一套linux发行版,我们可能会选择格式化hda2,虽然grub被安装在mbr,但是hda2的被格式化仍然会破坏其配置文件所在的目录,grub将无法正常启动,你也就无法正常引导位于hda1的windows系统了,因为grub会提示错误,不给你选择系统的机会。
这种情况在实际的双系统使用过程中,可能经常会遇到。
遇到这种问题,常见的修复方法是使用软盘启动windows,使用fdisk /mbr命令使用windows系统提供的mbr覆盖gurb的mbr代码,或者使用其他方式启动linux(软盘,U盘或者光盘),重新安装grub。
虽然天不会塌下来,但是相信也会让你很不爽了,所以要小心。
内核是所有linux的核心,grub在成功的读取了配置文件以后,将会找到kernel所在的位置,加载内核并且把电脑的控制权交给kernel程序,在FC对应的grub的menu.lst文件中,我们通常可以看到类似这样的语句:root (hd0,2) 这句话告诉我们,从现在开始,根路径将被设置为第一个硬盘的第3个分区,然后是kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet,这句话告诉我们,从根分区的boot目录的vmlinuz-2.6.18-1.2798.fc6这个文件中读取内核,执行内核的时候使用"ro root=LABEL=/ rhgb quiet"这样的参数,内核的执行参数可以控制内核的行为,比如ro参数告诉内核,以只读方式挂载根分区,而quiet则告诉内核,启动的时候不要打印任何信息。
这些参数不光影响内核的执行,大多数的发行版也使用这些参数控制启动完毕以后后续的动作。
这些参数可以在任何时候从/proc/cmdline 这个文件中获得。
现在,grub找到了内核(hd0,2) /boot/vmlinuz-2.6.18-1.2798.fc6,它将整个电脑的控制权交给了这个程序,内核开始进行各种初始化的动作,你可以将quiet参数去掉,以便看看内核都做了哪些事情,也可以在系统启动成功以后,使用dmesg这个命令查看内核启动的时候,都打印了哪些东西,总的来说,内核做的都是一些和硬件打交道的事情,比如初始化内存,检测并初始化硬件等,在内核启动的最后,它将寻找init程序并将电脑的控制权交给这个程序。
有越来越多的新硬件需要linux的支持,如果把所有的硬件检测工作都放在内核中完成,内核会变得无比巨大,这不光是没有效率的,事实上也是不可能和不允许的,因此,如果你清楚的知道你的电脑都拥有哪些硬件,并且在未来不会添加新的硬件,你可以只将那些你需要的硬件编译到内核中去,然后直接启动你的linux系统(事实上,早期的Gentoo系统要求每个安装者在安装的时候编译自己的内核),但是对于FC6这样的发行版来说,为了让全球大多数的PC 都可以顺利使用它,它使用模块的方式编译了尽可能多的硬件支持,并且在启动的时候在grub的配置文件中指定了initrd参数。