grub2和systemd

author author     2022-08-17     263

关键词:

  centos7全面升级了引导程序和系统管理程序,使用grub2替代了grub来引导操作系统,使用systemd替换了init管理系统程序,systemd的升级比较激进,从架构上变更init管理程序。微服务docker却希望使用docker domean管理微服务中的进程,这是一个问题。

grub2

  grub2grub之间区别主要是grub2把引导模块化了,每个驱动一个模块放置在/boot/grub2/i386-pc/目录下了。一次centos7的引导流程:post->grub2(mbr->第一个分区内部的数据->/boot/grub2/i386-pc中的驱动)->systemdgrub2的两个重要命令命令:

grub2-install --root-directory=/DIR /dev/SD*

  1. 假如有--root-directory=/DIR,就会在/DIR目录下创建/boot/grub2,并且会把*.mod*.lst*.img /usr/lib/grub/i386-pc/ 目录复制到/DIR/boot/grub2

  2. boot.img写入MBR中,把core.img写进设备的第一个扇区。

grub2-mkconfig -o /DIR

会把boot目录下的内核文件和initramfs文件对应组合起来,生成引导项。写入/DIR目录下的grub.cfg

制作一个由grub2引导的磁盘

  1. 添加一个新的硬盘到centos7

  2. 硬盘分区

fdisk /dev/sdc <<eof
n
p
1
2048
 
w
eof
  1. 格式化分区mkfs.xfs /dev/sdc1,这个分区类型取决你的系统采用的根分区类型,主要是因为想减少我们对grub.cfg文件的更改,减少定制防止出错。

  2. mount /dev/sdc1 /mnt挂载sdc1分区

  3. grub2-install--root-directory=/mnt /dev/sdc安装grub2sdc

  4. cd /boot

  5. cp vmlinuz-3.10.0-327.el7.x86_64initramfs-3.10.0-327.el7.x86_64.img /mnt/boot/复制内核和initramfs

  6. cp grub2/grub.cfg /mnt/boot/grub2复制grub.cfg文件到sdc

  7. vim /mnt/boot/grub2/grub.cfg更改第一次linux16为以下格式

linux16 /boot/vmlinuz-3.10.0-327.el7.x86_64 root=/dev/sda1rw init=/bin/bash selinux=0

  1. 移植一些命令,这里我写了一个脚本,写在附件里。mvcomm.sh

mvcomm.sh <<eof
> vim
> bash
> cat
> halt
> mv
> cp
> q
> eof
  1. umount /mnt这一步就完成了对新磁盘的创建,就可以移植到其它虚拟机内使用了。

systemd

  init内有一个xinet程序,大家应该知道它的功能吧,帮助telnettftp等等进程监听端口。systemd就不需要这个进程了,因为它的运行模式很类似xinet,并且很过分的把所有的进程的监听和提供服务的进程拆分了,也就是把socket和进程分离。centos7开机之所以那么快主要就是因为这个原因,系统虽然启动了,端口监听也启动了但是真正提供服务的进程没有启动起来,只有端口被访问的时候才会启动。

  systemd把所有的服务都定义成了对象,假如我们调用httpd服务,必须通过systemd调用,这就有一个问题了,centos6上的时候我们调用服务是通过脚本调用的,并且脚本我们可以随意定制调用服务的参数。而systemd是一个已经编译好的二进制程序,我们完全没有了议价能力只能使用systemd定义调用接口,我们只能使用有限的几个参数,这貌似有点问题,虽然systemd是开源的,但是定制成本远远大于我们写脚本。centos7我们依然可以使用service命令。

     systemd的配置文件

  配置文件主要分为三部分:

1      第一部分/usr/lib/system/system/,主要存储每个服务的启动停止脚本。

2      第二部分/run/system/system/,系统执行过程中所产生的服务脚本,比上一个目录优先。

3      第三部分别/etc/system/system,管理员建立的脚本,实现类似/etc/rc.d/rc#.d/sXX的功能,比上一个目录更优先。

这三部分文件我们都可以更改,更改后需要是systemctl deamon-reload命令重新加载文件使配置生效。

systemctl命令的使用

这个命令在centos7上具有非常强大的补全功能,双击tab可以显示大部分的命令。systemctl的命令格式

systemctl ctrlcommserver.unit

ctrlcomm主要使用的有startstopstatusreload-or-try-restartrestartenabledisableis-enabled

server.unit的类型主要有:

socket                 套接字

service                 服务

device                 设备

等等

总结

  这一节主要学习了grub2的安装和配置文件的生成,定制了一个以grub2引导的硬盘。其次就是systemd的部分原理和systemctl的使用,同时这也是重点


本文出自 “老王linux旅程” 博客,请务必保留此出处http://oldking.blog.51cto.com/10402759/1881685

centos7启动流程

...文件系统,唯一不同的是执行的初始化程序变成了/usr/lib/systemd/systemd第四步、systemed初始化阶段(又叫系统初始化阶段)  CentOS7中我们的初始化进程变为了systemd。执行默认target配置文件/etc/system 查看详情

centos7的启动过程

...ub.cfg4.加裁Linux内核和inintamfs模块5.内核开始初始化,使用systemd来代替以前的init程序(1)执行initrd.target包括挂载/etc/fstab文件中的系统,此时挂载后(2)从initramfs根文件系统切换到磁盘根目录(3)systemd执行默认target配置(运行级别)(4)systemd... 查看详情

