欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

马哥 14_02 _Linux系统启动流程之二 内核及init 有大用

image.png  



image.png

(a表示修改kernel参数 e表示编辑命令)

image.png


敲空格 添加字符 1 表示启动级别为1 ,然后敲回车

image.png

我们这里敲了single (这里sing可能是显示不完整吧) 然后 回车 

image.png

c 表示命令行模式 e 表示编辑 d 表示删除这一行)

一切完成之后敲 b 键 就启动了

image.png

image.png

此时因为是 single 是单用户模式,不需要密码就可以登录的,此时登录以后,直接以root用户的身份访问,

忘了root密码,此时就可以改一改了 (这里改的时候,不需要提供原密码)


启动的服务不同

    运行级别:    0-6     7个级别       在不同的级别下,启动的服务不一样而已(不一定完全精确)

        0: halt 关机

        1:single user mode 单用户模式,相当于windows的安全模式,维护模式 直接以管理员身份切入(密码都不需要)

                    管理员密码忘了,通过这个模式可以进去改改    1,s,S,single

        2:multi user mode 多用户模式,而且有网络功能,不启用NFS (no NFS)(network file system)

                    挂载了网络文件系统,它不会给你自动挂载的

                    当nfs出故障的时候,开机挂载nft系统时,nfs文件系统死活挂不上(系统down在那里)

                    出了这个问题,可以进入2级别                    

        3:multi user mode 正常的多用户模式,text mode(文本模式) (只有命令行,不启动图形界面)

                    我们平时的时候,就是3级别  默认级别

        4:reserved 保留模式,保留级别,尚未使用的模式,没有定义

        5:multi user mode 多用户模式,graphic mode (图形终端模式)

        6: reboot 重启


如果不想让别人进单用户模式,可以在/boot/grub/grub.conf中加个密码 (在任何一个title上面加密码)

但是 /boot/grub/grub.conf 随便任何人都可以看 可以使用加密格式的  (记住是 password 不是 passwd)

image.png

image.png



如何查看当前运行级别:

runlevel

who -r

查看内核和平台架构

uname -r   (r  表示 release)显示当前正在使用的版本号(内核release号)

uname -a 显示更全部的信息


grub坏了怎么办?演示一下怎么装grub

修复(安装)grub  (仅是MBR中的bootloader坏了,但是分区表不能坏,在446个字节之前坏了)

        安装 grub stage1

        # grub

    grub> root (hd1,0)        指定内核所在的分区(指定root)

    grub> setup (hd1)         指定在哪个硬盘上安装(只要指定硬盘即可)


安装 grub第二种方法: (在新的另外一个磁盘上新安装一个grub)

    # grub-install --root-directory=/path/to/boot's_parent_dir /PATH/TO/DEVICE      (这不是根文件系统的根,而是启动时grub所在的分区对应的根(内核所在分区对应的根))

                                    (看mount ,一定要把内核所在的分区挂载到boot目录下才可以,只需要指定boot的父目录就可以了)



grub文件损坏了,怎么办

grub.conf文件坏了 (马哥把它移到其它地方了)

开机后 

