Linux启动过程-1

  • 28
  • 1,220 views
  • A+
所属分类:Notes

Linux启动过程

按下电源之后进行固件自检(CMOS) GRUB/LILO载入内核initinittab

Linux启动过程-1

修改CentOS 5/6的引导配置文件(修改启动界面等待时间、默认使用的内核等参数),vim /etc/grub.conf

修改CentOS 5/6的init配置文件(修改默认使用的运行级别),vim /etc/inittab

查看当前运行级别:直接执行runlevel

Linux的7种运行级别:0,1,2,3,4,5,6

请不要设置运行级别为0或者6,否则就如同我们运行init 0和init 6来关机和重启系统一样,系统会进入死循环。

Linux启动过程-1

运行级别:

0关机,等同于init 0

1单用户模式,等同于windoiws的安全模式

2多用户模式,但不启动NFS服务

3多用户模式,一般我们都是用这个模式

4暂时没有使用,你可以自己定制,然后设置为默认模式,例如一些智能设备提供商可能就会自己定制一些应用,然后用模式4来启动定制的Linux。

5图形界面模式

6

重启,等同于init 6或者reboot

Linux启动过程-1

查看进程列表ps -le | more

Linux启动过程-1

CentOS7下的inittab已经不再使用,具体使用方法可阅读该文件中的说明。

其他知识点:

查看系统时间date

从互联网同步时间给操作系统 ntpdate time.windows.com

从硬件(主板)同步时间给操作系统hwclock -s

从操作系统同步时间给硬件(主板)hwclock -w

更多操作请hwclock --help

手动设置操作系统的时间 date ‘传参数’,具体使用请man date

总结一下Linux的启动过程:

Linux启动过程-1

练习:

