grub2和systemd

前端之家收集整理的这篇文章主要介绍了grub2和systemd前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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的使用,同时这也是重点

猜你在找的CentOS相关文章