Linux init
linux中init命令的详细解释

linux中init命令的详细解释linxu下的init命令是进程初始化工具。
下面由店铺为大家整理了linux的init命令的详细解释的相关知识,希望对大家有帮助!一、linux中的init命令的详细解释init命令init命令是Linux下的进程初始化工具,init进程是所有Linux的进程的父进程,它的进程号为1。
init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。
语法init(选项)(参数)选项-b:不执行相关脚本而直接进入单用户模式;-s:切换到单用户模式。
参数运行等级:指定Linux系统要切换到的运行等级。
二、linux中的init命令的详解实例几个常用的命令查看系统进程命令:ps -ef | head查看init的配置文件:more /etc/inittab查看系统当前运行的级别:runlevel运行级别到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。
这个级别从0到6 ,具有不同的功能。
你也可以在/etc/inittab中查看它的英文介绍。
#0 停机(千万不能把initdefault 设置为0)#1 单用户模式#2 多用户,没有 NFS(和级别3相似,会停止部分服务)#3 完全多用户模式#4 没有用到#5 x11(Xwindow)#6 重新启动(千万不要把initdefault 设置为6)三、linux的init命令的六种模式简介6种模式中有两种是系统内定的:0:停止系统运行。
init 0〈回车〉相当于 halt〈回车〉。
6:重启系统。
init 6〈回车〉相当于 reboot〈回车〉。
如果你了解/etc/inittab文件,就千万不要把0设为缺省登录模式,否则你的Linux的运行就只能两点一线了——开机←→停机,或者是开机←→重启的无限循环。
Linux终端中的系统关机和重启命令

Linux终端中的系统关机和重启命令Linux作为一种开源的操作系统,具有很高的灵活性和自定义性。
在使用Linux终端时,系统关机和重启是经常涉及到的操作。
本文将介绍Linux终端中常用的系统关机和重启命令,供用户参考和使用。
1. 关机命令在Linux终端中,通过使用特定的关机命令可以实现系统的安全关机,保证数据的完整性,避免出现数据丢失或损坏的情况。
下面是常用的关机命令及其用法:1.1. shutdown命令shutdown命令可实现系统的关机操作,并向所有登录用户发送关机通知。
命令格式如下:```shutdown [选项] 时间 [警告信息]```常用选项:- -r: 关机后立即重启系统- -h: 关机后不重启系统- -c: 取消已经设置的关机操作- -t seconds: 设置关机前的等待时间(以秒为单位)示例:```shutdown -h now # 立即关机shutdown -h +10 # 10分钟后关机shutdown -r 20:00 # 指定时间关机并重启shutdown -c # 取消当前关机操作```1.2. poweroff命令poweroff命令负责关闭电源,可以用来执行硬件完全关机,对电源断电。
命令格式如下:```poweroff```示例:```poweroff```1.3. halt命令halt命令用于停止系统运行,并使计算机进入停止状态。
命令格式如下:```halt```示例:```halt```1.4. init命令init命令用于改变系统的运行等级,其中运行等级0为关机状态,通常用init命令实现关机操作。
命令格式如下:```init [运行等级]```示例:```init 0```2. 重启命令有时候需要重启系统以应用修改或解决一些问题。
在Linux终端中,可以使用以下命令实现系统的重启:2.1. reboot命令reboot命令用于重启系统,它会关闭所有正在运行的进程,并重新引导计算机。
Linux关机命令详解

