Linux系统基础第五章Linux启动流程
嵌入式linux系统的启动流程
![嵌入式linux系统的启动流程](https://img.taocdn.com/s3/m/ff842acc85868762caaedd3383c4bb4cf6ecb713.png)
嵌入式linux系统的启动流程
嵌入式Linux系统的启动流程一般包括以下几个步骤:
1.硬件初始化:首先会对硬件进行初始化,例如设置时钟、中
断控制等。
这一步骤通常是由硬件自身进行初始化,也受到系统的BIOS或Bootloader的控制。
2.Bootloader引导:接下来,系统会从存储介质(如闪存、SD
卡等)的Bootloader区域读取引导程序。
Bootloader是一段程序,可以从存储介质中加载内核镜像和根文件系统,它负责进行硬件初始化、进行引导选项的选择,以及加载内核到内存中。
3.Linux内核加载:Bootloader会将内核镜像从存储介质中加载到系统内存中。
内核镜像是包含操作系统核心的一个二进制文件,它由开发者编译并与设备硬件特定的驱动程序进行连接。
4.内核初始化:一旦内核被加载到内存中,系统会进入内核初
始化阶段。
在这个阶段,内核会初始化设备驱动程序、文件系统、网络协议栈等系统核心。
5.启动用户空间:在内核初始化完毕后,系统将启动第一个用
户空间进程(init进程)。
init进程会读取并解析配置文件(如
/etc/inittab)来决定如何启动其他系统服务和应用程序。
6.启动其他系统服务和应用程序:在用户空间启动后,init进
程会根据配置文件启动其他系统服务和应用程序。
这些服务和应用程序通常运行在用户空间,提供各种功能和服务。
以上是嵌入式Linux系统的基本启动流程,不同的嵌入式系统可能会有一些差异。
同时,一些特定的系统也可以添加其他的启动流程步骤,如初始化设备树、加载设备固件文件等。
如何安装和使用Linux操作系统
![如何安装和使用Linux操作系统](https://img.taocdn.com/s3/m/829fada4900ef12d2af90242a8956bec0975a529.png)
如何安装和使用Linux操作系统第一章:引言和背景知识Linux操作系统是一种免费开源的操作系统,以其稳定性和安全性而闻名。
本章将介绍Linux操作系统的背景知识,包括其起源、发展和主要特点。
第二章:选择适合您的Linux发行版Linux操作系统有许多不同的发行版本,每个版本都具有自己的特点和用途。
本章将指导您选择适合您需求的Linux发行版,并对常见发行版进行介绍。
第三章:准备安装所需材料在安装Linux操作系统之前,您需要准备一些必要的材料和设备。
本章将介绍您需要准备的硬件设备、安装介质和其他必要的准备步骤。
第四章:安装Linux操作系统本章将详细介绍如何安装Linux操作系统。
涵盖的内容包括从镜像文件创建安装介质、启动计算机并进入安装程序、分区和格式化磁盘、选择安装选项、设置用户账户和密码等。
第五章:初次启动和基本配置当安装完成后,您需要进行一些初次启动和基本设置,以确保Linux操作系统正常运行。
本章将介绍如何进行初次启动、配置网络连接、更新软件包、设置系统时区等。
第六章:使用Linux命令行界面Linux操作系统以其强大的命令行界面而著名,熟练使用命令行界面是运维人员的必备技能。
本章将介绍基本的Linux命令,包括文件和目录操作、用户和权限管理、进程管理等。
第七章:安装和配置常用应用程序本章将介绍如何安装和配置常用的Linux应用程序,例如Web 服务器、数据库、邮件服务器等。
同时,还将介绍如何使用包管理器进行软件的安装和更新。
第八章:远程访问和文件传输远程登录和文件传输是管理Linux系统的常见任务之一。
本章将介绍如何通过SSH协议远程登录Linux系统,并使用SCP或SFTP实现文件的传输和管理。
第九章:系统监控和故障排除在运维过程中,系统监控和故障排除是非常重要的。
本章将介绍常用的系统监控工具和技术,以及处理常见故障的方法。
第十章:安全性和更新Linux操作系统以其高度的安全性而闻名,但仍然需要采取一些额外的措施来确保系统的安全。
Linux 系统引导过程
![Linux 系统引导过程](https://img.taocdn.com/s3/m/2160a708763231126edb11ab.png)
启动流程启动时要加载核心,让核心来驱动整个硬件。
整个启动过程:1.加载BIOS的硬件信息,并获得第一个启动设备的代号(CMOS中设定的启动项)。
2.读取第一个启动设备的MBR的引导加载程序(lilo、grub、spfdisk)3.加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有硬件设备。
4.核心执行init程序并获取运行信息。
5.Init执行/etc/rc.d/rc.sysinit文件6.启动核心的外挂模块(/etc/modprobe.conf)7.Init 执行各个批处理文件(根据运行级别)。
8.Init 执行/etc/rc.d/rc.local文件9.执行/bin/login程序,等待用户登录。
10.登录之后开始以shell控制主机。
引导加载程序与核心的载入主机读取BIOS,并且了解主要的主机硬件信息后,主机便开始尝试加载操作系统。
主机首先读取的就是硬盘的主引导记录(MBR),在MBR中装有引导加载程序(比如说grub)。
主机刚启动时是不认识磁盘文件系统的,这就需要引导加载程序帮忙。
但我们知道MBR是整个硬盘的第一个扇区,整个大小为一个扇区的大小(512KB),而我们的加载程序却远远大于这个容量。
怎么办?引导加载程序分成两个阶段来执行:1,执行引导加载程序的主程序,这个主程序放在MBR或超级块中。
2,载入引导加载程序的所有设置文件与相关的环境参数文件。
一般来说,设置文件都放在/boot目录下。
引导加载程序必须能做到:●引导加载程序可以直接指定并取用核心文件,并加载到主存储器中。
●也可以将加载程序的控制权移交给下一个加载程序(超级块中的引导加载程序)。
grub是如何被载入的呢?grub有几个重要文档,stage1,stage2,以及stage1.5,这些文档都在/boot/grub下,grub被载入时有以下几个步骤。
Stage1阶段装载基本的引导程式(stage1),这也是安装在MBR中的内容,大小为512字节,但这并不意味着占用的空间为512字节,这还要看块的大小以及inode控制的块数。
Linux 进程的启动方式
![Linux 进程的启动方式](https://img.taocdn.com/s3/m/c1f5020ede80d4d8d15a4fb4.png)
Linux 进程的启动方式程序或者命令的执行实际上是通过进程实现的。
通常情况下,程序或者命令是保存在硬盘上的,当在命令行中输入一个可执行程序的文件名或者命令并按下Enter 键后,系统内核就将该程序或者命令的相关代码加载到内存中开始执行。
系统会为该程序或者命令创建一个或者多个相关的进程,通过进程完成特定的任务。
启动进程的方式有两种,分别为前台启动方式和后台启动方式。
1.以前台方式启动进程在终端窗口的命令行上输入一个Linux命令并按Enter键,以前台方式启动了一个进程。
例如,在终端窗口上执行“find /-name myfile.txt”命令,就可以以前台的方式启动一个进程。
而在该进程还未执行完时,可按下Ctrl+z组合键将该进程暂时挂起。
然后,可以使用ps命令查看该进程的有关信息,如图41所示。
图41 前台方式启动进程2.以后台方式启动进程在前台运行的进程是正在进行交互操作的进程,它可以从标准输入设备接收输入,并将输出结果送到标准输出设备,在同一时刻只能有一个进程在前台运行。
而在后台运行的进程一般不需要进行交互操作,不接收终端的输入。
通常情况下,可以让一些运行时间较长而且不接受终端输入的程序以后台方式运行,让操作系统调度它。
要在命令行上以后台方式启动进程,需要在执行的命令后添加一个“&”。
例如,在终端窗口的命令行上输入命令“find / -name myfile2.txt &”并按下Enter键后将从后台启动一个进程。
启动后,系统会显示如下所示的信息:[2] 3516这里的数字2表示该进程是运行于后台的第2个进程,数字3516是该进程的PID(即进程标识码,用于惟一地标识一个进程)。
然后,出现了shell提示符,这表示已返回到前台。
这时,执行ps命令将能够看到现在在系统中有两个由find命令引起的进程,它们的标识号是不同的,因而是两个不同的进程,其中,PID为3385的进程就是刚才被挂起的进程。
arm版本linux系统的启动流程
![arm版本linux系统的启动流程](https://img.taocdn.com/s3/m/07d9f93ea7c30c22590102020740be1e640ecc52.png)
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. 加载系统服务:启动初始化会加载并启动系统服务,比如网络服务、日志服务、时间同步服务等。
Linux系统服务启动顺序Shell脚本
![Linux系统服务启动顺序Shell脚本](https://img.taocdn.com/s3/m/ce1296c082d049649b6648d7c1c708a1284a0a19.png)
Linux系统服务启动顺序Shell脚本在Linux操作系统中,有许多系统服务需要在启动时按照一定的顺序进行启动。
为了确保这些服务能够正确地依赖关系启动,我们可以使用Shell脚本来管理它们的启动顺序。
本文将介绍一种用Shell脚本来实现Linux系统服务启动顺序的方法。
一、背景介绍在Linux系统中,服务是一种在后台运行的程序,用于提供特定功能或服务。
在系统启动时,许多服务需要按照一定的顺序启动,以满足它们之间的依赖关系。
例如,数据库服务可能需要在网络服务启动之后才能正常工作。
通过Shell脚本管理服务启动顺序可以确保它们能够按照正确的依赖关系启动,避免冲突和错误。
二、Shell脚本的编写编写Shell脚本来管理服务的启动顺序需要遵循一定的规范。
下面是一种常用的方法:1. 定义服务启动顺序首先,我们需要定义每个服务的启动顺序。
可以将服务按照其依赖关系进行排序,确保依赖关系较低的服务先启动。
这样可以避免启动时的冲突和错误。
例如,假设我们有三个服务需要启动:A、B和C。
服务A不依赖于其他服务,服务B依赖于服务A,而服务C依赖于服务B。
因此,启动的顺序应为A、B、C。
2. 编写Shell脚本创建一个新的Shell脚本文件,例如`startup.sh`,并使用文本编辑器打开它。
在脚本中,先使用`#!/bin/bash`指定脚本使用的Shell解释器。
然后,按照定义的服务启动顺序,逐个启动每个服务。
下面是一个示例脚本,用于按照上述定义的服务启动顺序启动服务:```#!/bin/bash# 启动服务Aservice A start# 等待一段时间,确保服务A已经启动完成sleep 5# 启动服务Bservice B start# 等待一段时间,确保服务B已经启动完成sleep 5# 启动服务Cservice C start```在脚本中,使用`service`命令来启动每个服务。
在每个服务启动之后,可以使用`sleep`命令来等待一段时间,以确保服务已经完全启动。
Linux启动过程详解_MBR和GRUB概述
![Linux启动过程详解_MBR和GRUB概述](https://img.taocdn.com/s3/m/fd442e33580216fc700afdca.png)
MBR和GRUB概述Linux 的启动流程目前比较流行的方式主要是以下步骤:1、引导器(例如 GRUB)启动;2、内核启动;3、系统进程启动与配置。
本文以 GRUB 为研究对象,对 GRUB 启动与内核启动两个部分进行描述,关于系统进程的进一步启动与配置将用另一篇文章来说明。
常见的目录结构(以 CentOS 5.3 为例):/boot|-- System.map-2.6.18-128.el5|-- System.map-2.6.18-128.el5xen|-- config-2.6.18-128.el5|-- config-2.6.18-128.el5xen|-- initrd-2.6.18-128.el5.img|-- initrd-2.6.18-128.el5xen.img|-- lost+found|-- memtest86+-1.65|-- message|-- symvers-2.6.18-128.el5.gz|-- symvers-2.6.18-128.el5xen.gz|-- vmlinuz-2.6.18-128.el5|-- vmlinuz-2.6.18-128.el5xen|-- xen-syms-2.6.18-128.el5|-- xen.gz-2.6.18-128.el5`-- grub|-- device.map|-- e2fs_stage1_5|-- fat_stage1_5|-- ffs_stage1_5|-- grub.conf|-- iso9660_stage1_5|-- jfs_stage1_5|-- menu.lst -> ./grub.conf|-- minix_stage1_5|-- reiserfs_stage1_5|-- splash.xpm.gz|-- stage1|-- stage2|-- ufs2_stage1_5|-- vstafs_stage1_5`-- xfs_stage1_5图一: CentOS 5.3 的 /boot 目录目录分作两大部分,一个是 /boot 目录下除 grub 目录以外的所有文件,这些是 Linux 的内核以及内核启动相关的一些文件;另一个就是 grub 下的所有文件, GRUB 引导器启动所需要的所有文件都在 grub 目录下。
Linux系统服务管理脚本使用Shell脚本实现对Linux系统服务的启动停止和重启操作
![Linux系统服务管理脚本使用Shell脚本实现对Linux系统服务的启动停止和重启操作](https://img.taocdn.com/s3/m/2446cec770fe910ef12d2af90242a8956becaa25.png)
Linux系统服务管理脚本使用Shell脚本实现对Linux系统服务的启动停止和重启操作在Linux系统中,服务是指在后台运行并提供各种功能的应用程序。
对于系统管理员来说,管理服务是非常重要和常见的任务。
为了更高效地管理Linux系统服务,可以使用Shell脚本实现对服务的启动、停止和重启操作。
本文将介绍如何使用Shell脚本来管理Linux系统服务。
一、编写Shell脚本首先,我们需要创建一个Shell脚本文件,例如名为“service_manage.sh”。
使用任何一个文本编辑器,打开一个新的文件,并输入以下内容:```shell#!/bin/bashfunction start_service {sudo systemctl start $1}function stop_service {sudo systemctl stop $1}function restart_service {sudo systemctl restart $1}echo "欢迎使用Linux系统服务管理脚本" echo "请输入您想要执行的操作:"echo "1. 启动服务"echo "2. 停止服务"echo "3. 重启服务"read choicecase $choice in1)echo "请输入要启动的服务名:"read service_namestart_service $service_name;;2)echo "请输入要停止的服务名:"read service_namestop_service $service_name;;echo "请输入要重启的服务名:"read service_namerestart_service $service_name;;*)echo "无效的选择";;esac```上述脚本定义了三个函数:`start_service`、`stop_service`和`restart_service`,分别用于启动、停止和重启服务。
linux_mips启动流程_存储相关
![linux_mips启动流程_存储相关](https://img.taocdn.com/s3/m/8574d625482fb4daa58d4b31.png)
Linux-mips启动流程-存储相关linux内核启动的第一个阶段是从/arch/mips/kernel/head.s文件开始的。
而此处正是内核入口函数kernel_entry(),该函数定义在/arch/mips/kernel/head.s文件里。
kernel_entry()函数是体系结构相关的汇编语言,它首先初始化内核堆栈段,来为创建系统中的第一个进程进行准备,接着用一段循环将内核映像的未初始化数据段(bss段在_edata和_end之间)清零,最后跳转到/arch/mips/kernel/setup.c 中的start_kernel()初始化硬件平台相关的代码。
下面讲述start_kernel() 函数。
在这个函数中跟内存初始化的函数是setup_arch()。
第一部分:以函数调用关系为线索下面是函数之间调用关系的框图:第一章:start_kenel()->setup_arch()setup_arch(&command_line);每种体系结构都有自己的setup_arch() 函数,这些是体系结构相关的。
【如何确定编译那个体系结构的setup_arch() 函数呢?主要由linux 源码树顶层Makefile 中ARCH 变量来决定的。
例如:MIPS 体系结构的。
SUBARCH := mipsARCH ?= $(SUBARCH)】。
void __init setup_arch(char **cmdline_p){cpu_probe();调用函数cpu_probe(),该函数通过MIPS CPU的PRID寄存器来确定CPU类型,从而确定使用的指令集和其他一些CPU参数,如TLB等prom_init();prom_init() 函数是和硬件相关的,做一些低层的初始化,接受引导装载程序传给内核的参数,确定mips_machgroup,mips_machtype 这两个变量,这两个变量分别对应着相应的芯片组合开发板;cpu_report();打印cpu_probe() 函数检测到的CPU 的Processor ID。
(完整)linux基础教程
![(完整)linux基础教程](https://img.taocdn.com/s3/m/f9ba50db2b160b4e777fcf79.png)
安装Linux系统是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进行分区。虽然现在各种发行版本的Linux已经提供了友好的图形交互界面,但是很多人还是感觉无从下手。这其中的原因主要是不清楚Linux的分区规定。就好比如果我们了解了windows分区的规则,系统盘C、数据盘D等,就很好分区了。
安装图解如下:
第一步,新建虚拟机如下图:
第二步,选择相关选项,如下图:
第三步选择“稍后安装操作系统”,如下图:
第四步,选择客户机操作系统类型如下图:
第五步,设置虚拟机硬盘大小为20G,最低不能小于5G,如下图:
第六步,虚拟机新建完成,如下图:
第七步,修改虚拟机内存为512M,并添加ISO镜像,如下图:
我们了解linux由很多目录文件构成,那我们来学习第一个Linux命令:
cd命令,cd /home;解析:进入/home目录
cd /root进入/root目录;cd ../返回上一级目录;cd ./当前目录;(.和..可以理解为相对路径;例如cd /hom/test,cd加完整的路径,可以理解为绝对路径)
准。第一个字段由10个字符组成,如下:
[root@node1 ~]# ls -l monitor_log.sh
-rw-r--r-- 1 root root 91 May 7 20:21 monitor_log.sh
[root@node1 ~]#
linux驱动启动顺序
![linux驱动启动顺序](https://img.taocdn.com/s3/m/69e1793de3bd960590c69ec3d5bbfd0a7956d54c.png)
linux驱动启动顺序⾸先,我们可以查看Linux内核编译完成后的System.map⽂件,在这个⽂件中我们可以看到macb(dm9161驱动模块)链接到了dm9000驱动之前,如下所⽰:c03b6d40 t __initcall_tun_init6c03b6d44 t __initcall_macb_init6c03b6d48 t __initcall_dm9000_init6c03b6d4c t __initcall_ppp_init6c03b6d50 t __initcall_ppp_async_init6我尝试修改arch/arm/mach-at91/board-sam9260ek.c中DM9000和DM916设备添加的顺序,即先添加 dm9000,后添加dm9161。
编译后运⾏发现,结果还是⼀样。
⾃⼰想了想,这也在情理之中。
因为这个出现这个问题的主要原因是这两个驱动加载的先后顺序,⽽不是设备添加的先后顺序。
在Linux内核中维护着两个链,⼀个设备链,⼀个驱动链,他们两个就像情侣⼀样互相依赖,互相纠缠在⼀起的。
当我们新添加⼀个设备时,他会被加⼊到设备链上,这时内核这个红娘会就会到驱动链上给他找他的另外⼀半(驱动),看是否有哪个驱动看上了他(这个驱动是否⽀持这个设备),如果找到了这个驱动,那么设备就能够使⽤(⼤家纠缠到⼀块了,该⼲嘛就⼲嘛去了)。
⽽如果没有找到,那么设备就只能默默地在那⾥等待他的另⼀半的出现。
下⾯是arch/arm/mach-at91/board-sam9260ek.c添加设备的代码:static void __init ek_board_init(void){ /* Serial */at91_add_device_serial(); /* USB Host */at91_add_device_usbh(&ek_usbh_data); /* USB Device */at91_add_device_udc(&ek_udc_data); /* SPI */at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); /* NAND */ek_add_device_nand(); /* Ethernet */ ek_add_device_dm9000(); /* Add dm9000 driver by guowenxue, 2012.04.11 */at91_add_device_eth(&ek_macb_data); /* MMC */at91_add_device_mmc(0, &ek_mmc_data); /* I2C */at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices)); /* SSC (to AT73C213) */#if defined(CONFIG_SND_AT73C213) || defined(CONFIG_SND_AT73C213_MODULE)at73c213_set_clk(&at73c213_data); /* Modify by guowenxue, 2012.04.11 */#endifat91_add_device_ssc(AT91SAM9260_ID_SSC, ATMEL_SSC_TX);#if 0 /* comment by guowenxue */ /* LEDs */at91_gpio_leds(ek_leds, ARRAY_SIZE(ek_leds)); /* Push Buttons */ek_add_device_buttons();#endif}MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") /* Maintainer: Atmel */.timer = &at91sam926x_timer,.map_io = at91_map_io,.init_early = ek_init_early,.init_irq = at91_init_irq_default,.init_machine = ek_board_init,MACHINE_ENDMACHINE_START主要是定义了"struct machine_desc"的类型,放在 section(".init"),是初始化数据,Kernel 起来之后将被丢弃。
linux启动过程以及如何将进程加入开机自启
![linux启动过程以及如何将进程加入开机自启](https://img.taocdn.com/s3/m/5f7a1539905f804d2b160b4e767f5acfa1c7839b.png)
linux启动过程以及如何将进程加⼊开机⾃启linux 启动流程系统启动主要顺序就是:1. 加载内核2. 启动初始化进程3. 确定运⾏级别4. 加载开机启动程序5. ⽤户登录启动流程的具体细节可以看看Linux 的启动流程第4步加载启动程序其实是两步:1. init进程逐⼀加载开机启动程序,其实就是运⾏指定⽬录⾥的启动脚本。
2. 在运⾏完指定⽬录⾥⾯的程序后init进程还会去执⾏/etc/rc.local 这个脚本。
ps:“指定⽬录”是指在第3步中设置的运⾏级别对应的⽬录。
要完成我们的需求,我们使⽤第4步中的任意⼀种⽅式都可以。
⽅式⼀,chkconfig以supervisord服务脚本为例:#!/bin/sh#### /etc/rc.d/init.d/supervisord###supervisor is a client/server system that# allows its users to monitor and control a# number of processes on UNIX-like operating# systems.## chkconfig: - 6436# description: Supervisor Server# processname: supervisord# Source init functions. /etc/rc.d/init.d/functionsprog="supervisord"prefix="/usr/"exec_prefix="${prefix}"PIDFILE="/var/run/supervisord.pid"CONFIG="/etc/supervisord.conf"prog_bin="${exec_prefix}bin/supervisord -c $CONFIG "function log_success_msg() {echo"$@""[ OK ]"}function log_failure_msg() {echo"$@""[ OK ]"}start(){#echo -n $"Starting $prog: "#daemon $prog_bin --pidfile $PIDFILE#[ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog failed"#echoif [ ! -r $CONFIG ]; thenlog_failure_msg "config file doesn't exist (or you don't have permission to view)"exit 4fiif [ -e $PIDFILE ]; thenPID="$(pgrep -f $PIDFILE)"if test -n "$PID" && kill -0"$PID" &>/dev/null; then# If the status is SUCCESS then don't need to start again.log_failure_msg "$NAME process is running"exit 0fifilog_success_msg "Starting the process""$prog"daemon $prog_bin --pidfile $PIDFILElog_success_msg "$prog process was started"}stop(){echo -n $"Shutting down $prog: "[ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"echo}case"$1"instart)start;;stop)stop;;status)status $prog;;restart)stopstart;;*)echo"Usage: $0 {start|stop|restart|status}";;esacView Code第1步:把上⾯的脚本放在/etc/init.d/⽂件夹下。
计算机及Linux操作系统开机启动过程详解
![计算机及Linux操作系统开机启动过程详解](https://img.taocdn.com/s3/m/d19bf40c58eef8c75fbfc77da26925c52dc59158.png)
计算机及Linux操作系统开机启动过程详解从按下开机键开始的计算机启动过程:(主要包括从主板加载BIOS并执⾏、从磁盘加载启动区并执⾏、从磁盘加载操作系统并执⾏三步,是依次递进的,详情参阅)加载BIOS:按下开机键,主板ROM的BIOS被(被谁?)加载到到内存0xffff0处,CPU 将 PC 寄存器的值强制初始化为 0xffff0(⼀跳)。
执⾏BIOS代码:阶段1(0xffff0 处的内容):该⼊⼝地址处存的是⼀个跳转指令,跳转的⽬的地是内存0xfe05b位置,该位置存了BIOS的真正内容。
执⾏该跳转(⼆跳)。
阶段2(0xfe05b 处的内容):执⾏硬件检测、硬件初始化、建⽴中断向量表等⼯作后,找到磁盘上的启动区(或称引导区)加载到内存0x7c00位置,并跳转到该位置(三跳)。
执⾏启动区代码(0x7c00 处的内容):从磁盘加载OS内核到内存,与上⾯不同这⾥内存位置不是固定的了,并跳转到OS内核代码处(四跳)。
执⾏OS内核代码:包括开启分段机制、进⼊保护模式、开启中断机制等,执⾏完后系统由OS接⼿管理。
具体过程见下⽂“操作系统启动过程”部分。
整体过程概要:补充:BIOS位于主板ROM,启动时被加载到内存;启动区、OS位于磁盘,被先后加载到内存。
BIOS、启动区在内存的位置是固定的(为啥是这三个值?早期定死的);⽽OS在内存位置不是固定的。
启动区:若⼀个磁盘上0盘0道1扇区的内容(512B)的末两个字节为0x55、0xaa,则这该扇区会被BIOS识别为启动区,该磁盘会被当做可启动盘。
往⼀个磁盘烧录OS后之所以可以当做启动盘就是因为往该位置写⼊了这些特殊数据。
若装了多系统,则启动时会列出并让⽤户选择要启动的系统,这些系统就是根据上述条件被识别得到。
可见,⼀个程序只要其虚拟内存以0x7c00作为段地址,且按上述条件烧录到磁盘,则就可以被BIOS识别为启动区加载到内存执⾏。
因此,如果该程序逻辑中不是去加载OS⽽是直接输出数据,则该程序⾃⾝就是⼀个简洁的"操作系统"。
Linux操作系统启动流程图文详解
![Linux操作系统启动流程图文详解](https://img.taocdn.com/s3/m/6a061a5fe418964bcf84b9d528ea81c758f52ea7.png)
Linux操作系统启动流程图⽂详解理解Linux操作系统启动流程,能有助于后期在企业中更好的维护Linux服务器,能快速定位系统问题,进⽽解决问题。
上图为Linux操作系统启动流程1.加载BIOS计算机电源加电质检,⾸先加载基本输⼊输出系统(Basic Input Output System,BIOS),BIOS中包含硬件CPU、内存、硬盘等相关信息,包含设备启动顺序信息、硬盘信息、内存信息、时钟信息、即插即⽤(Plug-and-Play,PNP)特性等。
加载完BIOS信息,计算机将根据顺序进⾏启动。
2.读取MBR读取完BIOS信息,计算机将会查找BIOS所指定的硬盘MBR引导扇区,将其内容复制到0x7c00地址所在的物理内存中。
被复制到物理内存的内容是Boot Loader,然后进⾏引导。
3.GRUB引导GRUB启动引导器是计算机启动过程中运⾏的第⼀个软件程序,当计算机读取内存中的GRUB配置信息后,会根据其配置信息来启动硬盘中不同的操作系统。
4.加载Kernel计算机读取内存映像,并进⾏解压缩操作,屏幕⼀般会输出“Uncompressing Linux”的提⽰,当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
系统将解压后的内核放置在内存之中,并调⽤start_kernel()函数来启动⼀系列的初始化函数并初始化各种设备,完成Linux核⼼环境的建⽴。
5.设定Inittab运⾏等级内核加载完毕,会启动Linux操作系统第⼀个守护进程init,然后通过该进程读取/etc/inittab⽂件,/etc/inittab⽂件的作⽤是设定Linux的运⾏等级,Linux常见运⾏级别如下:•0:关机模式•1:单⽤户模式•2:⽆⽹络⽀持的多⽤户模式•3:字符界⾯多⽤户模式•4:保留,未使⽤模式•5:图像界⾯多⽤户模式•6:重新引导系统,重启模式6.加载rc.sysinit读取完运⾏级别,Linux系统执⾏的第⼀个⽤户层⽂件/etc/rc.d/rc.sysinit,该⽂件功能包括:设定PATH运⾏变量、设定⽹络配置、启动swap分区、设定/proc、系统函数、配置Selinux等。
简要分析linux系统的启动过程
![简要分析linux系统的启动过程](https://img.taocdn.com/s3/m/be71520db6360b4c2e3f5727a5e9856a561226c6.png)
简要分析linux系统的启动过程接触linux系统运维已经好⼏年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:⼀般来说,所有的操作系统的启动流程基本就是:总的来说,linux系统启动流程可以简单总结为以下⼏步:1)开机BIOS⾃检,加载硬盘。
2)读取MBR,进⾏MBR引导。
3)grub引导菜单(Boot Loader)。
4)加载内核kernel。
5)启动init进程,依据inittab⽂件设定运⾏级别6)init进程,执⾏rc.sysinit⽂件。
7)启动内核模块,执⾏不同级别的脚本程序。
8)执⾏/etc/rc.d/rc.local9)启动mingetty,进⼊系统登陆界⾯。
linux系统安装时,如果要想设置开启启动项,可以:开机到BIOS提醒界⾯,按键F11(Dell服务器的做法)进⼊BIOS设置BOOT MENU,继⽽设置启动项:硬盘HD启动,光盘CD/DVD启动,还是U盘USB启动。
下⾯就linux操作系统的启动过程做⼀详细解析记录:加载内核操作系统接管硬件以后,⾸先读⼊ /boot ⽬录下的内核⽂件。
[root@bastion-IDC ~]# ll /boot/total 21668-rw-r--r--. 1 root root 105195 Nov 22 2013 config-2.6.32-431.el6.x86_64drwxr-xr-x. 3 root root 1024 Aug 22 16:31 efidrwxr-xr-x. 2 root root 1024 Aug 22 16:32 grub-rw-------. 1 root root 15217153 Aug 22 16:32 initramfs-2.6.32-431.el6.x86_64.imgdrwx------. 2 root root 12288 Aug 22 16:24 lost+found-rw-r--r--. 1 root root 193758 Nov 22 2013 symvers-2.6.32-431.el6.x86_64.gz-rw-r--r--. 1 root root 2518236 Nov 22 2013 System.map-2.6.32-431.el6.x86_64-rwxr-xr-x. 1 root root 4128368 Nov 22 2013 vmlinuz-2.6.32-431.el6.x86_64启动初始化进程内核⽂件加载以后,就开始运⾏第⼀个程序 /sbin/init,它的作⽤是初始化系统环境。
linux启动顺序
![linux启动顺序](https://img.taocdn.com/s3/m/4105989d6529647d27285220.png)
一、简单介绍RHEL开机时的先后顺序BIOS —> MBR —> Kernel —> init1、当电脑一打开电源时电脑就会进入BIOS(BIOS的工作主要是检测一些硬件设备);2、检测完后会进入MBR也就是boot loader(MBR位于硬盘的第一个扇区总共512bytes,其中前446bytes里面的编码是在选择引导分区也就是决定要由哪个分区来引导);3、载入系统的Kernel(核心),在Kernel里主要是载入电脑设备的驱动程序,以便可以控制电脑上的设备,并且以只读方式来挂载根目录,也就是一开始只能读取到根目录所对应的那个分区,所以/etc、/bin、/sbin、/dev、/lib这五个目录必须同根目录在一个分区中;4、最后启动init这个程序,所以init这个程序的进程编号为1,是Linux中第一个执行的程序;init这个程序会根据Run level来执行以下这些程序:·/etc/rc.d/rc.sysinit;·/etc/rc.d/rc 和etc/rc.d/rc?.d/·/etc/rc.d/rc.local·如果有适当的图形界面管理程序二、BIOS初始化时主要的三个任务BIOS(B asic I nput/O utput S ystem)1、电脑周边设备的检测,加电自检POST (Power on self test);2、BIOS会选择要由哪一个设备来开机,例如:软盘启动、光盘启动、网络启动、最常见的从硬盘启动;3、选择好由哪个设备开机后,就开始读取这个设备的MBR 引导扇区;三、介绍Boot Loader中的主要工作1、Boot Loader可以安装在两个地方:·安装在硬盘的MBR中;·当有时候MBR中被其他开机管理程序占用就可以将Boot Loader 安装在硬盘中的其中一个分区的引导扇区上,;2、Boot Loader的程序码分为两个阶段:(1)Boot Loader第一阶段的程序码非常小,只有446bytes,可以存入在MBR或是某一个分区的引导扇区里,(2)Boot Loader第一阶段的程序码是从boot 分区来载入的,就是说Boot Loader 第二阶段程序码存放在/boot 这个分区中;3、下面来看三个Boot Loader 的开机流程范例,如在一块硬盘中安装了两个系统分别为:windows 2003 和Red hat linux当电脑开机后,会先载入MBR通过第一阶段程序码来载入第二阶段程序码,进入GRUB开机菜单这里选择哪个系统就会载入相应的核心;四、介绍GRUB和grub.conf 这个配置文件的内容其实从MBR载入Boot Loader开始,载入Kernel,载入init这些程序之间都是由GRUB这个多重开机管理程序所负责的。
CentOS系列--linux启动顺序
![CentOS系列--linux启动顺序](https://img.taocdn.com/s3/m/f13befcfa1c7aa00b52acb40.png)
系统加电之后,首先进行的硬件自检,然后是bootloader对系统的初始化,加载内核。
内核被加载到内存中之后,就开始执行了。
一旦内核启动运行,对硬件的检测就会决定需要对哪些设备驱动程序进行初始化。
从这里开始,内核就能够挂装根文件系统(这个过程类似于Windows识别并存取C盘的过程)。
内核挂装了根文件系统,并已初始化所有的设备驱动程序和数据结构等之后,就通过启动一个叫init的用户级程序,完成引导进程。
系统首先启动init进程,该进程先会执行/etc/rc.d/rc.sysinit,然后去读/etc/inittab文件决定运行模式,根据默认运行模式读取/etc/rc.d/rc $RUNLEVEL文件夹下的执行程序连接,这些文件以K或S开头,它们都是指向init.d/的一些软连接。
Init进程是系统启动之后的第一个用户进程,所以它的pid(进程编号)始终为1。
init进程上来首先做的事是去读取/etc/目录下inittab文件中initdefault id值,这个值称为运行级别(run-level)。
它决定了系统启动之后运行于什么级别。
运行级别决定了系统启动的绝大部分行为和目的。
这个级别从0到6 ,具有不同的功能。
不同的运行级定义如下:# 0 - 停机(千万别把initdefault设置为0,否则系统永远无法启动)# 1 - 单用户模式# 2 - 多用户,没有NFS# 3 - 完全多用户模式(标准的运行级)# 4 –系统保留的# 5 - X11 (x window)# 6 - 重新启动(千万不要把initdefault 设置为6,否则将一直在重启)rc.d的内容如下:init.d/ :各种服务器和程序的二进制文件存放目录。
rc $RUNLEVEL.d/: 各个启动级别的执行程序连接目录。
里头的东西都是指向init.d/的一些软连接。
具体的后边叙述。
还有三个脚本:rc.sysinit, rc, rc.local如图:redhat的启动方式和执行次序是:加载内核执行init程序/etc/rc.d/rc.sysinit # 由init执行的第一个脚本/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式/etc/rc.d/rc.local/sbin/mingetty # 等待用户登录在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括:调入keymap以及系统字体启动swapping设置主机名设置NIS域名检查(fsck)并mount文件系统打开quota装载声卡模块设置系统时钟等等。
Linux系统无显卡无显示器的启动
![Linux系统无显卡无显示器的启动](https://img.taocdn.com/s3/m/384d7337a32d7375a417806b.png)
Linux操作系统无显卡安装方式显卡安装方法:操作步骤:1、SBC上装上显卡,并启动安装程式2、安装linux系统并选择相应的安装包(选择lilo启动加载程式)如果安装时以GRUB方式加载的,需要在Grub.conf中将有关图像的语句屏蔽掉。
#splashimage=(hd0,0)/grub/splash.xpm.gz3、启动linux系统并修改文件A)在文件/etc/inittab中添加以下内容:co:2345:respawn:/sbin/agetty ttyS0 115200 vt100-nav此处的波特率115200 能根据Bios里面的选项设置。
不一定非要为115200。
我们刀片默认的波特率为9600。
不过实际使用时发现115200更顺畅些。
B)在文件/etc/lilo.conf中添加以下内容:serial=0append="console=tty0 console=ttyS0,115200n8"4、重新启动linux系统,显卡和串口都会显示启动信息,摘掉显卡,linux系统能启动,串口能进行常规操作。
串口安装方法:操作步骤:1、使另一台PC的串口和SBC的串口相连,并启动终极终端控制SBC的系统安装。
2、启动SBC并设置SBC的BIOSA)在终极终端窗口按F4进入BIOS.B)设置Advanced- >Remote Access Configuration- >Redirection after BIOS POST项的值为always.C)保存并启动BIOS。
3、从光驱启动,准备SBC安装,待终极终端有显示时,键入:linux text dd console=ttyS0,115200n84、安装linux系统并选择相应的安装包5、重新启动linux系统,串口能看到启动信息且linux系统启动成功。
6、使显卡能显示登录信息在终极终端下编辑文件/etc/inittab,去掉以下各行前的“#”号。
linux启动流程
![linux启动流程](https://img.taocdn.com/s3/m/88c4515a6529647d262852a5.png)
centos6启动流程•硬件启动阶段o Power on打开电源o BIOS▪POST: power on self test开机自检•初始化硬件设备,检测系统外围主要设备:cpu,memory,硬盘、显卡等▪确定启动设备•启动设备:硬盘、网络、U盘、光盘•如果启动设备是硬盘,则读取硬盘第一个扇区MBR,512字节•控制权交给bootloadero MBR▪MBR512字节• 1.446字节bootloadero启动加载器bootloader▪windows: ntloader仅仅启动os▪GRUB: GRand Unified Bootloader,CentOS 6 GRUB 0.97: GRUBLegacy, CentOS 7 以后使用GRUB 2.02• 2.64字节分区信息o16字节x4 partitions• 3.55aa标志位表示分区是否有效•grub启动阶段o stage1▪ 1.446字节bootloader•这是二进制的0101,写在MBR扇区的前446字节。
o单纯为了找到1.5阶段生成的bootloader上o stage1.5▪第一阶段446字节的bootloader无法存放内核位置,/boot/grub/grub.config里面有内核位置,但是/boot的文件系统需要加载,即想办法识别/boot的文件系统来读取config文件加载内核。
MBRbootloader太小无法容下文件系统的驱动代码,而且文件系统的类型有很多种,比如ext2 xfsext4 fat32等,MBRbootloader无法容下这么多种文件系统的驱动,所以,只能提供一个中间的过度bootloader即stage1_5 bootloader▪ 1.5阶段是MBR后面的分区,grub-install 时候,会将/boot/grub所在文件系统类型对应的stage1_5硬编码到MBR扇区后第一个分区前15个扇区中,因此这段空间位于MBR分区后,第一个分区之前。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2 Linux的启动流程
对于Redhat来说,执行的顺序为: /etc/rc.d/rc.sysinit 由init执行的第一脚本 /etc/rc.d/rc $RUNLEVEL init执行指定运行级别 ( $RUNLEVEL为缺省的运行模式)的各脚本;
• title—开机用户选择操作系统时,所能看到标题,选择 了相应的title后,将会执行该title到下一个title间所 有grub命令。如果是最后一段title,就一直执行到文件 结尾。当执行完每段title后grub会自动执行boot命令。
6.4 GRUB配置与管理
root (hd0,0) GRUB命令:root 作用:挂载boot目录所在的分区。
6.2 Linux的启动流程
• #ntsysv --level 1 --level指定修改哪个运行级别。
6.3 系统修复
• 当出现故障时,比如丢失管理员密码之类,我们可以进入 单用户模式进行修复。
• 进入单用户的方法很简单,在GRUB命令kernel后加入1或 者s即可。
• 修改完后按Enter,保存退出,并按b启动。
命令:kernel 作用:挂载Linux的内核映像文件。 /vmlinuz-2.4.22-3为Linux内核映像文件
单用户模式的作用: 在runlevel 1 的情况下,即单用户,在此模式下,本地用户不再需 要登录,将直接获得一个权限为root的shell。
每次发布init命令,都会读取inittab文件。
6.2 Linux的启动流程
可以使用init命令来调整运行级别,使用 runlevel命令来查看当前的运行级别。 # runlevel
etc/grub.conf是/boot/grub/grub.conf的软链接. 在Debain、ubuntu中用的配置文件的名字不是grub.conf,是
相同目录下的menu.lst . 在/boot/grub目录下还有一些其他GRUB工作所需的文件.
6.4 GRUB配置与管理
• #cat /boot/grub/grub.conf
#chkconfig --level 1 network on #chkconfig --list network network 0:off 1:on 2:off 3:on 4:on 5:on 6:off
大家会发现进入单用户有了网络,先前我们教的运行级别都是预 设的,通过修改这些,我们可以自己来进行控制。
6.1 BIOS的配置与Linux的启动
• BIOS掌握着系统的启动、部件之间的兼容和程序管理等多项重任。只 要按下电源开关启动主机后,BIOS就开始接管主板启动的所有自检工 作,系统首先由 POST (Power On SelfTest,上电自检) 程序来对内 部各个设备进行检查。
• 通常完整的POST自检将包括对CPU、基本内存、1MB以上的扩展内存、 ROM、主板、CMOS存储器、串并口、显示卡、软硬盘子系统及键盘进 行测试,一旦在自检中发现问题,系统将给出提示信息或鸣笛警告
hd0是根据/boot/grub/device.map所映射出来的。逗号后面的0就是 hda1的分区号1减1所得到的结果。 如果是(hd0,1),那么就是将结果hda2的分区号2减1所得到的结果。其余 依次类推。
6.4 GRUB配置与管理
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet
Linux培训系列 -Linux基础
system 05
第五章 Linux启动流程
6.1 BIOS的配置与Linux的启动 6.2 Linux启动流程 6.3 系统修复 6.4 GRUB配置与管理
本章说明
• 本章将讲解linux的启动引导过程,启动级 别,root密码修复,grub引导修复,lilo 引导原理,以及在系统出现故障时候的措 施。
• 如果是kernel文件给误删了,那就比较麻烦了,就要从其 它地方弄一个能用的kernel来,通过rescue模式拷贝进去。
• 解决方法:可以通过GRUB的命令行模式,手动引导开机或 者是采用前述的rescue方法。
6.4 GRUB配置与管理
• GRUB的简介 GRUB的主配置文件/boot/grub/grub.conf.在
• BIOS应该是连接软件程序与硬件设备的一座“桥梁”,负责解决硬件的 即时要求。
6.1 BIOS的配置与Linux的启动
固件的访问:
hwclock硬件时钟,实时时钟(RTC——Real TimeClock)和date 软件时钟 hwclock访问出来的结果被称为硬件时钟,是在CMOS里记录的一个时钟。 date命令的结果称为软件时钟,有Linux的内核进行维护的一个计秒器,我们 系统所有工作时间,全部都是依据软件时钟进行更新,但是开机时,软件时 钟需要先和硬件时钟同步一次。因为当重新引导或关闭后,软件时钟是存放 在RAM的,所有数据都将丢失。而hwclock会依靠CMOS依旧存在。 [root@ht root]# hwclock 2009年1月28日 星期二 20时1分9秒 -0.462361 seconds
--listቤተ መጻሕፍቲ ባይዱ显示 --level制定运行级别 name 服务名
6.2 Linux的启动流程
示例:
#chkconfig --list network network 0:off 1:off 2:off 3:on 4:on 5:on 6:off
network是服务名,后面0-6表示进入相应的运行级别后,该服务是开还 是关。
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.18-8.el5)
root (hd0,0) kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet initrd /initrd-2.6.18-8.el5.img
title Windows root (hd0,4) chainloader +1
6.4 GRUB配置与管理
• default—标示了当用户不做任何操作的情况下,将选择 哪一个操作系统。title依次编号,从0开始。
• timeout—GRUB将会等待用户作一些操作,如果超过了时 间,用户依旧没有动作,那么将自动进入default所指定 的那个操作系统。timeout的时间单位为秒。设置时间为1,表示无限等待,直到用户作出选择。
• 何为bootloader呢? “bootloader”这个术语是“bootstrap Operation System loader”的简称:
“自举操作系统载入器”。 何谓“自举”? 对于计算机来说,意味着使用少量的、独立的、内部的功能,从而初始化, 并将控制权转交给主操作系统。
6.1 BIOS的配置与Linux的启动
6.3 系统修复
• 当进入单用户后,便获得了一个权限为root的shell。这 时候便可以开始一些修复工作。 sh-2.05b#
• 出现该提示符就说明正常进入了linux的单用户模式。
6.3 系统修复
• 有时候,会出现更加严重的问题,甚至无法进行正常引 导,无法进入单用户模式。这个时候就要依靠linux的第 一张安装光盘来进行修复工作。将光盘放入光驱,将固件 调至用光盘引导。当画面出来后输入 linux rescue
N3
N表示先前的运行级别没有,当前为3 # init 5 启动图形界面 # runlevel
35 3表示先前的运行级别为3,当前为5。
# init 0 立刻关机 # init 6 立刻重启
6.2 Linux的启动流程
• chkconfig控制开启启动程序
chkconfig --list [name] chkconfig [--level <level>] <name> <on|off|reset> chkconfig的开关:on off reset
6.2 Linux的启动流程
在一个正在运行的Linux系统中,init是第一个可以存在的进程。 正因此,进程ID为1。
内核启动:内核载入后,创建第一个进程init并执行,由它创建 若干内核线程(包括检查和装入文件系统,启动守护进程等等),然 后装入并执行程序/sbin/init(变成一个用户进程)。
bootloader的种类,有许多,如:
System Commander 一个多重系统引导程序 NTLDR :windows用的引导程序 LILO :一个比较早期的Linux系统引导程序 GRUB (GRand Unified Bootloader) :一个时下非常流行的Linux引 导程序 GRUB优点:支持1024柱面以后的扇区的读取。安装,使用比LILO更为 灵活,方便,简单。
/etc/rc.d/rc.local 运行模式2、3、5时会运行的脚本 /sbin/mingetty(或getty ) 等待用户登录
6.2 Linux的启动流程
/etc/inittab中指定了系统的运行级别,init根据运行级别启动相关的 服务(一些后台进程),实现不同的功能。 运行级别的值为:0-6 0:halt , 1:单用户,2:多用户,3:多用户并启动NFS服务,4: 保留,5:运行xdm(Xwindow)以图形界面方式登录 6:reboot
[root@dgtraing root]# date 2009年 1月 28日 星期二 20:11:20 CST hwclock有2个常用参数: --systohw 把硬件时钟同步到软件时钟 --hwtosys 把软件时钟同步到硬件时钟