Linux系统的启动
一.启动步骤和GRUB
1.Linux启动过程分析
(1)BIOS自检
l 硬件检测及初始化
l 引导启动设备
(2)引导启动设备
l 软盘(0磁道第一个扇区)
l 光盘(最外围存储轨道)
l 硬盘(MBR)
l USB存储设备
(3)调用Linux引导程序至内存中
l Linux的引导程序可以使用GRUB/LILO等引导软件
l GRUB/LILO可以安装在MBR/引导分区的引导扇区中
(4)运行Linux内核
l 内核放在/boot目录中,Linux系统可以同时支持多版本内核
l 解压缩内核
l 检测硬件
l 加载root文件系统
(5)执行init进程(按“i”单步运行)
l 启动新进程或关闭进程
l 选择启动模式
l 建立虚拟终端
(6)用户登录
l 输入用户名及口令
l 加载用户配置文件
l 加载shell程序
2.引导盘的创建
方法一:安装过程中创建
方法二:mkbootdisk
#mkbootdisk --device /dev/fd0 2.4.20-8
方法三:使用dd命令
# dd if=/boot/vmlinuz of=/dev/fd0
3.GRUB
(1)GRUB简介
GRUB是一种基于intel平台的功能强大的启动引导器
(2)GRUB特点
l 支持大硬盘,突破1024柱面的限制
l 支持两种界面(菜单,命令行)
l 开机画面
(3)安装GRUB
l 安装软件包
#rpm –ivh grub-0.934.i386.rpm
l 使用安装命令安装GRUB到MBR
#grub
grub>root (hdx,y)
grub>setup (hdx[,y])
(4)GRUB的配置
#vi /boot/grub/grub.conf
grub.conf中常用的配置命令有:
default=菜单项序号/saved
设置启动菜单的默认启动项
hiddenmenu
隐藏菜单界面
splashimage =图像文件全路径名
指定某文件作为启动菜单的背景图像
timeout=延迟秒数
设置启动菜单的启动延时
title 菜单项名称
开始一个菜单项的配置,设置菜单项的名称
root (hdx,y)
设置GRUB的根设备为linux内核所在的分区
kernel 内核文件名称
指定内核文件的名称及加载内核所需的参数
initrd initrd文件名
指定镜像文件的位置
map (hdx[,y]) (hdx[,y])
建立虚拟磁盘
rootnoverify (hdx,y)
指定windows启动引导器的位置
makeactive
标识指定分区为活动分区
chainloader +n/文件名称
调用指定windows启动文件
password 口令/--md5 口令密文
设置GRUB启动菜单和菜单项口令
lock
利用password设置的全局口令锁定菜单项
savedefault
保存当前启动菜单项为默认启动
文件实例:
# grub-md5-crypt(产生口令的MD5密文)
# vi /etc/grub.conf
default=0
timeout=50
splashimage=(hd0,0)/grub/splash.xpm.gz
password --md5 #!dfdasdf34123!#@$!#@
title RedHat Linux 9.0
root (hd0,2)
kernel /Vmlinuz-2.4.20-8 ro root=/LABEL=/
initrd /initrd-2.4.20-8.img
password linux
tile windows 2000
rootnoverify (hd0,0)
chainloader +1
lock
(5)GRUB的FAQ
l 编辑模式的使用
用于临时修改菜单的选项,在菜单界面中按E键进入
菜单主界面
编辑模式
l 命令行模式的使用
利用命令行命令设置GRUB,在菜单界面中按C键进入
命令模式
grub命令行中常用的命令有:
grub>root (hdx,y) //设置根设备所对应的分区
grub>kernel 内核文件 //设置内核文件的名称
grub>initrd 镜像文件名 //设置镜像文件名
grub>boot //启动指定操作系统
grub>rootnoveify (hdx,y) //设置根设备所对应的分区,但不检查加载点
grub>chainloader 文件名//加载指定的文件
grub>help //获取帮助
grub>reboot //重启系统
grub>md5-crypt //生成口令的MD5密文
grub>setup (hdx[,y]) //安装GURB到MBR/指定分区的引导扇区中
grub>hide 分区 //隐藏分区
grub>cat 文件名 //显示文件内容
grub>find 文件名 //查找文件
l 如果MBR中的GRUB引导程序被其它程序覆盖,应该如该恢复
1) 放入第一张安装启动盘,开始启动计算机:boot:linux rescue(启动linux的修复模式,加载硬盘上的LINUX系统到/mnt/sysimage)
2) #grub
grub>root (hdx,y)
grub>root (hdx)
l 恢复GRUB的配置文件
由于grub.conf设置的问题,可以采用以下方法进行恢复:
1) 放入第一张安装启动盘,开始启动计算机:boot:linux rescue(启动linux的修复模式)
2)#vi /mnt/sysimage/boot/grub/grub.conf
l 如何利用GRUB进入单用户模式,找回丢失的root用户口令
在GRUB菜单界面中按e编辑linux菜单项,给内核后面添加参数single
然后回车再按b进单用户模式、password root就可以了。
l 如何卸载GRUB
1)#rpm -e grub
2)C:\>fisk/mbr
二.init 进程
1. init进程的作用
init进程是系统启动第一个进程,它负责加载其它进程、管理系统的其它进程
2. 系统运行级别
运行级别 | 说明 |
0 | 关机 |
1 | 单用户模式 |
2 | 多用户模式、不支持NFS |
3 | 多用户模式 |
4 | 保留 |
5 | X-WINDOWS |
6 | 重启 |
可以使用init在各个运行级别中进行切换,init命令格式如下:
#init <0-6,a,s,q>
3. inittab文件的分析
/etc/inittab文件用于设置init进程在执行时加载哪些程序,inittab文件由若干个记录构成,每条记录格式如下:
ID:RUNLEVEL:ACTION:COMMAND
以下为默认inittab文件内容:
id:3:initdefault:
si::sysinit:/etc/rc.d/init.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc0
l1:1:wait:/etc/rc.d/rc1
l2:2:wait:/etc/rc.d/rc2
l3:3:wait:/etc/rc.d/rc3
l4:4:wait:/etc/rc.d/rc4
l5:5:wait:/etc/rc.d/rc5
l6:6:wait:/etc/rc.d/rc6
ca ::ctrlaltdel:/sbin/shutdown -t3 -r now
pf::powerfail:/sbin/shutdown -f -h+2 “power failure;power shutting down”
pr:12345:powerokwait:/sbin/shutdown–c “power restored;shutdown cancelled”
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
x:5:respawn:/etc/X11/prefdm -nodaemon
说明:
(1)Action用于设置调用进程的方式
Respawn | 只要进程停止,该进和便重新启动 |
Wait | 进程运行一次,init等待到它停止 |
Once | 进程运行一次 |
Boot | 系统引导过程中,进程运行,忽略等级 |
Bootwait | 系统引导过程中,进程运行,init等待结束 |
Off | 无任何行动 |
Initdefault | 系统默认运行等级 |
Sysinit | 系统引导则运行,优先于boot或bootwait |
Powerwait | 电源故障后发送信号给init,等待进程终止 |
Ctrlaltdel | 当init收到SIGINT信号时,该进程运行 |
Powerokwait | UPS恢复则向init发送SIGINT信号 |
(2) 修改/etc/inittab文件,可以设置默认启动模式、各运行级别所加载的程序、CTRLALTDEL的动作、开设虚拟用户终端
4. /etc/rc.d 的目录内容
(1)/etc/rc.d/init.d目录
l 保存所有运行等级需要的所有脚本
l 启动、停止、重启某些服务
(2)/etc/rc.d/rc
l 系统改变运行等级,通过此脚本检查/etc/rc.d/rcX.d目录和文件可存在,以及是否正在运行等,以及运行/etc/rc.d/rcX.d中所有S开头的脚本
(3)/etc/rc.d/rcX.d目录
l 存放每一运行等级默认启动项,该目录中的文件链接到:/etc/rc.d/init.d
l 文件名格式为K{Two-digit number} {script name}/S{Two-digit number} {script name},K:以stop参数运行,S:以start参数运行;Two:数字代表执行顺序
(4)/etc/rc.d/rc.local
l 该脚本在2,3,5运行等级结束时执行
(5)/etc/rc.d/rc.sysinit
l 系统初始脚本,用于设置系统的时钟、加载键盘、加载系统字体、加载其他文件系统、激活交换分区、生成日志文件
三.用户登录
1.用户登录过程
2.用户登录命令
(1)su
功能:切换用户登录
格式:#su [参数] [-] [用户名]
参数:-c 命令 :运行指定的命令
-m :不重新设置环境变量
-s shell路径 :运行指定的shell
- :连同工作环境一起切换
实例:$su -
#su user1
$su -c /sbin/init 0 root
(2)exit
功能:退出用户环境(ctrl+d)
格式:#exit
(3)login
功能:登录系统
格式:#login [参数] [用户名]
参数:
-p:通知login保持现在的环境参数
-h:用来向远程登录的主机传输用户名
实例:#login
(4)logout
功能:退出用户环境、注消用户
实例:#logout
(5)sudo
功能:以其它用户执行指定的命令,默认是以root身份,只有/etc/sudoers文件中指定的用户有权执行
格式:#sudo [参数] 命令
参数:
-b 在后台执行指令
-H 将HOME环境变量设为新身份的HOME环境变量。
-k 结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。
-l 列出目前用户可执行与无法执行的指令。
-p 改变询问密码的提示符号。
-s 执行指定的shell。
-u<用户> 以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。
-v 延长密码有效期限5分钟。
实例:#sudo /sbin/init 0
说明:/etc/sudoers文件格式为:user host=[all/nopasswd/run as 用户名] command lint;其中All代表所有文件,nopasswd代表执行文件时不需要要口令
(6)who
功能:显示登录用户信息
格式:#who [参数]
参数:-l 显示系统登录进程
-b 显示系统最后一次启动时间
实例:#who
#who -l
(7)w
功能:显示登录用户信息
格式:#w [用户]
实例:#w
(8)whoami
功能:显示当前终端登录的用户名称
实例:#whoami
(9)last
功能:显示最近的用户登录情况
格式:#last [参数]
参数:num 显示指定终端上的用户登录信息
-num 显示最近n次的用户登录信息
-i 显示登录主机的IP地址
实例:#last
#last 3
(10)wall
功能:向每个用户终端上的用户发送消息
格式:#wall [参数]
参数:-n 不显示消息来源
实例:#wall
#wall -n
(11)write
功能:向指定终端的用户发送消息
格式:#write 用户名 [终端]
实例:#write user1 tty1
注意:/etc/motd为公告板文件,用于记录所有公告信息;/etc/issue为欢迎信息文件
(12)help
功能:获取shell内置命令的帮助信息
格式:#help [内置命令名]
实例:#help
#help times
(13)man
功能:打开命令手册文件
格式:#man [命令名/文件名]
实例:#man su
本文出自 “Linux狱长” 博客,请务必保留此出处http://sswqzx.blog.51cto.com/2494644/1971537
原文:http://sswqzx.blog.51cto.com/2494644/1971537