1、查看kernel版本:

rpm -qa kernel 

[root@centos6 ~]# rpm -qa kernel 

kernel-2.6.32-696.el6.x86_64

2、linux :kernel +rootfs 

    kernel: 进程管理,内存管理,网络管理,驱动程序,文件系统,安全功能

    rootfs:程序和glibc

    库:

    程序:二进制执行文件

3、内核设计流派:

    单内核:把所有功能集成于同一个程序 vmlinuz-2.6.32-696.el6.x86_64

    微内核:每种功能使用一个单独子系统

4、 linux 内核特点:

    支持模块化:.ko(内核对象)

    如:文件系统,硬件驱动,网络协议

    支持内核模块的动态装载和卸载

[root@centos6 boot]# locate ext4.ko

/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko

lsmod 加载的模块:

modprobe:

[root@centos6 boot]# lsmod |grep e1000

e1000                 134799  0 


5、 内核核心文件


[root@centos6 boot]# ll -h /boot/vmlinuz-2.6.32-696.el6.x86_64 

-rwxr-xr-x. 1 root root 4.1M Mar 22  2017 /boot/vmlinuz-2.6.32-696.el6.x86_64

centos6/7:辅助的伪跟系统:initramfs-2.6.32-696.el6.x86_64.img 

centos5:initrd-2.6.18-164.el5.img

查看:辅助伪跟系统:

[root@rhel5 ~]# cp /boot/initrd-2.6.18-164.el5.img  /root
[root@rhel5 ~]# mv initrd-2.6.18-164.el5.img initrd-2.6.18-164.el5.img.gz
[root@rhel5 ~]# gzip -d initrd-2.6.18-164.el5.img.gz     
[root@rhel5 ~]# cpio -tv < initrd-2.6.18-164.el5.img 
-rw-------   1 root     root        29016 Nov  2  2010 lib/ohci-hcd.ko
-rw-------   1 root     root        96456 Nov  2  2010 lib/mptbase.ko
-rw-------   1 root     root       146792 Nov  2  2010 lib/ext3.ko


6、模块文件:

[root@rhel5 ~]# ll /lib/modules/2.6.18-164.el5/


7、centos6启动流程:

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5


8、post

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_02



9、rpm -qa grub 

[root@rhel5 ~]# rpm -qa grub

grub-0.97-13.5


10、启动流程:mbr

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_03



第一个阶段:446字节;

第1.5阶段:

[root@centos6 ~]# locate ext4.ko 

/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko

第二阶段:/dev/sda1       976M   40M  886M   5% /boot

第二阶段的配置文件:进入grub之后,读取boot 下vmlinuz 内核文件,初始化内核,随后找根目录

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_04


根目录:

cat /boot/grub/grub.conf 

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_05系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_06

根找到了,需要根的文件系统挂载:

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_07


问题:要挂载根,根的文件系统在哪,在跟下面:

[root@centos6 ~]# locate ext4.ko 

/lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko


解决根的文件系统:

initramfs-2.6.32-696.el6.x86_64.img

[root@centos6 ~]# ls /boot/initramfs-2.6.32-696.el6.x86_64.img  根的文件系统存在initramfs辅助伪根文件系统


[root@centos6 ~]# cpio -tv < initramfs-2.6.32-696.el6.x86_64.img |grep ext4.ko --color  
-rwxr--r--   1 root     root       646648 Jan 25 09:53 lib/modules/2.6.32-696.el6.x86_64/kernel/fs/ext4/ext4.ko


vmlinuz 存在系统光盘上:

[root@centos6 isolinux]# ll /boot/initramfs-2.6.32-696.el6.x86_64.img  vmlinuz 
-rw-------. 1 root root 26663543 Jan 25 09:54 /boot/initramfs-2.6.32-696.el6.x86_64.img
-r-xr-xr-x. 4 root root  4274992 Mar 29  2017 vmlinuz


虚拟文件系统:initramfs-2.6.32-696.el6.x86_64.img 

丢失创建initramfs: 

mkinitrd /boot/initramfs-`uname -r`.imag `uname -r`

实验:1、[root@centos6 boot]# rm -f initramfs-2.6.32-696.el6.x86_64.img 

实验:2、rm -f  vmlinuz-2.6.32-696.el6.x86_64

1、光盘引导:ecs按键

2、cd-rom drive 

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_08

3、进入救援模式:

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_09

4、英文

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_10

5、不需要设置网络

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_11


6、

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_12

7、

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_13

8、

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_14

9、chroot /mnt/sysimage ;mkinitrd initramfs-`uname -r`.img `uname -r` ;sync;sync;

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_15

10、mount /dev/sr0 /mnt; cp vmlinuz /boot/vmlinuz-`uname -r`

