设为首页 收藏本站
查看: 615|回复: 0

[经验分享] 浅谈centos启动那点事儿

[复制链接]

尚未签到

发表于 2018-4-23 13:55:02 | 显示全部楼层 |阅读模式
  linux系统启动首先从BIOS开始检测硬件信息=》开始启动引导程序。读取MBR(磁盘上第0磁道第一个扇区)也就是Master Boot Record 即主引导记录。MBR记录了预启动信息和分区表信息。然后将grub(作用:设定内核映象在磁盘分区的位置)信息复制到内存中。为启动内核做准备。===》加载内核。内核初始化产生一个PID为1的init进程。
  ***这里需要注意的安装win+linux双系统。先安装w 然后linux。因为 win的引导程序会覆盖其它系统的引导程序。造成linux 的grub缺失,无法启动***

  由于内核运行起来是毫无用途的,需要一个系统能够定义,管理和控制init进程的行为,并负责组织和运行完成初始化的工作,从而让系统进入一个用户设定的运行模式中,这个系统就是init系统。
  init(为英语:initialization的简写)是 unix和 类Unix 系统中用来产生其它所有进程的程序。它以守护进程的方式存在,其进程号为1。Linux系统在开机时加载Linux内核后,便由Linux内核加载init程序,由init程序完成余下的开机过程。
  init 的运行方式历经: sysvinit  , upstart ,  systemd

  早期的linux系统的init运行方式兼容UNIX  system V(Unix系统的一个版本)下init运行方式。
  System V 下init的运行方式:
  System V init 检查 '/etc/inittab' 文件中是否含有 'initdefault' 项。 这告诉 init 系统是否有一个默认的运行。System V init  描述了 8中状态  。0-6 和S 或s .linux 设置了6各级别:#cat /etc/inittab

  # Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
  unix system v  默认是 3级别启动。 linux服务器大多版本默认是3级别。而桌面版本一般为5.(图形化界面)。如何查看 :   $ runlevel  或  $ who -r.
  Sysvinit 的优点是概念简单。Service 开发人员只需要编写启动和停止脚本,概念非常清楚;将 service 添加/删除到某个 runlevel 时,只需要执行一些创建/删除软连接文件的基本操作;这些都不需要学习额外的知识或特殊的定义语法(UpStart 和 Systemd 都需要用户学习新的定义系统初始化行为的语言)。
  其次,sysvinit 的另一个重要优点是确定的执行顺序:脚本严格按照启动数字的大小顺序执行,一个执行完毕再执行下一个,这非常有益于错误排查。UpStart 和 systemd 支持并发启动,导致没有人可以确定地了解具体的启动顺序,排错不易。
  2006年的时候Ubuntu 打算把系统用在笔记本上。最大的困境是:sysvinit 对移动设备(USB 设备的设备)的热插拔支持不够。于是开发了upstart 基于事件机制.比如 U 盘插入 USB 接口后,udev 得到内核通知,发现该设备,这就是一个新的事件。UpStart 在感知到该事件之后触发相应的等待任务,比如处理/etc/fstab 中存在的挂载点。采用这种事件驱动的模式,upstart 完美地解决了即插即用设备带来的新问题。UpStart采用了异步方式 可以:更快地启动系统;当新硬件被发现时动态启动服务;硬件被拔除时动态停止服务。这些特点使得 UpStart 可以很好地应用在桌面或者便携式系统中,处理这些系统中的动态硬件插拔特性。但是UPstart没有完全摆脱 runlevel机制。只是在兼容的基础上相应的优化了runlevel机制。

  为了减少系统启动时间,systemd 的目标是:尽可能启动更少的进程,尽可能将更多进程并行启动,减少了启动进程间的依赖。没有必要的进程可以在需要使用的时候才启动。此外systemd开创了新的管理体系。以前运行级别(runlevel)的概念被新的运行目标(target)所取代。target的命名体系类似于“multi-user.target"和原来的运行级别3(runlevel 3)相对应。在centos7中由于使用了新systemd管理机制。不再使用runlevel的概念,所以/etc/inittab不在被系统使用。
  centos7下systemd 管理体系理默认的target通过软链接来实现的。
  (由于版面的问题  把  inode值  属主属组和日期  删除)
[root@jf7 ~]# ll /etc/systemd/system/default.target
lrwxrwxrwx.    /etc/systemd/system/default.target -> /lib/systemd/system/multi-user.target

  如果想修改运行目标。只需要把这个软链接删除。软链接到新的运行目标。
  # rm -rf /etc/systemd/system/default.target
  # ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
  我们来查看下centos7下 /etc/inittab文件
  $ cat /etc/inittab
# inittab is no longer used when using systemd.
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
# systemd uses 'targets' instead of runlevels. By default, there are two main target
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
# To view current default target, run:
# systemctl get-default
# To set a default target, run:
# systemctl set-default TARGET.target
  很明确定义了新的target的位置:/usr/lib/systemd/system/ctrl-alt-del.target
  同样查看下: (由于版面的问题  把  inode值  属主属组和日期  删除)

  # ll /usr/lib/systemd/system/runlevel*
lrwxrwxrwx   /usr/lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx  /usr/lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx   /usr/lib/systemd/system/runlevel6.target -> reboot.target
  此外,systemd 管理体系还引入了 命令行工具systemctl。 systemctl  可以看作是service和chkconfig
  得组合体。不过不用担心。就的service命令在centos7下依旧可以使用,不过,它会重定向所有命令到新的systemctl 工具。
  几个例子:
  (sysvint)
  #service  network  start |stop |status
  #chkconfig httpd on
  ( systemclt)
  # systemctl start|stop|status network.service

  #systemctl  enable httpd.service
  目前: Ubuntu 15.04及后续版本在默认的init上都安装了 systemd.
  介绍完主流init系统后,开始继续启动系统。(centos7之前 PID 为1的进程是由 /sbin/init产生。而 centos7的PID为1的进程由 /usr/lib/systemd/systemd 产生。)

  BIOS - mbr  -grub  -加载内核到内存 - /etc/inittab- /etc/rc.d/rc.sysinit -启动内核模块/etc/modules.conf-启动指定级别下的脚本rcx.d-执行/etc/rc.d/rc.local -/bin/login
  虽然前面说了新的init系统的诸多好处:不过现在毕竟centos7的企业用户群体总体上不多。我们还是需要熟练掌握centos7一下的版本的启动。方便以后的管理。而且centos7 在命令层面上完全向下兼容。
  梳理了,开机启动流程。可以来些小的应用。
  比如:在/etc/rc.d/rc.local  里面挂载移动设备,添加个性化服务启动。如果,改阶段那个服务启动不了,导致。启动阻塞。是否可以先进入单用户模式,在/etc/rc.d/rc.local 文件下注释掉服务。待开机后在测试,修复呢?

  最主要的是。熟悉了开机启动后。可以根据开机的错误信息。排查是那个阶段出现的错误。比如系统一起重启。查看  /etc/inittab 是否设置了runlevel6模式。开机脚本错误是不是应该单用户进入系统排查。/etc/rc.d/rcx.d下面的脚本,必要是可以把S开头的脚本先改名为K 。待系统启动后在恢复。

  


  •   

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-450994-1-1.html 上篇帖子: CentOS 7 安装Mesos+Marathon+Zookeeper集群 下篇帖子: CentOS 7.2 自动安装光盘实验全过程记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表