Linux启动过程-1

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:28   其中:访客  28   博主  0

    • ag

      grub配置文件真正保存位置是/boot/grub.conf中,/etc/grub.conf只是一个软连接,内核等文件都是在/boot下,/boot目录需要备份。
      grub里的参数:
      default是定义默认启动的操作系统;
      timeout定义启动界面上的倒计时时间;

      splashimage定义启动界面的图片;
      注意:
      splashimage配置中的(hd0,0)表示第一块硬盘的第一个分区。
      实际上启动界面上的背景图片的存储位置是/boot/grub,所以此处的(hd0,0)其实表示/boot分区。
      背景图片的分辨率最好是640*480,色深最好是14.
      可以使用命令concert进行图片的转换,如果使用分辨率非常高的图片,由于启动界面时显卡还没有加载,有可能变成漆黑一片。

      hiddenmenu掩藏启动界面上的多操作系统选择菜单;
      title定义启动界面的抬头描述;
      root定义了根设备,也就是/boot所在的分区;
      kernel定义了内核在上述分区中的具体位置;
      initrd表示载入镜像文件。

        • ag

          @ag grub快捷键:
          启动界面按e进入编辑行模式,选择kernel行,再次按e,在新界面的最后一行输入1或者s,即可进入单用户模式。之后可进行系统修复、重置密码等操作。

            • ag

              @ag c直接进入grub的命令行模式;
              b表示启动当前菜单项;
              d表示删除当前行;
              esc可以返回启动界面,取消刚才所做的任何修改。

              • ag

                @ag 按e之后显示的第一个界面就是grub.conf里的最后三行配置。

                  • ag

                    @ag 选择kernel所在的行,之后输入空格加【0~6】,之后回车可以进入对应的运行级别。单用户模式只有root登录系统并且不需要密码。

                      • ag

                        @ag 单用户模式如果你坐在电脑面前,就可以进行任何操作,但是服务器所在的机房、一般人无法靠近。
                        如果是自己的电脑,我们可以给grub设置一个密码,这样即便别人在电脑面前,系统启动的时候也要先输入密码才能进入单用户模式。
                        设置grub密码的方式有两种,一种是在安装系统的时候就设置,一种是使用命令grub-md5-crypt设置加密的密码或者直接敲md5crypt也能设置grub的密码,然后vi /etc/grub.conf并将上述操作产生的加密按下面的格式插入到title和spashimage中间(必须在此位置才能进行全局设置!!)。
                        例如:
                        password –md5 ¥%¥USDHSGJSsdfsdfdsf85866877

                      • ag

                        @ag 如果/etc/grub.conf配置有错误,则系统启动过程中可能卡住报错或者直接进入grub命令界面,如果没有进入命令界面,可以按c进入命令模式,然后cat /grub/grub.conf文件看下配置有没有问题。
                        注意此处是cat /grub/grub.conf,而不是/boot目录!!!
                        如果配置文件有问题,人工参照grub.conf文件录入信息,引导系统启动先。
                        录入如下四行即可引导系统启动:
                        root (hd0,0)
                        kernel …… ro root=LABEL=/ 3(参照cat出来的内容,纠正其中不正确的内容,注意用tab键补全输入信息,以免输入错误!!)
                        initrd ……
                        boot

                          • ag

                            @ag 如果grub没问题,但后续出问题了,则只能考虑使用安装光盘进行linux rescue,操作方法是插入安装光盘,然后设置CMOS启动的时候从光盘引导,然后在安装Linux界面按【F5】,然后在命令行中输入linux rescue,接下来见机行事(注意,程序在提示将要挂载原来的系统到/mnt/sysimage上这一步的时候,需要选择continue)。

                              • ag

                                @ag 实际工作中,当你已经在服务器旁边的时候,如果grub进不去,那么就尝试rescue模式吧。rescue模式相当于Windows选的windowsPE模式,进入之后按照提示,哪里有问题修复哪里就好了。
                                安装界面选择【rescue】,然后输入linux rescue,然后一直continue,最后输入chroot /mnt/sysimage进入要修复的系统的命令行中进行操作,操作完毕exit,重启即可。
                                第一次重启有可能失败,有可能要重启多次!!

                      • ag

                        父进程死了,子进程叫孤儿进程,子进程会被init进程接管;
                        子进程死了,父进程叫僵尸进程。

                        • ag

                          firmware -> boorloader -> kernel -> init -> /etc/inittab -> initdefault -> /etc/rc.d/rc.sysinit -> /etc/rc.d/rc -> /etc/rc.d/rcN.d(N=0到6) -> username/password登录系统 -> login.

                            • ag

                              @ag firmware例如pc的cmos和bios

                              • ag

                                @ag linux的bootloader主要有lilo、grub两种。

                                • ag

                                  @ag /etc/inittab主要是控制运行级别的,centos7中已经不采用此配置文件。

                                  • ag

                                    @ag /etc/rc.d/rcN.d中显示有6个tty(终端),按【ctrl + alt + F1~F6】进行切换,虚拟机中需要专门设置快捷键才行。

                                      • ag

                                        @ag 显示当前在哪个终端执行命令:tty
                                        回到图形界面:【ctrl + alt + F7】

                                        • ag

                                          @ag /etc/rc.d/rcN.d的脚本是对应启动模式下的启动脚本及关闭脚本,以大写K开头的表示关闭,以大写S开头的表示开启,如果不想某个服务开启,只需要删除或者重命名对应的脚本就行了。例如:S25mysql表示第25个启动的服务是MySQL服务。

                                          • ag

                                            @ag /etc/rc3.d其实是/etc/rc.d/rc3.d的软连接,但是商用UNIX则一般没有这个软连接,而是直接放在/etc/rc3.d下,所以控制启动项建议在/etc/rc3.d里边做。

                                            • ag

                                              @ag /etc/rc.d/init.d包含了各种运行级别的启动服务,如果想手工启动或者关闭某个服务,只需要在该目录下找到对应的服务,直接执行/etc/rc.d/init.d/服务,例如/etc/rc.d/init.d/sshd,系统会告诉你脚本的输入参数。
                                              例如:
                                              /etc/rc.d/init.d/sshd restart

                                                • ag

                                                  @ag 这些文件都是shell脚本,可以cat简单看一下里边的内容。

                                                    • ag

                                                      @ag ls -l /etc/rc.d/rc5.d会发现里边的文件都是软连接,都是链接到/etc/rc.d/init.d目录下的shell脚本。

                                                      • ag

                                                        @ag 如果要设置某个服务在linux启动的时候自动启动,通常用四种方法:
                                                        1.在/etc/rc.d/init.d/下创建一个对应的shell,然后ln -s /etc/rc.d/init.d/shellName /etc/rc.d/rcN.d/S100shellName;(表示rcN.d下第100个启动的脚本是shellName)
                                                        2.chkconfig httpd 2345 on;
                                                        chkconfig –list mysql
                                                        chkconfig –add mysql;
                                                        chkconfig –del mysql;
                                                        chkconfig –levels sshd off;
                                                        3.直接在/etc/rc.d/rcN.d里边将对应的某个服务move成小写s开头的就行了(系统启动时只识别大写K和S开头的启动项);
                                                        4.ntsysv,进入命令模式的图形界面控制启动项目。
                                                        ntsysv直接执行,设置的是当前运行级别的启动项;
                                                        ntsysv –level 5,设置的是运行级别5的启动项(按空格选中,显示星号表示自动启动,空白表示不启动,按TAB键切换操作位置);

                                                          • ag

                                                            @ag 如果没有ntsysv或者chkconfig,用方法1.

                                                        • ag

                                                          @ag dmesg显示启动过程中显示的信息,录入现在添加了一块硬盘,系统启动之后无法使用,可以dmesg看下是否报错(驱动不存在、不支持等)。
                                                          查看需要的信息:
                                                          dmesg | grep eth0
                                                          dmesg | grep httpd
                                                          dmesg | grep sda

                                                            • ag

                                                              @ag Linux里所有的标准日志文件都是在/var/log下,标准的日志文件是/var/log/messages文件,该文件存储了linux运行过程中的大多数日志信息,如果执行某个服务不正确,可以查看此文件。
                                                              grep syslog /vat/log/messages

                                                        • ag

                                                          @ag grub最主要的作用就是选择载入哪个内核。

                                                        • ag

                                                          内核可执行文件存放在/boot下,源代码(如果安装了源代码)在/var/lib/linux下,下载内核https://www.kernel.org/

                                                          • ag

                                                            查看进程树的方式:pstree
                                                            需要安装psmisc软件包:yum install psmisc