系统启动和内核管理 --centos5/centos6_系统启动和内核管理 --centos5_16

11、

exit

exit

reboot


12、centos6: 

rpm -qf /sbin/init 

upstart

rpm -qi upstart (谁提供的包)

centos5;rpm -qf /sbin/init

    rpm -qi SysVinit 

centos7:which init 

rpm -qf /lib/systemd/systemd

rpm -qi systemd 

13、

centos6: vim /etc/inittab

0 halt 

1 single user mode

2 multiuser (without nfs)

3 multiuser

4 unused 

5 x11

6:reboot

id 5 initdefault 


14:修改启动内核启动参数: a 字母键 , 1 进入单用户; 

15、修改centos6 密码: 进入单用户模式:1,  passwd  修改root 密码

16、centos5/6:系统初始化流程: ecs 模式进入启动过程

/etc/rc.d/rc.sysinit -run once at boot time 

/etc/rc.d/rc.sysinit :x系统初始化脚本:

1、设置主机名;

2、设置欢迎信息

3、激活udev和selinux 

4、挂载/etc/fstab 文件中定义的文件系统

5、检测根文件系统,并以读写方式重新挂载根文件系统

6、设置系统时钟

7、激活swap 设备

8、根据/etc/sysctl.conf文件设置内核参数

9、激活lvm及software raid 设备

10、加载额外设备的驱动程序

11、清理操作

17、ls /etc/rc5.d/ 指向 /etc/init.d/ (软连接的方式,控制服务的启动与停止)

k01smartd 

/etc/rc5.d/k01smartd  stop 

18、独立服务:

ls /etc/init.d  

19、 ls /etc/rc5.d/  5模式下 cpus 是启动的   s 开头

   ls /etc/rc1.d/  1模式下:cpus 是停止的;  k 开头

20、服务开机启动:

chkconfig --list atd 

chkconfig  atd  on  #开启模式

chkconifg atd off #关闭模式

chkconfig --level 35 atd off #关闭模式 

runlevel 

chkconfig --list 

chkconfig --add testsrv 

chkconfig --del testsrv 

21、ll /var/lock/subsys 是否有atd 服务; (linux 启动)

subsys=${/etc/rc$runlevel.d/k??}

[ -f /var/lock/subsys/$sybsys -o  -f /var/lock/subsys/$subsys.init ] || continue 

service atd status 

cat /sbin/service 

22、服务名次序很重要

s10 network 

s55 sshd 

23、依赖服务开 关顺序:

s1a s2b s3c 开顺序:

k3c k2b k1a 关顺序:

23、编写服务脚本:

/etc/init.d/atd restart 

service atd restart 

chkconfig --list 

cat /etc/init.d/atd 

chkconfig :345(level on) 95(s) 5(k)


vim /etc/inti.d/testsrv 
#!/bin/bash 
#chkconfig: 35 96 4 
#description:test service 
source /etc/init.d/functions
case $1 in 
start)
        [ -f /var/lock/subsys/testsrv ] && action "testsrv is started "
        touch /var/lock/subsys/testsrv
        action "testsrv is starting /Starting sshd "
        sleep 3
        ;;
stop)
        rm -f /var/lock/subsys/testsrv 
        action "testsrv is stopped"
        ;;
status)
        [ -f /var/lock/subsys/testsrv ] && echo testsrv is starting || echo testsrv is stooped 
        ;;
 *)
         echo "usage:service test start|stop|status"
         ;;
 esac

chmod +x /etc/init.d/testsrv

chkconfig --add testsrv 

chkconfig --list testsrv 

chkconfig --level 5 testsrv off /chkconfig  testsrv off 

ls /etc/rc5.d/ 

k03testsrv 

ctrl +alt +delete 重启


24、通用脚本:

ls /etc/rc{1,2,3,4,5}.d/

ll /etc/rc5.d/s99local 

/etc/rc5.d/s99local --> ../rc.local  

25、cat /etc/rc.local 开机自动启动服务

26、service --status-all

27、centos6:xinetd 

telnet-server 依赖与xineted 服务

yum install telnet-server 

yum install telnet 

telnet :off 

chkconfig telnet on  启动服务; 

ll /etc/xineted.d/telent 

service xineted start 启动xineted 脚本;

ss -nlt 查看监听端口:xineted 监听23 端口; 

28、cat /etc/initttab 

ctrl+ alt |delete /etc/init/control-alt-delete.conf  重启机器

exec /sbin/shutdown -r now "control-alt-delete pressed "

29、ups :机器停电,提供电池,让机器正常关机,避免出现故障

30、pa aux |grep mingetty (负责登录界面 )

respawn 再生


31、总结:centoss5;