看到  grub>


        grub> find  尝试找boot到底在哪个分区

        grub> root (hd#,#) 指定内核所在的分区(指定root)    

        grub> kernel /PATH/TO/KERNEL_FILE  指定内核文件

        grub> initrd /PATH/TO/INITRD_FILE  指定initrd文件

        grub> boot  一回车,就启动了

 

如果启动后创建一个grub.conf的配置文件,下次就不用手动输了


Kernel初始化的过程:

1,设备探测

2,驱动初始化(很可能需要从initrd(红帽6上叫initramfs)文件中装载驱动模块的)

3,以只读方式挂载根文件系统  (否则假如读写挂载的话,任何一个bug,都会导致根文件系统崩溃的)(此时,它只需要从里面读文件,执行程序就行了,过一会儿了,init会重新把根挂载为可读写的)

4,装载第一个进程init ( PID: 1)



/sbin/init: (它要读取的配置文件 /etc/inittab) (sbin s是super超级的意思)

在红帽6.0之后 init 不在是传统的unix 的 init程序, 红帽6.0之后的使用的是upstart(另外一种版本的init) 

原来的 init 启动速度,执行速度很慢  (一次只能启动一个服务(后台程序),串行启动的)

upstart: ubuntu开发出来的一个开源项目,另外一种形式的init,可以并行的去启动好多进程,所以启动速度比传统的init要快 (支持并行启动服务)(服务依赖关系有体现) (使用d-bus来完成各自之间的通信,不再需要inittab中后面的更多的子系统,启动这个,启动那个)(系统内部各子系统之间IPC的机制(进程间通信))(基于d-bus各个进程间的依赖关系,通信机制,都是有统一的风格来进行管理,而且统一调配的)(upstart基于d-bus,是基于事件来完成系统启动的 event-driven)    (IPC(Inter-Process Communication,进程间通信))

systemd (红帽6.2应该用的是它):据说比upstart还要好,是纯粹完整意义上的并行启动多个进程的一种机制 (支持并行启动服务)(服务依赖关系有体现)(它是完全并行的)

(红帽6.2应该用的是systemd,6.3后又换回了upstart,说明systemd可能不稳定)(但是systemd在设计理念上,实现方式上确实比upstart要优秀)


5.8上用的是init,6.3上用的是upstart


upstart,在红帽6.3上依然叫init,读取的文件依然是/etc/inittab ,但是文件大不相同了


红帽5 ( redhat 5 rhel 5  redhat5 rhel5) inittab

每一行定义了要启动的进程(服务)  


id:runlevels:action:process

id: 是不一样的,唯一标识符

runlevels: 在哪个级别下运行此行

action:什么情况下执行,什么时候执行,什么事件下执行

process:执行的进程,要运行的程序


id标识符,3,运行等级 initdefault 是用来设定默认级别的 此时没有指定运行的程序

id:3:initdefault:


si标识符 没有指级别,表示所有级别,sysinit表示系统初始化这种情况 /etc/rc.d/rc.sysinit 表示要运行的程序,这是一个脚本,这是一个系统的初始化脚本    这一行的意思就是表示要执行系统的初始化的

si::sysinit:/etc/rc.d/rc.sysinit


ACTION:

    initdefault:设守默认运行级别  一般只执行一次

    sysinit:系统初始化   (装载键盘,进行键映射的,设置系统识度(没理解),把文件系统重新挂载为可读写等等,(包括额外的其它硬件设备的驱动程序的初始化),不光是硬件的初始化)  只执行一次

    wait:等待切换,只要切换到这个级别,它就执行一次,等待级别切换至此级别时执行  可执行多次

    ctrlaltdel:同时按下ctrl + alt + del 时 执行

    respawn:(一旦程序终止),(好像是开机时也)会重新执行一次;一旦程序终止,(好像是开机时也)会重新启动 (spawn 启动 发起 引起,酿成)


ca::ctrlaltdel:/sbin/shutdown -t3 -r now  一般不能让用户重启的,可以改一改

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" 这个需要有ups电源的,否则没意义 断电后2分钟后关机   (意义不大)(-f啥意思 在重启计算器〔reboot〕时忽略fsck)

pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"  电了回来了,就取消刚才的关机   (意义不大)

    (-c cancel 取消shutdown )

1:2345:respawn:/sbin/mingetty tty1  (只要/sbin/mingetty tty1 命令停了,就重启一次)(进程终止,再启动)(respawn是用来控制终端的)

    image.png

image.png



image.png

如果 只想3个起作用的话,就删掉后面的 4,5,6三行吧



image.png

切换到5级别,就是初始化图形界面的


/etc/rc.d/rc.sysinit 完成的任务

1,激活udev和selinux: (前200行,就不用读了,前面十几行还是可以看得懂的吧)

2,根据/etc/sysct.conf文件,来设定内核参数

3,设定系统时间

4,装载键映射

5,启用交换分区

6,设置主机名

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

8,激活RAID(及软RAID)和LVM设备 (额外的,除了根以外和其它的)

9,启用磁盘配额 (限定用户最多使用多少磁盘空间的,用处不大)

10,根据/etc/fstab,检查并挂载其它文件系统

11,清理过期的锁和PID文件

 

K开头的网络服务将会被关闭,S开头的网络服务将会被启动,而且都是有次序的

##: 表示关闭或启动的优先次序,数据越小越优先被选定

先关闭以K开头的服务,后启动以S开头的服务

for I in /etc/rc3.d/K*; do

    $I stop

done

for I in /etc/rc3.d/S*; do

    $I start

done






[root@localhost ~]# grub        (我的grub为什么与马哥的grub不一样) (我的)

image.png

马哥的

image.png


[root@localhost ~]# grub-md5-crypt   (我输入的是redhat 就生成了md5)

Password:

Retype password:

$1$burR50$Tjq2jPesYzd78PwSMMbJy/

[root@localhost ~]#


直接把这个md5的值贴到贴到 上面的grub.conf中就可以了  

以后再想编辑grub菜单(启动时的菜单,就得提供密码了) 

image.png

# 虽然也是 输入的  redhat ,但是每次值不一样,因为salt不一样

image.png





[root@localhost ~]# vim /etc/grub.conf


image.png

再生成一次吧

[root@localhost ~]# grub-md5-crypt

[root@localhost ~]# grub-md5-crypt

Password:

Retype password:

$1$15wR50$0Br7YQEJOZYPzSBZYR3vj/

[root@localhost ~]#

image.png


[root@localhost ~]# vim /etc/grub.conf

image.png



[root@localhost ~]# sync

[root@localhost ~]# shutdown -r now


image.png

e


敲p键 输密码(我是用redhat生成的md5的密码)后 看到 可以编辑了

image.png


password 放在 title 上面 和 title里面是不一样的

image.png

password 放在title 上面表示要编辑grub.conf,才需要的密码

password 放在title 里面 然后 开机后,让你选择某个系统,此时需要的是 title里面的密码




[root@localhost ~]# runlevel        (第一个N 表示上一次级别(N表示没有切换)  第二个3 表示当前级别)

N 3

[root@localhost ~]#

[root@localhost ~]# who -r

         run-level 3  2018-10-29 16:59                   last=S

[root@localhost ~]#


[root@localhost ~]# fdisk -l

image.png

破坏 /dev/sda1上的 MBR,千万不能破坏分区表,只破坏它的bootloader



[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=400  (只要不超过446就行)

[root@localhost ~]# dd if=/dev/zero of=/dev/sda count=1 bs=400

1+0 records in

1+0 records out

400 bytes (400 B) copied, 0.000419 seconds, 955 kB/s

[root@localhost ~]# sync

再重启系统,系统就会挂了


我们来修改 MBR

[root@localhost ~]# grub

Probing devices to guess BIOS drives. This may take a long time.



    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)


 [ Minimal BASH-like line editing is supported.  For the first word, TAB

   lists possible command completions.  Anywhere else TAB lists the possible

   completions of a device/filename.]


grub> root (hd0,0)

root (hd0,0)

 Filesystem type is ext2fs, partition type 0x83

grub> root (hd1,0)

root (hd1,0)

 Filesystem type is ext2fs, partition type 0x83

grub> root (hd2,0)

root (hd2,0)

 Filesystem type unknown, partition type 0x83

grub>root (hd1,0)

 Filesystem type is ext2fs, partition type 0x83

grub> setup (hd1)

 Checking if "/boot/grub/stage1" exists... no

 Checking if "/grub/stage1" exists... yes

 Checking if "/grub/stage2" exists... yes

 Checking if "/grub/e2fs_stage1_5" exists... yes

 Running "embed /grub/e2fs_stage1_5 (hd1)"...  15 sectors are embedded. (embedded 植入,嵌入  embed植入,嵌入 )  (sectors 扇区)

succeeded

 Running "install /grub/stage1 (hd1) (hd1)1+15 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded

Done.

grub>quit   (退出)



image.png


[root@localhost ~]# fdisk -l   (hda被识别grub为hda0,sda被grub识别为hda1,sdb被grub识别为hda2  ,,,因为我们要修复的是sda1,所以上面应该是(hda1,0))

image.png


[root@localhost ~]# vim /etc/grub.conf

这里看到的是 root (hd0,0)与 安装grub时使用 (hd1,0)不一致,但是不用担心,这是对的,因为

我重启系统后是正常的

image.png


[root@localhost ~]# mount

image.png



[root@localhost ~]# fdisk /dev/hda

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel. Changes will remain in memory only,

until you decide to write them. After that, of course, the previous

content won't be recoverable.



The number of cylinders for this disk is set to 44384.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

   (e.g., DOS FDISK, OS/2 FDISK)

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-44384, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-44384, default 44384): +20M


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 2