在linux下一些常用的关机/重启命令有shutdown、halt、reboot、及init,它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的,通过本文的介绍,希望你可以更加灵活的运用各种关机命令。
1.shutdownshutdown命令安全地将系统关机。
有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。
因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。
而在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。
并且login指令会被冻结﹐即新的用户不能再登录。
直接关机或者延迟一定的时间才关机都是可能的﹐还可能重启。
这是由所有进程〔process〕都会收到系统所送达的信号〔signal)决定的。
这让像vi之类的程序有时间储存目前正在编辑的文档﹐而像处理邮件〔mail〕和新闻〔news〕的程序则可以正常地离开等等。
shutdown执行它的工作是送信号〔signal〕给init程序﹐要求它改变runlevel。
Runlevel 0被用来停机〔halt〕﹐runlevel 6是用来重新激活〔reboot〕系统﹐而runlevel 1则是被用来让系统进入管理工作可以进行的状态﹔这是预设的﹐假定没有-h也没有-r参数给shutdown。
要想了解在停机〔halt〕或者重新开机〔reboot〕过程中做了哪些动作﹐你可以在这个文件/etc/inittab里看到这些runlevels相关的资料。
shutdown 参数说明:[-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。
[-r] 重启计算器。
[-k] 并不真正关机﹐只是送警告信号给每位登录者〔login〕。
[-h] 关机后关闭电源〔halt〕。
[-n] 不用init﹐而是自己来关机。
不鼓励使用这个选项﹐而且该选项所产生的后果往往不总是你所预期得到的。
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. 加载系统服务:启动初始化会加载并启动系统服务,比如网络服务、日志服务、时间同步服务等。
Linux关机命令分析

Linux关机命令分析linux下有关关机重启的命令主要有:shutdown、reboot、halt、poweroff、telinit、init。
它们都可以达到关机或重启的目的,但是每个命令的工作流程并不一样。
它们都由软件包sysvinit生成,你可以从网上下载它的源码来分析各个命令的流程,同时,sysvinit也包含了与登陆等有关的命令。
下面分析sysvinit-2.86软件包的源码,同时参考它们的手册来对它们深入了解。
1、从Makefile可以知道,上面的命令并不都是互相独立的,poweroff、reboot是halt 的链接,telinit是init的链接。
ln -sf halt $(ROOT)/sbin/rebootln -sf halt $(ROOT)/sbin/poweroffln -sf init $(ROOT)/sbin/telinit在终端输入# ls -l /sbin/poweroff# ls -l /sbin/reboot# ls -l /sbin/telinit也可以看到上面的结果。
2、halt。
参数说明:[-n] 防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。
[-w] 并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。
[-d] 不写wtmp纪录〔已包含在选项[-n]中〕。
[-f] 没有调用shutdown而强制关机或重启(halt/reboot)。
[-h] 使硬盘处于standby模式。
[-i] 关掉所有的网络接口。
[-p] 该选项为缺省选项。
就是关机时调用poweroff。
前面已经知道,poweroff、reboot是halt的链接,halt会首先判断用户执行的是否是poweroff和reboot中的一个。
如果执行的是poweroff,则等效于-p参数,执行reboot 的情况将在下面说明。
linux内核initrd文件自定义方法

linux内核initrd文件自定义方法重新编译内核后,可能加入了自定义的模块,就有可能需要修改init文件,而init文件就在initrd中,这里记录下操作步骤,以防遗忘。
1. cp /boot/initrd-3.2.img /tmp/mylinux/initrd-3.2.img.gz这里之所以进行改名,是因为initrd-3.2.img是经过gzip压缩过的,所以需要对其解压,但是gzip对解压的文件的文件后缀名又有要求,所以就先进行改名。
2. gunzip initrd-3.2.9.img.gz3. cpio -id < initrd-3.2.9.img经过以上三步,就在当前目录下解压了initrd文件,从而得到了init文件。
根据自己的需求修改init文件后,通过下面命令重新生成initrd文件。
4. find . | cpio -H newc -o | gzip -9 > /boot/initrd-3.2.9.img注意一下内容摘自网上资料,留作参考:en_init_cpio获取gen_init_cpio,工具,gen_init_cpio是编译内核时得到的,在内核源代码的usr 目录下,我们可以通过以下步骤获取它,进入内核源代码执行:# make menuconfig# make usr/这样即编译好gen_init_cpio,gen_initramfs_list.sh 在内核源代码的 script 目录下,将这两个文件 copy 到 /tmp 目录下,/tmp/initrd 为解压好的initrd 目录,执行以下命令制作initrd :#制作initrd :# gen_initramfs_list.sh initrd/ > filelist# gen_init_cpio filelist >initrd.img# gzip initrd.img# mv initrd.img initrd-'uname –r’.img只有用这个方式压缩的initrd ,在Linux系统重启的时候才能一正确的文件格式 boot 起来,也可以用这种方式修改安装光盘的initrd文件然后进行系统安装。
Linux系统后台启动过程

Linux 系统启动过程linux启动时我们会看到许多启动信息。
Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:内核的引导。
运行 init。
系统初始化。
建立终端 。
用户登录系统。
init程序的类型:SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。
内核引导当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
运行initinit 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。
init 程序首先是需要读取配置文件 /etc/inittab。
运行级别许多程序需要开机启动。
它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
init进程的一大任务,就是去运行这些开机启动的程序。
但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。
Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。
也就是说,启动时根据"运行级别",确定要运行哪些程序。
Linux系统有7个运行级别(runlevel):运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆运行级别2:多用户状态(没有NFS)运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式运行级别4:系统未使用,保留运行级别5:X11控制台,登陆后进入图形GUI模式运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动系统初始化在init的配置文件中有这么一行: si::sysinit:/etc/rc.d/rc.sysinit 它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit 是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。
linux init级别

Linux的init级别是用来定义系统启动时运行的服务和操作系统的行为。
init是Linux系统的第一个进程,它的主要任务是运行用户级别的应用程序,并在需要时以不同的运行级别(runlevel)来改变系统的运行状态。
Linux的init级别有以下几种:
•0:停机(千万不能把initdefault设置为0,系统默认运行级别不能设为0,否则不能正常启动)。
•1:单用户模式(root权限,用于系统维护,禁止远程登陆)。
•2:多用户状态(没有NFS)。
•3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式。
•4:系统未使用,保留。
•5:X11控制台,登陆后进入图形GUI模式。
•6:系统正常关闭并重启。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux文件系统启动过程及login的实现
1.busybox简介
busybox是一个集成了一百多个最常用linux命令和工具的软件,它将许多常用的LINUX 命令和工具结合到了一个单独的可执行程序中。
虽然与相应的GNU工具比较起来,busybox 所提供的功能和参数略少,但在比较小的系统(例如启动盘)或者嵌入式系统中,已经足够了。
busybox在设计上就充分考虑了硬件资源受限的特殊工作环境。
它采用一种很巧妙的办法减少自己的体积:所有的命令都通过“插件”的方式集中到一个可执行文件中,在实际应用过程中通过不同的符号链接来确定到底要执行哪个操作。
例如最终生成的可执行文件为busybox,当为它建立一个符号链接ls的时候,就可以通过执行这个新命令实现列目录的功能。
采用单一执行文件的方式最大限度地共享了程序代码,甚至连文件头、内存中的程序控制块等其他操作系统资源都共享了,对于资源比较紧张的系统来说,是最合适不过了。
Busybox配置如下:
编译make TARGET_ARCH=arm,生成的目标代码位于_install目录下。
2.文件系统启动过程
Linux的启动过程主要分成两个阶段:
1.启动内核。
在这个阶段,内核装入内存并在初始化每个设备驱动器时打印信息。
2.执行程序init。
装入内核并初始化设备后,运行init程序。
init程序处理所有程序的启动,包括重要系统程序和其它指定在启动时装入的软件。
现在主要详细介绍一下文件系统的启动过程,即linux启动过程的第二阶段,大概分为以下几个过程:
(1)运行init
init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,linux在完成核内引导以后,就开始运行init程序。
init程序需要读取配置文件/etc/inittab,以查看下一步做什么。
inittab是一个不可执行的文本文件,它有若干行指令所组成,告诉 init 要进入什么运行级别,以及在哪里可以找到该运行级别的配置文件。
以下是qsan的inittab 文件(部分注释省略):
以上面的inittab文件为例,来说明一下inittab的格式。
其中以#开始的行是注释行,除了注释行之外,每一行都有以下格式:
id:runlevel:action:process
id –入口标识符,用于标识文件/etc/inittab中的每一个登记项。
它是一个1-4位的字符串,对于getty或mingetty等其他login程序项,要求id与tty的编号相同,否则getty程序将不能正常工作。
runlevel–运行级。
说明该登记项适用于哪一个运行级。
为空表示适用于所有级别.它是init所处于的运行级别标识,一般使用0-6以及S或s。
0、1、6运行级别被系统保留。
0作为halt动作,1作为重启至单用户模式,6为重启。
S和s意义相同,表示单用户模式,且无需inittab文件,因此也不在inittab中出现,实际上,进入单用户模式时,init直接在控制台(/dev/console)上运行/sbin/sulogin。
runlevel可以是并列的多个值,以匹配多个运行级别,对大多数action来说,仅当runlevel与当前运行级别匹配成功才会执行。
action–定义init命令应该向进程实施什么动作。
包括以下:
respawn-无论何时它终止,均重新启动命令
wait-运行命令一次。
在继续之前,init等待它终止
once-运行命令一次
boot-命令在启动过程中运行。
忽略运行等级字段
bootwait-命令在启动过程中运行,忽略运行等级字段。
在继续之前,init等待该进程终止initdefault-定义Linux系统的默认运行等级
powerwait-停电时命令运行。
在继续之前,init等待该进程终止
powerfail-停电时命令运行。
在继续之前,init不等待该进程终止
powerokwait-恢复电力时命令运行。
在继续之前,init等待该进程终止
powerfailnow-UPS发出电池即将耗尽的信号时,运行该命令
process - 是具体的执行程序。
程序后面可以带参数。
(2)系统初始化
sysinit、boot、bootwait等action将在系统启动时无条件运行,而忽略其中的runlevel。
因此init进程首先会执行etc/init.d/rcS脚本,rcS内容如下:
(3)启动对应运行级别的守护进程
返回/inittab,接下来根据系统进入的运行级别,启动对应运行级别的守护进程,这里为4,init将执行配置文件inittab中的以下这行:
l4:4:wait:/etc/init.d/rc 4
这一行表示以4为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个Shell脚本,它接受4作为参数,去执行/etc/rc.d/rc4.d/目录下的所有的rc启动脚本,/etc/rc.d/rc4.d/目录中的这些启动脚本实际上都是一些链接文件,而不是真正的rc启动脚本,真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。
而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。
/etc/rc.d/rc4.d/中的rc启动脚本通常是K或S开头的链接文件,对于以S开头的启动脚本,将以start参数来运行。
而如果发现存在相应的脚本也存在K打头的链接,而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志),则将首先以stop为参数停止这些已经启动了的守护进程,然后再重新运行。
这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。
(4)建立终端
rc执行完毕后,返回init。
这时基本系统环境已经设置好了,各种守护进程也已经启动了。
init接下来会打开终端,以便用户登录系统,如以下2行:
T0:134:respawn:/sbin/getty -L ttyS0 115200 vt100
T1:1:respawn:/sbin/getty -L ttyS1 115200 vt100
从上面可以看出在1、3、4的运行级别中将以respawn方式运行getty程序,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户名将作为参数传给login程序来验证用户的身份。
注意:如果想绕过登录验证过程,想直接进入shell界面的话,则把以上两行注释掉,改为:T0:134:respawn:/bin/sh
(5)登录系统,启动完成
getty进程接收到用户名后,启动login进程.
login进程要求用户输入口令.
用户输入口令.
login进程对username和password进行检查.
login启动shell进程.
shell进程根据/etc/password中的shell类型,启动相应的shell.并启动/etc/profile文件和$HOME/.bash_profile文件.最后出现shell提示符,等待用户输入命令.
至此,启动过程结束。
3.login验证过程
Linux的帐号验证程序是login,login会接收getty传来的用户名作为用户名参数。
然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login 将输出nologin文件的内容,然后退出。
这通常用来系统维护时防止非root用户登录。
只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root 可以在任何终端上登录。
/etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,则没有其他限制。
在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置帐户的其它信息,比如:主目录是什么、使用何种shell。
如果没有指定主目录,将默认为根目录;如果没有指定shell,将默认为/bin/bash。
login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog 中有记录),并检查用户是否有新邮件(在/usr/spool/mail/的对应用户名目录下)。
然后开始设置各种环境变量:对于bash来说,系统首先寻找/etc/profile脚本文件,并执行它;然后如果用户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其它配置文件,所有的配置文件执行后,各种环境变量也设好了,这时会出现大家熟悉的命令行提示符,到此整个启动过程就结束了。
以下是passwd,shadow和group脚本的格式说明:
注:一个最简单的文件系统至少需要包含以下几个目录,/sbin,/bin,/dev(需要console 和ttyS0两个文件),/proc,/etc(需要inittab,rcS文件),/home.。