知识点小结~8

内核:核心文件存放在/boot/vmlinuz-VERSION-release

grub:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核,如果initial RAM disk存在,则它将initial RAM disk加载到内存中,做好标记等待后面使用。

ramdisk文件的制作:

(1) mkinitrd命令

为当前正在使用的内核重新制作ramdisk文件

mkinitrd /boot/initramfs-$(uname -r).img $(uname -r)

(2) dracut命令

为当前正在使用的内核重新制作ramdisk文件

dracut /boot/initramfs-$(uname -r).img $(uname -r)

SysV: init, CentOS 5之前

配置文件:/etc/inittab

扫描二维码关注公众号,回复: 6782659 查看本文章

Upstart: init,CentOS 6

配置文件:/etc/inittab, /etc/init/*.conf       //定义开机模式

 

 Systemdsystemd, CentOS 7

配置文件:/usr/lib/systemd/system

/etc/systemd/system

相关配置文件:

/etc/init/control-alt-delete.conf      control+alt+delete   重启计算机

u/etc/init/tty.conf

u/etc/init/start-ttys.conf

u/etc/init/rc.conf

u/etc/init/prefdm.conf

 

修改centos6口令:

开机按esc,按e编辑

 

 选择第二项,按e编辑

 

 输入1,进入单用户模式,按回车键

 

 设置口令:

 重启生效。

 centos7重置口令:选择第一项,按e进入编辑

 

 ro改为rw init=/sysroot/bin/sh

 

 ctrl+x进入单用户模式

执行chroot  /sysroot;切根

设置口令   passwd 用户名;

执行     touch /.autorelabel(更新系统信息)

exit(退出chroot);再reboot重启。

 

centos7修改口令方法2

或者按e进入编辑后找到 linux16 这一行,在末尾输入 rd.break,按 ctrl+x 进入单用户模式,然后重新挂载访问模式也可以,即 mount -o remount,rw /sysroot ,这时在通过命令行访问系统 chroot /sysroot ,后面步骤和上面就一样了 

{

.ko驱动存放位置:/lib/modules/

lsmod:系统使用的模块                    rmmod:移除模块

比较文件的不同使用diff命令或者比较两个文件的MD5md5sum

 

 }

内核文件不存在的错误提示:

 

 centos6

删除内核文件,恢复步骤:

1、进入救援模式

2chroot /mnt/sysimage   切换根目录

3、先使用lsblk查看光盘是否挂载,若没有,则使用mount命令将光盘挂载上

4、在光盘isolinux文件夹中找到内核文件,将其拷贝到/boot目录下,重名名  vmlinu-``uname -r

5、重启即可。

删除initramfs.img文件,恢复步骤:

1、进入救援模式

2、执行命令(需切换到/boot目录下)    mkinitrd   /boot/initramfs-`uname -r`   `uname -r`(内核版本号)

{chroot /mnt/sysimage/  救援模式切换根目录命令(方便操作,命令更全

mkinitrd  /boot/initramfs-`uname -r`.img     `uname -r`(生成驱动文件包)}

3、执行reboot命令重启即可。

 /etc/rc.d文件中保存的K   S开头的文件(kill    start):

K*:数字越小,越先运行;数字越小的服务,通常为启动时需要依赖到别的服务。

S*:数字越小,越先运行;数字越小的服务,通常为被其他服务依赖的服务。

 centos 6

/etc/inittab文件:设置系统默认的运行级别(centos 7上使用systemctl set-default 命令切换默认运行级别)

开机启动服务脚本存放位置 /etc/init.dcentos7上:/etc/rc.d/init.d/etc/init.d为其软链接))

ntsysv:修改当前运行模式开机开启或关闭的服务 nesysv --level

checkconfig:通过chkconfig --add 服务名(/etc/init.d  中脚本的名称)命令,后期可以通过chkconfig命令编辑该服务的在0-6运行级别下的开机启动、关闭状态。

添加:

SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)

chkconfig --add name

(以下为name服务在/etc/init.d中脚本的命令)

#!/bin/bash  

#LLLL 表示初始在哪个级别下启动,-表示都不启动

# chkconfig: LLLL nn nn

删除:

chkconfig --del name

修改指定的链接类型

chkconfig [--level levels] name <on|off|reset>

--level LLLL: 指定要设置的级别;省略时表示2345

 

 查看端口占用程序

 

respawn(进程重生)

centos7     第一个启动进程/sbin/init   /usr/lib/systemd/systemd的软链接

 

 init=/bin/bash     (启动第一个读取的脚本)

 grub:   stage1位于MBR中前446字节为BootLoader(由于位数太少,不能够存放识别/boot的文件系统的驱动)64字节分区表2字节的标识位,共512字节。

生成stage1bootloadergrub-install  /dev/sda1

 centos6)上的grub.conf

 

上图顺序必须为固定:

default:默认启动的内核

timeout    超时时长

splashimage   : 开机背景文件

rhgb加载图像

centos6  grub加密:

可加password     密码      (grub密码)     grub 加密

grub-md5-crypt(md5加密)

 password --md5   $1

 grub-crypt   sha512加密)

password --encrypted

 

 centos7 grub加密:

执行命令grub-setpassword

删除下图文件解密

 

 rhgb  (是否显示背景文件)

title   :内核标头,上图有两个title则有两个内核

roothd00)指定根的位置(默认可省略)

kernel  :   ro针对的是root=UUID ****(真实根),在加载虚拟内核的时候就加载真正的根了,是的,有两个根存在(一个为虚拟根一个为真实操作系统的根)。

selinux=0开机禁用selinux

init=/bin/bash    开机启动的第一个进程,默认启动/etc/init

initrd:虚拟文件系统应该是用于加载驱动模块

 修复stage1

grub  命令 修复stage 1  要求   /boot/grub  文件夹内容存在,否则无法修复。

grub install  命令 无需以上文件支持,进入救援模式后使用该命令即可修复。

 修复stage2

没有grub.conf  文件:临时启动,命令行临时配置,执行以下命令后reboot启动,然后再将grub.conf文件写入/boot/grub

 

 centos6   删除/etc/fstab   /boot/  ,MBR分区)修复步骤:

1、进入救援模式,通过lsblkblkid命令,mount查看挂载情况,手动将系统的根挂载上(/dev/sda2

2、进入根目录,切根(chroot /mnt/sysimage),在/etc下手写fstab文件(启动默认挂载权限为defaults)后,sync重启

3、重新启动后,开始修复/boot文件,通过grub-install命令生成stage1--stage1.5的文件

grub-install     /dev/sda(操作系统所在硬盘))(无需切换目录,执行命令自动生成在/boot目录下)

4、生成grub文件后,cd grub/,在grub目录下,手写grub.conf 配置文件

【 或手动在grub命令行临时配置grub.conf

grub> root (hd#,#)

grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

grub> initrd /initramfs-VERSION-RELEASE.img

grub> boot

default=0;timeout=5;title      ****;kernel   /内核文件名      ro(根挂载模式)  root=/dev/sda2(根所在的分区)   initrd  /虚拟文件系统名)

5、挂载镜像:mount   /dev/sr0   /mnt   

6、从镜像文件中拷贝内核文件。cp /mnt/isolinux/vmlinuz    /boot/

7、制作虚拟文件系统      mkinitrd   initramfs.img   `uname -r`   (需切换到/boot目录下执行此命令)

8、多执行几次执行sync命令后,exit退出当前根,reboot重启即可。

逻辑卷修复

fstab配置文件:(最小化安装,没有fstab文件仍可启动,仅挂载了根,其他均未挂载)

 

 /boot目录:

 

 stage1-1.5bootloader)文件配置:写完fstab文件后重启切换根目录后,lsblk可以查看到(根)/,df查看不到根状态,导致grub-install   /dev/sda无法生成相应文件(或错误),切换根目录后执行mount -o remount,rw  /(将根重新挂载),重新挂载后可恢复正常。

没有根:

 

 重新挂载后出现:

 

1、进入救援模式后,使用vgchange -ay  命令激活卷组

2、将根所在的逻辑卷挂载后进入/etc,手写fstab文件,重新启动

3、重启后chroot ,再将根目录重新挂载到切换后的根目录下。/mnt/sysimage  ,挂载光盘mount

4rpm -ivh --force  强制重新安装内核(完成后内核和虚拟文件系统均ok

5、使用grub-install /dev/sda  生成stage1-1.5

 

 dracut:卡在这个位置后的下一步是switching root(应该就是stage1-1.5生成失败,上面所说的需重新挂载根)

 

 6、在/boot/grub  目录下手写grub.conf文件,其中(root=必须写UUIDroot=UUID=***  否则起不来(selinux=0可省略)

(关闭selinux,以保证系统因增加了grub所需的文件,能正常编辑/boot/grub/grub.conf行尾加上selinux=0即可或者编辑/etc/selinux/config 也可。)

7syncreboot重启即可。

修复stage1.5

进入救援模式:

 

centos7 (基于逻辑卷)删除/etc/fstab/boot/文件:

1、首先同centos6一样将根目录挂载至/mnt/sysimage目录下,然后chroot  /mnt/sysimage

2、手动生成/etc/fstab,写入开机启动的硬盘挂载,重启

3centos7上内核不能拷贝,否则导致grub2-mkconfig 命令生成的grub.cfg无效,需重新安装内核(挂载光盘后使用rpm或者yum),安装内核后,虚拟文件操作系统initramfs.img文件也一并生成了。

4grub2-install /dev/sda 生成stage1-1.5(该命令无需切换目录,直接自动生成在grub

2目录下)

5grub2-mkconfig > /boot/grub2/grub.cfg  生成grub.cfg文件

6sync写入硬盘,exit退出reboot重启。即可。

 其中的grub目录中存放的图片是开机启动背景图片

修复grub2.cfg:

grub2-mkconfig命令默认输出到桌面,该命令基于模板(/etc/default/grub)生成。

grub2-mkconfig > /boot/grub2/grub.cfg

修复grubstage1-1.5):

grub2-install   /dev/sda    

 制作splash背景图片:  convert

 

 修复/boot目录:

 

 chroot命令基于/etc/fstab  文件,若无该文件,chroot命令可能不可用

 

 救援模式下:逻辑卷不会被激活

vgchange -ay   激活逻辑卷     vgchange -an    禁用逻辑卷

重写/etc/fstab文件

sync强制写入硬盘

 若只修复stage1-1.5则可开机进入grub界面,临时手动写入grub.conf内容后,进入系统后再写配置文件。 使用cat  > /boot/grub/grub.conf   生成grub.conf文件)

 自制linux

创建grubgrub-install(注意指定根目录stage1.5指向stage2stage2 在    /boot目录下);编写grub.conf(注意root=、、、),拷贝内核,mkinitrd  生成initramfs.img

 

 加载网卡驱动,用于启动网卡

insmod  加载网卡驱动

 

 开启转发功能:

 

/boot/config-**** 文件中存放编译内核的相关配置

modinfo:模块信息。

编译内核:

.config  准备文本配置文件

make menuconfig    配置内核选项

make mldules_install     /lib/modules   文件夹内生成相应的模块文件

/boot   文件夹下生成相应的内核和和虚拟文件系统initramfs.img

 make install   

make install用法:在当前目录下生成_install目录,其中存放当前目录下所有文件的软链接

make install      为当前目录下所有条目生成软链接存放在_install 目录中。

 

 systemctl  mask/ummask   name.service    (为服务创建、删除一个指向/dev/null的软链接)

 

 telnet为独立性服务,当有访问时才启动,无访问时关闭。)

centos7:

切换运行模式的systemctl命令格式

 

 

 centos7中改变启动模式生成对应相应模式的软链接。当systemd进程被启动后,找到相应的启动模式配置文件.target文件,文件内部存放相应的服务依赖关系。

systemctl     list-dependencies  sysinit.target(查看依赖关系)

systemd-analyze  命令

centos7设定grub2口令:

 

 centos7生成grub.cfg,模板在/etc/default/grub,通过模板生成

执行命令:grub2-mkconfig -o /boot/grub2/grub.cfg

 

 setenforce 0   临时关闭selinux

sestatus  selinux状态

启动内核时禁用selinux,即便/etc/selinux/config  配置文件中是启用状态,selinux仍是禁用,内核优先生效。

 

 selinux

查看selinux状态  sestatusgetenforce

 

 恢复

 

 ls -Z  查看selinux安全标签

chcon:给文件重新打标签

 

 恢复目录或文件的默认安全上下文 

 

关于模块的命令:

lsmod  查看已加载的模块

modinfo  显示kernel模块的信息

modprobe 加载某个模块

猜你喜欢

转载自www.cnblogs.com/FightMG/p/11146282.html