First cylinder (43-44384, default 43):

Using default value 43

Last cylinder or +size or +sizeM or +sizeK (43-44384, default 44384): +512M


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 3

First cylinder (1102-44384, default 1102):

Using default value 1102

Last cylinder or +size or +sizeM or +sizeK (1102-44384, default 44384): +128M


Command (m for help): t

Partition number (1-4): 3

Hex code (type L to list codes): L


 0  Empty           1e  Hidden W95 FAT1 80  Old Minix       bf  Solaris

 1  FAT12           24  NEC DOS         81  Minix / old Lin c1  DRDOS/sec (FAT-

 2  XENIX root      39  Plan 9          82  Linux swap / So c4  DRDOS/sec (FAT-

 3  XENIX usr       3c  PartitionMagic  83  Linux           c6  DRDOS/sec (FAT-

 4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c7  Syrinx

 5  Extended        41  PPC PReP Boot   85  Linux extended  da  Non-FS data

 6  FAT16           42  SFS             86  NTFS volume set db  CP/M / CTOS / .

 7  HPFS/NTFS       4d  QNX4.x          87  NTFS volume set de  Dell Utility

 8  AIX             4e  QNX4.x 2nd part 88  Linux plaintext df  BootIt

 9  AIX bootable    4f  QNX4.x 3rd part 8e  Linux LVM       e1  DOS access

 a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e3  DOS R/O

 b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e4  SpeedStor

 c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          eb  BeOS fs

 e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi ee  EFI GPT

 f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ef  EFI (FAT-12/16/

10  OPUS            55  EZ-Drive        a6  OpenBSD         f0  Linux/PA-RISC b

11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f1  SpeedStor

12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f4  SpeedStor

14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f2  DOS secondary

16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     fb  VMware VMFS

17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE

18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fd  Linux raid auto

1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid fe  LANstep

1c  Hidden W95 FAT3 75  PC/IX           be  Solaris boot    ff  BBT

Hex code (type L to list codes): 82

Changed system type of partition 3 to 82 (Linux swap / Solaris)


Command (m for help): p


Disk /dev/hda: 21.4 GB, 21474836480 bytes

15 heads, 63 sectors/track, 44384 cylinders

Units = cylinders of 945 * 512 = 483840 bytes


   Device Boot      Start         End      Blocks   Id  System

/dev/hda1               1          42       19813+  83  Linux

/dev/hda2              43        1101      500377+  83  Linux

/dev/hda3            1102        1367      125685   82  Linux swap / Solaris

Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.

Syncing disks.

[root@localhost ~]#


[root@localhost ~]# partprobe /dev/hda

[root@localhost ~]#

[root@localhost ~]# mke2fs -j /dev/hda1

image.png


[root@localhost ~]# mke2fs  /dev/hda1

image.png


[root@localhost ~]# mke2fs  /dev/hda2

image.png



[root@localhost ~]# mkswap /dev/hda3

image.png



[root@localhost ~]# mkdir /mnt/boot


[root@localhost ~]# mount /dev/hda1 /mnt/boot/


[root@localhost ~]# grub-install --root-directory=/mnt /dev/hda

image.png

image.png


[root@localhost ~]# cd /mnt/boot

[root@localhost boot]# ls

grub  lost+found

[root@localhost boot]# ls grub

device.map     iso9660_stage1_5   stage1           xfs_stage1_5

e2fs_stage1_5  jfs_stage1_5       stage2

fat_stage1_5   minix_stage1_5     ufs2_stage1_5

ffs_stage1_5   reiserfs_stage1_5  vstafs_stage1_5

[root@localhost boot]#


[root@localhost boot]# vim /mnt/boot/grub/grub.conf

image.png


[root@localhost boot]# sync

[root@localhost ~]# cd 

[root@localhost ~]# umount /mnt/boot




创建一个新的虚拟机

      使用已存在的虚拟硬盘 就是上一步装了grub的hda

启动后发觉到是这样子的  (因为没有操作系统)

image.png


有了grub 再提供内核,提供initrd,内核就可以跑起来了,再提供init文件,用户空间的进程也就起来了


马哥说让这个小系统关机,然后,再运行我们正式的redhat虚拟机,我这边好像也需要(因为否则的话,小系统占据这个磁盘,原系统就启动不起来了)



移动 grub.conf文件到/root目录下

[root@localhost ~]# mv /boot/grub/grub.conf /root

[root@localhost ~]# sync

[root@localhost ~]#  shutdown -r now

image.png


image.png

image.png

find (hd1,0)/   光标移到最后按  Tab键

find (hd0,0)/   光标移到最后按  Tab键

(因为linux是装在sda上)由此可见 sda会被识别成 hd0, hda会被识别成hd1 (可能启动后不是这么回事)


1) root 指定 内核 所在的根分区(指定root)

2) kernel  指定内核  (其实内核后面有参数的)

image.png

这里 kernel 后面的内容 可以按tab键自动补全的

3)initrd 指定初始化的内存磁盘      (initrd与kernel内核必须保持一致,以img结尾)

image.png


4) 执行 boot 回车 后面就会有一大堆信息 (系统会尝试找根,如果能找到的话,就启动起来了,一般在当前的磁盘上找根文件系统,

一般都是能找到的 所以第2步,不给 kernel 内核 后面的参数,也能找到)

  grub> boot