/sbin/init --> (/etc/inittab)--> 设置默认运行级别-->运行胸痛初始化脚本、完成系统初始化--》 (关闭

对应下需要关闭的服务)启动需要启动服务-->--设置登录终端

32、centos6 

CentOS 6启动流程:

POST --> Boot Sequence(BIOS) --> Boot Loader --> Kernel(ramdisk) -->

rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定默认

运行级别 --> 系统初始化脚本rc.sysinit --> 关闭或启动对应级别的服务 --> 启动终端 

33、grub 0.97

hexdump -C -n 512 /dev/sda 
ddi if=/dev/sda  of=/dev/data/mbr bs=1 count=446 
dd if=/dev/zero of=/dev/sda bs=1 count=446
hexdump -C -n 512 /dev/sda -V
reboot

34、修复grub 

救援模式:

dd if=/dev/zero of=/dev/sda bs=1 count=446 

chroot /mnt/sysimage

grub-install /dev/sda 

sync

sync 


35、单用户模式:seliux=0 

36、grub-install 修复grub 

root@centos6 grub]# ls
device.map     grub.conf         minix_stage1_5     stage2
e2fs_stage1_5  iso9660_stage1_5  reiserfs_stage1_5  ufs2_stage1_5
fat_stage1_5   jfs_stage1_5      splash.xpm.gz      vstafs_stage1_5
ffs_stage1_5   menu.lst  
stage1             xfs_stage1_5
[root@centos6 grub]# dd if=/dev/zero of=/dev/sda bs=1 count=446 
[root@centos6 grub]# grub-install /dev/sda 
[root@centos6 grub]# hexdump -C -n 512 /dev/sda

        

37、1.5阶段修复:

grub-install ;救援模式;需要切根 ; 

hexdump -C -n13824 /dev/sda -v (27(扇区)*512=13824)

dd if=/dev/zero of=/dev/sda bs=1 count=10000 skip=512 seek=512

[root@centos6 grub]# hexdump -C -n 13824 /dev/sda -v 

进入磁盘救援模式:

grub

root (hd0,0)  #第一个磁盘第一个分区

setup (hd0) 

exit

exit

reboot

重启机器: ecs 进入单用户模式:a 字符,selinux=0 跳过selinux 检查; 



38、

[root@centos6 ~]# cat /boot/grub/grub.conf  配置文件详解:


title CentOS 6 (2.6.32-696.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=rel=aut
o  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-696.el6.x86_64.img
title centos8 (sun-linux)
        kernel (hd0,0)/vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=c07de17f-dc51-47bc-9f43-68
b025026209 rd_NO_LUKS rd_NO_LVM.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashker
nel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
   initrd (hd0,0)/initramfs-2.6.32-696.el6.x86_64.img
   

   title centos9 (sun-linux)
        kernel (hd0,0)/vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2  (rhgb 去掉图形界面;quiet 显示内核输出 )
        initrd (hd0,0)/initramfs-2.6.32-696.el6.x86_64.img

        


40、

 [root@centos6 ~]# cat /boot/grub/grub.conf  配置文件详解:

 title centos9 (sun-linux)
         
        initrd (hd0,0)/initramfs-2.6.32-696.el6.x86_64.img
          kernel (hd0,0)/vmlinuz-2.6.32-696.el6.x86_64 root=/dev/sda2 (rhgb 去掉图形界面;quiet 显示内核输出 )

启动菜单:

e 编辑 ,d 

initrd (hd0,0)/initramfs-2.6.32-696.el6.x86_64.img

o 新增一行:

e 编辑 删掉的那一行:支持自动补全

initrd /initramfs-2.6.32-696.el6.x86_64.img

b 启动

grub 编辑二阶段; 



41、

windows  打开剪贴板:mspaint; 像素:640*480

splashimage=(hd0,0)/grub/splash.xpm.gz

[root@centos6 ~]# ls /boot//grub/splash.xpm.gz

gzip -d /boot//grub/splash.xpm.gz

gunzip /boot//grub/splash.xpm.gz


[root@centos6 app]# rpm -qa ImageMag*

ImageMagick-6.7.2.7-6.el6.x86_64

[root@centos6 app]# convert -resize 640x480 -colors 14 win.jpg win.xpm 

head win.xpm 


[root@centos6 app]# cp win.xpm.gz  /boot/grub/

[root@centos6 ~]# vi /boot/grub/grub.conf 

splashimage=(hd0,0)/grub/win.xpm.gz

reboot


42、单用户增加密码:

[root@centos6 ~]# vi /boot/grub/grub.conf 

default=0

password centos  

password --md5   $grub-md5-crypt

password --encrypted  $grub-crypt

timeout=5

MD5生成密钥口令;

grub-md5-crypt

grub-crypt