内核:核心文件存放在/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
Upstart: init,CentOS 6
配置文件:/etc/inittab, /etc/init/*.conf //定义开机模式
Systemd:systemd, 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命令或者比较两个文件的MD5(md5sum)
}
内核文件不存在的错误提示:
centos6:
删除内核文件,恢复步骤:
1、进入救援模式
2、chroot /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.d(centos7上:/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字节。
生成stage1的bootloader:grub-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则有两个内核
root(hd0,0)指定根的位置(默认可省略)
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、进入救援模式,通过lsblk及blkid命令,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.5(bootloader)文件配置:写完fstab文件后重启切换根目录后,lsblk可以查看到(根)/,但df查看不到根状态,导致grub-install /dev/sda无法生成相应文件(或错误),切换根目录后执行mount -o remount,rw /(将根重新挂载),重新挂载后可恢复正常。
没有根:
重新挂载后出现:
1、进入救援模式后,使用vgchange -ay 命令激活卷组
2、将根所在的逻辑卷挂载后进入/etc,手写fstab文件,重新启动
3、重启后chroot ,再将根目录重新挂载到切换后的根目录下。/mnt/sysimage ,挂载光盘mount
4、rpm -ivh --force 强制重新安装内核(完成后内核和虚拟文件系统均ok)
5、使用grub-install /dev/sda 生成stage1-1.5
dracut:卡在这个位置后的下一步是switching root(应该就是stage1-1.5生成失败,上面所说的需重新挂载根)
6、在/boot/grub 目录下手写grub.conf文件,其中(root=必须写UUID)root=UUID=*** 否则起不来(selinux=0可省略)
(关闭selinux,以保证系统因增加了grub所需的文件,能正常编辑/boot/grub/grub.conf行尾加上selinux=0即可或者编辑/etc/selinux/config 也可。)
7、sync,reboot重启即可。
修复stage1.5:
进入救援模式:
centos7 (基于逻辑卷)删除/etc/fstab及/boot/文件:
1、首先同centos6一样将根目录挂载至/mnt/sysimage目录下,然后chroot /mnt/sysimage
2、手动生成/etc/fstab,写入开机启动的硬盘挂载,重启
3、centos7上内核不能拷贝,否则导致grub2-mkconfig 命令生成的grub.cfg无效,需重新安装内核(挂载光盘后使用rpm或者yum),安装内核后,虚拟文件操作系统initramfs.img文件也一并生成了。
4、grub2-install /dev/sda 生成stage1-1.5(该命令无需切换目录,直接自动生成在grub
2目录下)
5、grub2-mkconfig > /boot/grub2/grub.cfg 生成grub.cfg文件
6、sync写入硬盘,exit退出reboot重启。即可。
其中的grub目录中存放的图片是开机启动背景图片
修复grub2.cfg:
grub2-mkconfig命令默认输出到桌面,该命令基于模板(/etc/default/grub)生成。
grub2-mkconfig > /boot/grub2/grub.cfg
修复grub(stage1-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:
创建grub(grub-install(注意指定根目录stage1.5指向stage2,stage2 在 /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状态 sestatus或getenforce
恢复
ls -Z 查看selinux安全标签
chcon:给文件重新打标签
恢复目录或文件的默认安全上下文
关于模块的命令:
lsmod 查看已加载的模块
modinfo 显示kernel模块的信息
modprobe 加载某个模块