如果启动后创建一个grub.conf的配置文件,下次就不用手动输了 

从刚才mv的地方 再move回去


[root@localhost ~]# mv grub.conf /boot/grub/


grub.conf丢失了,或者语法错误了,开机启动时,都会给出一个grub的提示符的


 下面是红帽6中的 initramfs

[root@localhost ~]# ls /boot

image.png


红帽6上

[root@localhost ~]# cat /etc/inittab

image.png


红帽5上区别太大了

[root@localhost ~]# cat /etc/inittab

image.png




红帽6上 有个目录 init    (它把/etc/inittab 的配置 切成n片,放在/etc/init 目录下)

(红帽6上还有一个目录, /etc/init.d)

[root@localhost ~]# ls /etc/init   (里面一大堆conf文件) (每一个文件都是基于事件驱动的方式来编写的)

ck-log-system-restart.conf  rcS-emergency.conf

ck-log-system-start.conf    rcS-sulogin.conf

ck-log-system-stop.conf     readahead-collector.conf

control-alt-delete.conf     readahead.conf

init-system-dbus.conf       readahead-disable-services.conf

kexec-disable.conf          serial.conf

plymouth-shutdown.conf      splash-manager.conf

prefdm.conf                 start-ttys.conf

quit-plymouth.conf          tty.conf