linux救援模式使用

...内核参数,只影响当次启动2、启动时,在linux16行后添加systemd.unit=desired.target3、systemd.unit=emergency.target4、systemd.unit=rescue.target5、rescue.target比emergency支持更多的功能,例如日志等6、systemctldefault进入默认target1、GRUB“theGrandUnifiedBoot... 查看详情

grub和grub2相关概念

一、GRUB(Boot loader)二、Grub的命令行接口三、/etc/grub/grub四、进入单用户模式五、Grub损坏,修复六、救援模式七、ramdisk文件的管理和initrd八、grub2详解一、GRUB(Bootloader)   Grub:GRandUnifiedBootloader      查看详情

系统恢复技术

...,只读挂在/设备-->启动init程序进入初始化阶段-->启动systemd初始化进程-->读取/etc/systemd/中的文件-->启动登入环境 二 查看详情

systemd和init

参考技术A在systemd初始化的系统上,init是systemd的一个符号链接:但是网上依然很多人再说init和systemd的区别。应当是指的init驱动和systemd驱动系统的区别但是现在除了非常旧的系统,还有用init驱动的系统吗?wsl也许是? 查看详情

如何通过 python 和 dbus (systemd-run like) 创建 systemd 瞬态计时器和服务?

】如何通过python和dbus(systemd-runlike)创建systemd瞬态计时器和服务?【英文标题】:Howtocreatesystemdtransienttimerandserviceviapythonanddbus(systemd-runlike)?【发布时间】:2020-05-1417:30:06【问题描述】:我想启动一个不存在的计时器,它应该在当... 查看详情

grub2基础教程-修订版(代码片段)

一、grub2新特性。二、grub2安装与启动。三、grub2配置文件详解。四、脚本修改。五、使用grub2常见错误及修复方法。一、grub2新特性。grub2基础教程-修订版一、grub2新特性1、grub2和grub有很多不同的地方:a)图形接口b)使用了模块... 查看详情

如何在 Centos-8 下的命令行中列出和编辑 GRUB2 的“菜单项”?

】如何在Centos-8下的命令行中列出和编辑GRUB2的“菜单项”?【英文标题】:HowtolistandeditGRUB2\'s"menuentry"incommand-lineunderCentos-8?【发布时间】:2020-07-0106:11:20【问题描述】:如何在Centos-8下的命令行中列出GRUB2的“菜单项”?... 查看详情

第十一单元文档2

...设备启动——>init程序进入初始化阶段——> 启动systemd初始化进程——>读取/etc/s 查看详情

systemd的简单使用和说明

参考了systemd入门1debian官方参考opensuse中文systemd介绍1systemdsystemd是Linux系统工具,用来启动守护进程,已成为大多数发行版的标准配置。目前debian8和centos7均默认使用了systemd工具来管理服务。在此之前,通常使用init的sysv风格的脚... 查看详情

systemd

Systemd的简介和特点  Systemd是Linux系统中最新的初始化系统(init),它主要的设计目标是克服sysvinit固有的缺点,提高系统的启动速度。系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务... 查看详情

Python 守护进程和 systemd 服务

】Python守护进程和systemd服务【英文标题】:Pythondaemonandsystemdservice【发布时间】:2012-10-1516:45:41【问题描述】:我有一个作为守护进程工作的简单Python脚本。我正在尝试创建systemd脚本以便能够在启动期间启动此脚本。当前systemd... 查看详情

通过 python 和 dbus 启动用户 systemd 服务

】通过python和dbus启动用户systemd服务【英文标题】:Startingauserssystemdserviceviapythonanddbus【发布时间】:2017-06-2414:41:18【问题描述】:可以通过dbus使用systemd的管理器来控制服务,例如:Startingasystemdserviceviapython使用这个:importdbussys... 查看详情

systemd和如何修改和创建一个systemdservice(understandingandadministeringsystemd)(代码片段)

系统中经常会使用到systemctl去管理systemd程序,刚刚看了一篇关于systemd和SysV相关的文章,这里简要记录一下:systemd定义:(英文来解释更为原汁原味)systemdisasystemandservicemanagerforLinux,compatiblewithSysVandLSBinitscripts.systemdprovides:Aggressivepar... 查看详情

linux里面systemd是啥?

Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。Systemd是一个系统管理守护进程、工具和库的集合,用于取代SystemV初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。启动及服务大多数主流发行版要么已经... 查看详情

systemd 的“oneshot”和“simple”服务类型有啥区别?

】systemd的“oneshot”和“simple”服务类型有啥区别?【英文标题】:Whatisthedifferencebetweensystemd\'s\'oneshot\'and\'simple\'servicetypes?systemd的“oneshot”和“simple”服务类型有什么区别?【发布时间】:2016-12-2604:55:18【问题描述】:systemd服... 查看详情

Systemd 与 Runit 兼容吗?

】Systemd与Runit兼容吗?【英文标题】:IsSystemdcompatiblewithRunit?【发布时间】:2019-06-2510:57:43【问题描述】:我有一个基于Systemd的生产环境和一个基于Runit的测试环境(由于某种原因,我无法更改它)。我的问题是,每当我创建服... 查看详情