• linux如何实现开机启动程序详解(linux开机运行)

  • 作者:robot | 时间:2022-10-03 05:38:14 | 浏览:
linux如何实现开机启动程序详解,linux开机运行

内容导航:
  • Linux如何启动流程Linux启动流程详解
  • 怎样使Linux一开机就进入命令
  • linux实现daemon程序步骤有哪些呢
  • 一、Linux如何启动流程Linux启动流程详解

    当用户打开电源后,BIOS开机自检,确定启动设备,安装启动设备,启动设备上面安装的GRUB开始引导Linux,Linux首先先进行内核引导,通过跟切换,执行init程序,init程序确定启动级别,根据启动级别进行系统初始化和运行的服务,然后返回init启动终端,用户通过验证成功登陆Shell,这就是一个从开机到登陆的启动过程。一、硬件引导启动当用户打开电源后POST开始自检,检测硬件设备是否确实或者存在故障(是否影响正常开机),如果不影响正常开机,就把任务交给BIOS。BIOS通过搜索,安装启动确定启动设备,启动项为硬盘,BIOS去读取硬盘的前512字节到内存,找到BootLoader,确定GRUB二、GRUB引导启动内核这一部分概况起来就是:GRUB程序加载执行并开始引导kernel程序Boot Loader就是在操作系统内核运行之前运行的一小段程序。通过GRUB引导可以确定内核程序,因为引导扇区只有446字节,GRUB只是一个小的程序安装在里面,真正使用的在MBR后面的扇区存放,我们想使用Bootloader GRUB功能必须读取后面的文件,Bootloader GRUB功能程序的运行和加载配置选项分为三个阶段Stage1阶段:Stage1阶段其实就是执行系统安装时预先写入到MBR的Bootloader中的程序。Stage1阶段的任务仅是将硬盘0柱面0磁道2扇区的内容读入内存并执行,它是Stage1.5阶段或Stage2阶段的入口,引导进入Stage1.5阶段或Stage2阶段。 在此Stage1阶段,还没有识别文件系统的能力。Stage1.5阶段:stage1.5阶段是stage1阶段和stage2阶段的中间桥梁。stage1.5阶段具有识别启动分区文件系统的能力,此后GRUB程序便有能力去访问/boot分区下/grub目录下的 stage2文件,并将stage2载入内存执行。Stage2阶段Stage2阶段执行时,首先会解析GRUB程序的配置文件,并依配置文件决定是否显示系统启动菜单。然后加载内核镜像到内存中,通过initrd程序建立RAMDisk内存虚拟根文件系统。此时控制权将转交给内核程序。三、内核引导启动这一部分主要是通过在内存中建立虚拟根文件系统实现相关设备的驱动并建立和切换到真正的根文件系统。解压内核镜像加载到内存,以及initrd程序建立RAMDisk内存虚拟根文件系统后,内核开始驱动基本硬件,并调用虚拟根文件系统中的init程序加载驱动模块初始化系统中各种设备的相关配置工作,其中包括CPU、I/O、存储设备等。当所需的驱动程序加载完后,会根据配置文件中“root=XXX”部分所指定的内容创建一个根设备,然后将根文件系统以只读的方式挂载,并切换到真正的根文件系统上,同时调用系统进程的/sbin/init程序,进入系统初始化阶段。四、系统初始化这一步是通过/sbin/init,init程序准备软件运行坏境,启动系统服务通过/etc/inittab文件确定运行级别,然后去执行系统初始化脚本/etc/,为用户初始化用户空间环境,在完成初始化后,根据运行级别,系统开始对应级别的目录启动服务,关闭那些不要的服务(里面S99local -> ../)用户自动服务启动脚本运行级别:为系统运行或维护等目的而设定;0-6:7个级别0:关机1:单用户模式(root自动登录), single, 维护模式2: 多用户模式,启动网络功能,但不会启动NFS;维护模式3:多用户模式,正常模式;文本界面4:预留级别;可同3级别5:多用户模式,正常模式;图形界面6:重启默认级别:3, 5切换级别:init #查看级别:runlevel ; who -r五、启动终端,用户登录这一步是用户登录shell过程如果没有改变级别,默认情况执行/sbin/mingetty打开6个纯文本终端,让用户输入用户名和密码。输入完成后,再调用login程序,核对密码。如果密码正确,就从文件 /etc/passwd 读取该用户指定的shell,然后启动这个shell。更多Linux介绍请查看《Linux就该这么学》。

    二、怎样使Linux一开机就进入命令

    需要设置linux的启动模式。
    1. 编辑文件/etc/inittab2. 找到这一行 id:5:initdefault 改为 id:3:initdefault3. 保存退出。
    下次启动就直接进入命令行界面了。
    改动的这个数值就是linux启动运行级别,取0~6,各级别意义如下: 0 - 停机,关闭机器。
    1 - 单用户模式,类似win的安全模式。
    2 - 多用户模式,但是没有NFS支持。
    3 - 完全多用户模式,标准运行模式。
    4 - 没有用到,一般不用,在一些特殊情况下可以用它来做一些事情。
    5 - X11,启动进入X系统的图形界面。
    6 - 重新启动,在命令行执行init 6就会重启。
    一般情况下,都是在3和5之间选择。
    以root的身份登陆,然后执行:

    cd /etc

    vi inittab

    更改"id:5:initdefault:"语句即可。

    其中5表示默认图形启动界面
    3表示默认文字启动界面
    注:在启动之后,还可以通过下面的语句进行切换:

    init n

    如果在图形界面下,输入#init 3,则进入文字界面。

    如果在图形界面下,输入#init 5,则进入文字界面。以root的身份登陆,然后执行:

    cd /etc

    vi inittab

    更改"id:5:initdefault:"语句即可。

    其中5表示默认图形启动界面
    3表示默认文字启动界面
    注:在启动之后,还可以通过下面的语句进行切换:

    init n

    如果在图形界面下,输入#init 3,则进入文字界面。

    如果在图形界面下,输入#init 5,则进入文字界面。

    如果你想了解更详细内容,建议看看刘遄老师的另外就是刘遄老师的《linux就该这么学》,书籍当中有详细的描述;以root的身份登陆,然后执行:

    cd /etc

    vi inittab

    更改"id:5:initdefault:"语句即可。

    其中5表示默认图形启动界面
    3表示默认文字启动界面
    注:在启动之后,还可以通过下面的语句进行切换:

    init n

    如果在图形界面下,输入#init 3,则进入文字界面。

    如果在图形界面下,输入#init 5,则进入文字界面。你现在登录的是普通用户权限有限,所以你要更改文件的话就要用root用户。
    可以在这个终端下输入 su root 然后在root用户下输入 vi /etc/inittab找到id:5:initdefault: 这行在案下 i 进入编辑界面把5改成3就行了,然后保存退出esc :wq
    这样重启之后就是命令行界面了

    三、linux实现daemon程序步骤有哪些呢

    答:1、首先是程序运行后调用fork,并让父进程退出。子进程获得一个新的进程ID,但继承了父进程的进程组ID。2、调用setsid创建一个新的session,使自己成为新session和新进程组的leader,并使进程没有控制终端(tty)。3、改变当前工作目录至根目录,以免影响可加载文件系统。或者也可以改变到某些特定的目录。4、设置文件创建mask为0,避免创建文件时权限的影响。5、关闭不需要的打开文件描述符。因为Daemon程序在后台执行,不需要于终端交互,通常就关闭STDIN、STDOUT和STDERR。其它根据实际情况处理。另一个问题是Daemon程序不能和终端交互,也就无法使用printf方法输出信息了。我们可以使用syslog机制来实现信息的输出,方便程序的调试。在使用syslog前需要首先启动syslogd程序,关于syslogd程序的使用请参考它的manpage,或相关文档,我们就不在这里讨论了。四、一个Daemon程序的例子编译运行环境为RedhatLinux8.0。