rc.conf                     vmware-tools.conf

rcS.conf

[root@localhost ~]#


红帽6上还有一个目录, /etc/init.d   (这是脚本存放的目录)

[root@localhost ~]# ls /etc/init.d

abrt-ccpp         cpuspeed    killall       nfs-rdma     restorecond  single

abrtd             crond       lvm2-lvmetad  ntpd         rhnsd        smartd

abrt-oops         cups        lvm2-monitor  ntpdate      rhsmcertd    sshd

acpid             functions   mcelogd       numad        rngd         sssd

atd               haldaemon   mdmonitor     oddjobd      rpcbind      svnserve

auditd            halt        messagebus    portreserve  rpcgssd      sysstat

autofs            ip6tables   netconsole    postfix      rpcidmapd    udev-post

blk-availability  ipsec       netfs         psacct       rpcsvcgssd   winbind

certmonger        iptables    network       quota_nld    rsyslog      ypbind

cgconfig          irqbalance  nfs           rdisc        sandbox

cgred             kdump       nfslock       rdma         saslauthd

[root@localhost ~]#

红帽6上

[root@localhost ~]# cd /etc/init

[root@localhost init]# vim rcS.conf  (通过这种方式,也能够支持模拟多个运行级别的,所以

upstart也能够支持运行级别 1级别  2级别 3级别等等)(但是它的控制机制和配置文件大不相同)

image.png

image.png










红帽5上没有/etc/init

[root@localhost ~]# ls /etc/init

ls: /etc/init: 没有那个文件或目录

[root@localhost ~]# vim /etc/inittab

image.png


[root@localhost ~]# man inittab

image.png



image.png

[root@localhost ~]# wc -l /etc/rc.d/rc.sysinit

974 /etc/rc.d/rc.sysinit

[root@localhost ~]#

[root@localhost ~]# file /etc/rc.d/rc.sysinit     (看看这个脚本吧,有作用,作用大)

/etc/rc.d/rc.sysinit: Bourne-Again shell script text executable

[root@localhost ~]#


[root@localhost ~]# less /etc/rc.d/rc.sysinit

image.png


key_is_random()     生成随机键种子?

image.png

