一、Linux的运行别
1、Linux中的运行级别
在Linux系统中,默认有7个运行级别:
运行级别 | 说明 |
---|---|
0 | 关机 |
1 | 单用户模式,主要用于系统修复(如遗忘密码等) |
2 | 不完全的命令行模式,不包含nfs服务 |
3 | 完全的命令行模式 |
4 | 系统保留,未使用 |
5 | 图形界面 |
6 | 重启 |
2、运行级别的查看与切换
查看:
[root@localhost ~]# runlevel
N 3
#N代表进入当前系统级别前的上一个级别,N=None说明开机直接进入3级别
#3为当前系统级别
切换:
init [级别]
[root@localhost ~]# init 5
[root@localhost ~]# runlevel
3 5
#由3级别切换为5级别
init 0 #关机,不推荐使用容易导致数据丢失,推荐使用 shutdown -h now
init 6 #重启,不推荐使用容易导致数据丢失,推荐使用 shutdown -r now
3、Linux系统启动后的默认运行级别
在linux系统启动的过程中/etc/init/rcS.conf配置文件会调用/etc/inittab配置文件,在/etc/inittab配置文件中有对应的系统运行级别设置,该运行级别即为操作系统启动后默认的运行级别。
[root@localhost ~]# cat /etc/init
init/ init.d/ inittab
[root@localhost ~]# cat /etc/inittab
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault: #默认运行级别3
#注意,正常默认运行级别只能设置为3或5
二、Linux的启动引导
GNU GRUB 是一个多重操作系统启动管理器。GNU GRUB是由GRUB(GRandUnified Bootloader)派生而来。GRUB最初由Erich Stefan Boleyn 设计和应用,简单的说既能引导Linux,同时也能引导Windows;
GRUB主要优势:
- 支持多文件系统
- 可以直接在文件系统中查找内核文件
- 在系统启动过程中可以用grub的交互界面编辑和修改启动项
- 可以动态的修改grub配置文件
GRUB的作用:
- 加载操作系统内核
- 提供启动交互菜单
- 调用其他引导程序实现多系统引导
GRUB的配置文件主要存储在/boot/grub/目录。
[root@localhost ~]# ll /boot/grub/
总用量 274
-rw-r--r--. 1 root root 63 6月 11 16:50 device.map
#grub中硬盘的设备文件名与系统的设备文件名的对应文件
-rw-r--r--. 1 root root 13396 6月 11 16:50 e2fs_stage1_5
#ext2、ext3文件系统的stage1.5文件
#e2fs_stage1_5的前512个字节的内容是start.S对应的二进制文件,后面的部分是操作文件系统部分。
-rw-r--r--. 1 root root 12636 6月 11 16:50 fat_stage1_5
#fat文件系统的stage1.5文件
-rw-r--r--. 1 root root 11780 6月 11 16:50 ffs_stage1_5
#ffs文件系统的stage1.5文件
-rw-------. 1 root root 745 6月 11 16:50 grub.conf
#grub的配置文件
-rw-r--r--. 1 root root 11772 6月 11 16:50 iso9660_stage1_5
#iso9660文件系统的stage1.5文件
-rw-r--r--. 1 root root 13284 6月 11 16:50 jfs_stage1_5
#jfs文件系统的stage1.5文件
lrwxrwxrwx. 1 root root 11 6月 11 16:50 menu.lst -> ./grub.conf
#grub的配置文件,是grub.conf的软链接
-rw-r--r--. 1 root root 11972 6月 11 16:50 minix_stage1_5
#minix文件系统的stage1.5文件
-rw-r--r--. 1 root root 14428 6月 11 16:50 reiserfs_stage1_5
#reiserfs文件系统的stage1.5文件
-rw-r--r--. 1 root root 1341 11月 15 2010 splash.xpm.gz
#系统启东市grub程序的背景图片
-rw-r--r--. 1 root root 512 6月 11 16:50 stage1
#安装到引导扇区中的stage1的备份文件
-rw-r--r--. 1 root root 126116 6月 11 16:50 stage2
#安装到引导扇区中的stage2的备份文件
-rw-r--r--. 1 root root 12040 6月 11 16:50 ufs2_stage1_5
#UFS文件系统的stage1.5文件
-rw-r--r--. 1 root root 11380 6月 11 16:50 vstafs_stage1_5
#vstafs文件系统的1.5文件
-rw-r--r--. 1 root root 13980 6月 11 16:50 xfs_stage1_5
#xfs文件系统的stage1.5文件
1、在grub中分区的标识方法
2、grub的配置文件
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda5
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0 #默认启动第一个操作系统
timeout=5 #等待时间,默认是5秒
splashimage=(hd0,0)/grub/splash.xpm.gz #启动时默认背景文件保存的位置
hiddenmenu #异常菜单,启动时默认只能看到读秒,不显示菜单
title CentOS 6 (2.6.32-573.el6.x86_64) #启动菜单标题
root (hd0,0) #启动程序保存的分区
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=59faabe5-826e-4598-9153-471b1cfc73b7 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-573.el6.x86_64.img
#kernel
#/vmlinuz-2.6.32-573.el6.x86_64 内核文件位置“/”指的是/boot分区
#ro 启动时以制度方式挂在根文件系统
#root=UUID=59faabe5-826e-4598-9153-471b1cfc73b7 文件系统所在位置
#rd_NO_LUKS 禁用LUKS,LUKS用于给磁盘加密
#KEYBOARDTYPE=pc KEYTABLE=us 键盘类型
#rd_NO_MD 禁用软raid
#crashkernel=auto 自动为crashkernel预留内存
#LANG=zh_CN.UTF-8 语言环境
#rd_NO_LVM 禁用LVM
#rhgb(Redhat graphics boot) 用图片来代替启动过程中的文字信息
#quiet 隐藏启动信息,仅显示重要信息
#initrd /initramfs-2.6.32-573.el6.x86_64.img 指定initramfs内存发文件系统镜像文件位置
#注意:以上所说的禁用只是在启动过程中禁用,为了加快启动速度
3、grub的加密
- 生成加密密码字符串
#生成加密密码字符串
[root@localhost ~]# grub-md5-crypt
Password:
Retype password:
$1$4Yayz0$EDv/kFwD.IixUDUj8uT0G1
-
加密启动菜单
方式一:无需密码即可启动操作系统**
[root@localhost ~]# vi /boot/grub/grub.conf
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda5
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
password --md5 $1$4Yayz0$EDv/kFwD.IixUDUj8uT0G1 #加密
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-573.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=59faabe5-826e-4598-9153-471b1cfc73b7 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-573.el6.x86_64.img
方式二:需要输入密码才可以启动操作系统**
[root@localhost ~]# vi /boot/grub/grub.conf
[root@localhost ~]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda5
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
password --md5 $1$4Yayz0$EDv/kFwD.IixUDUj8uT0G1
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS 6 (2.6.32-573.el6.x86_64)
lock #加入lock,如果不输入正确的grub密码系统无法正常启动
root (hd0,0)
kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=59faabe5-826e-4598-9153-471b1cfc73b7 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-573.el6.x86_64.img
设置lock后操作系统会卡在引导菜单位置无法正常启动,需要按“P”键,输入对应密码才可以正常启动。
三、系统修复模式
-
单用户模式
Linux的单用户模式类似于Windows的安全模式,只启动最少的成语用于系统修复。在单用户模式中,Linux引导进入根shell,网络将被禁用,只有少数进程运行。
注意:单用户模式下无网络,如为生产服务器请先确保远程管理卡(物理机)或VM(Exsi宿主机)可以正常连接。
如何进入单用户模式:
方式一:
[root@localhost ~]vi /etc/init id:1:initdefault: #修改默认默认运行级别1 #不建议使用方式一
方式二:
重启操作启动,进入grub启动菜单。
按“e”键进入编辑模式。
选中kernel内核,继续按“e”进入编辑模式,在quiet后输入“ ”空格1指定系统进入单用户模式,按后回车确认修改。
按“b"键引导启动操作系统,注意不要重启,以上修改只是临时有效,重启后会正常启动操作系统而不是进入单用户模式。
我们可以看到无需输入用户密码既可以进入系统,如果我们遗忘了root密码可以使用单用户模式启动操作系统进行修改,修改完毕后重启操作系统即可。
- 光盘修复模式
光盘启动模式是将系统启动盘设置为光盘,完全绕开操作系统的磁盘进行启动,理论上使用此方式可以操作操作系统上的任何内容。
设置bios从光盘引导启动。
使用chroot命令改变系统根目录。
说明:使用光盘引导启动后我们所在的目录不是真正的系统根目录而是光盘模拟的一个根目录。系统根目录被当成外来设备放在了/mnt/sysimage/目录中。
进入系统根目录后就可以根据实际需求对操作系统进行相应修复,如系统文件缺失修复等操作。
修复完毕后键入exit退出,并选择reboot重启操作系统。