image.png


image.png



红帽6上也有 /etc/rc.d/rc.sysinit 文件


红帽6

[root@localhost ~]# wc -l /etc/rc.d/rc.sysinit

685 /etc/rc.d/rc.sysinit

[root@localhost ~]#



红帽5 

[root@localhost ~]# vim /etc/inittab

image.png




[root@localhost ~]# vim /etc/rc.d/rc

image.png


image.png



[root@localhost ~]# ls /etc/rc3.d/

K01dnsmasq         K87multipathd       S12restorecond   S50hplip

K02avahi-dnsconfd  K88wpa_supplicant   S12syslog        S55sshd

K02NetworkManager  K89dund             S13cpuspeed      S56cups

K05conman          K89netplugd         S13irqbalance    S56rawdevices

K05saslauthd       K89pand             S13iscsi         S80sendmail

K10psacct          K89rdisc            S13portmap       S85gpm

K15httpd           K91capi             S14nfslock       S90crond

K15svnserve        K99readahead_later  S15mdmonitor     S90xfs

K20nfs             S00microcode_ctl    S18rpcidmapd     S95anacron

K24irda            S03vmware-tools     S19rpcgssd       S95atd

K35winbind         S04readahead_early  S22messagebus    S97rhnsd

K36mysqld          S05kudzu            S25bluetooth     S97rhsmcertd

K50netconsole      S07iscsid           S25netfs         S97yum-updatesd

K50vsftpd          S08ip6tables        S25pcscd         S98avahi-daemon

K69rpcsvcgssd      S08iptables         S26acpid         S99firstboot

K73ypbind          S08mcstrans         S26haldaemon     S99local

K74ipmi            S09isdn             S26hidd          S99smartd

K74nscd            S10network          S26lvm2-monitor

K85mdmpd           S11auditd           S28autofs

[root@localhost ~]#



[root@localhost ~]# vim test.sh

image.png

[root@localhost ~]# bash test.sh

image.png


[root@localhost ~]# vim /etc/rc.d/rc

image.png



[root@localhost ~]# vim /etc/inittab


image.png



[root@localhost ~]# ls -d /etc/rc*

/etc/rc     /etc/rc1.d  /etc/rc3.d  /etc/rc5.d  /etc/rc.d      /etc/rc.sysinit

/etc/rc0.d  /etc/rc2.d  /etc/rc4.d  /etc/rc6.d  /etc/rc.local

image.png

[root@localhost ~]# ls -ld /etc/rc*           (蓝颜色都是链接文件)

image.png


[root@localhost ~]# ls -ld /etc/rc.d/*

image.png


[root@localhost ~]# cd /etc/rc.d/rc3.d/

[root@localhost rc3.d]# ls -la


image.pngimage.png


[root@localhost rc3.d]# cd ../

[root@localhost rc.d]# ls

image.png

[root@localhost rc.d]# cd init.d/

[root@localhost init.d]# ls

这里面才是真正的脚本, 这些脚本在每个级别下都有个链接,每一个链接就决定的每一个脚本,

每个脚本几乎代表一个服务,(而且是开机时会被执行的服务)(这个服务到底会不会在某个级别下启动起来,

取决于  /etc/rc等级.d/ 下以K开头的,还是以S开头的,如果K (kill)开头的,表示关掉这个服务,如果S (start)开头的,表示启动这个服务)

image.png



[root@localhost init.d]# vim /etc/inittab

image.png


[root@localhost init.d]# cd ..

[root@localhost rc.d]# pwd

/etc/rc.d

[root@localhost rc.d]# ls

init.d  rc0.d  rc2.d  rc4.d  rc6.d     rc.sysinit

rc      rc1.d  rc3.d  rc5.d  rc.local

[root@localhost rc.d]#

[root@localhost rc.d]# ls -l rc0.d/

image.png

[root@localhost rc.d]# ls rc6.d/


image.png

[root@localhost rc.d]# cd init.d/

[root@localhost init.d]# pwd

/etc/rc.d/init.d

[root@localhost init.d]#

上面这些蓝色的链接可不是我们手动创建的,有个命令去创建这些链接

任何一个服务 给它任何一个脚本(只要支持 start stop restart status) 加到  /etc/rc.d/init.d  这个目录里面,

我们都可以给它可以创建链接,还可以使用一个命令给它自动创建几个链接





普通分类: