实验七 命令操作
一、 学习以下内容,并做相应习题。
3.3 GRUB
从用户按下电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动引导程序GRUB,首先进行内核的引导,接下来执行init程序,完成系统初始化后,打开终端用户登录系统,用户登录后进入shell,这样就完成了从开机到登录的整个启动过程。
GNU GRUB(Grand Unified Bootloader)是一个将引导装载程序安装到主引导记录的程序,主引导记录是位于一个硬盘开始的扇区。它允许位于主引导记录区中特定的指令来装载一个GRUB菜单或是GRUB的命令环境。这使得用户能够开始操作系统的选择,在内核引导时传递特定指令给内核,或是在内核引导前确定一些系统参数(如可用的RAM大小)。
3.3.1GRUB的配置文件
GRUB的配置文件位于/boot/grub/grub.conf其内容如图3-21所示。
图3-21 GRUB的配置文件 |
其中,default=X为默认启动的系统,0为排在第一个的系统,以此类推;
timeout=X为Grub菜单停留的时间,单位为秒;如果timeout被设置为0,那么用户就没有任何选择余地,Grub自动依照第一个title的指示引导系统;
titleXXX,XXX为标题,也就是你要引导的操作系统的名字,可以自己修改;
root(hdX,Y)X和Y都为一个数值,分别代表系统的根分区在哪个硬盘的哪个分区上。root(hd0,0)表示在主机上的第一块硬盘hd0中的第一个分区里;
kernel行指定Linux的内核的文件所处的绝对路径;
initrd行指定Linux的根文件系统所在的绝对路径。initrd 文件中包含了各种可执行程序和驱动程序。
3.3.2GRUB命令行
用户可以在GRUB引导时手动输入命令来指 导GRUB的行为。在GRUB启动画面出现时按下“c”键可以进入GRUB的命令行模式如图3-22和3-23所示。下面给出了一些最基本的命令,如表3-1所示。
表3-1引导程序GRUB的常用命令 | |
命令 | 说明 |
help | 显示帮助信息 |
reboot | 重新引导系统 |
root | 指定根分区 |
kernel | 指定内核所在的位置 |
find | 在所有可以安装的分区上寻找一个文件 |
boot | 依照配置引导系统 |
图3-22 GRUB启动画面 |
图3-23 GRUB的命令行模式 |
3.4运行级别
所谓运行级别,是指操作系统当前正在运行的功能级别。在Windows操作系统中有正常模式和安全模式两种运行级别,而在Linux中运行级别从0到6,共有7种功能级别。本节将进行简单介绍。
3.4.1init进程
init进程是系统所有进程的起点,内核在完成核内引导以后(已被装入内存、已经开始运行、已经初始化了所有的设备驱动程序和数据结构等等),通过启动用户级程序init来完成引导进程的内核部分。因此,init总是第一个运行的进程(它的进程号总是1)。
init进程有两个作用。第一个作用是扮演终结父进程的角色。因为init进程永远不会被终止,所以系统总是可以确信它的存在,并在必要的时候以它为参照。如果某个进程在它衍生出来的全部子进程结束之前被终止,就会出现必须以init为参照的情况。此时那些失去了父进程的子进程就都会以init作为它们的父进程。
init进程的第二个作用是在进入某个特定的运行级别(Runlevel)时运行相应的程序,以此对各种运行级别进行管理。它的这个作用定义在/ect/inittab文件中。
3.4.2/etc/inittab文件
init进程运行时根据/etc/inittab文件来执行相应的脚本进行系统初始化,inittab配置文件的内容如图3-24所示。
图3-24 inittab配置文件 |
从配置文件的注释中可以看到对Linux可运行的7个运行级别的说明。
在inittab文件中有一个基本类型的指令,用来指定命令行所采取的动作在何种运行级别下激活命令等选项。该指令的基本格式如下:
id :runlevels :action :process
其中,id可以是任意一个名称;runlevels是一个数字,表示后面命令的运行级;action设置何时执行命令;process表示具体需要执行的命令。initdefault是一个特殊的action值,用于标识缺省的启动级别。
3.4.3运行级
Linux支持7种运行级,不同的运行级定义如表3-2所示。
运行级别原理:
1. 在目录/etc/rc.d/init.d下有许多服务器脚本程序,一般称为服务(service);
2. 在/etc/rc.d下有7个名为rcN.d的目录,对应系统的7个运行级别。系统启动时,会根据指定的运行级别进入对应的rcN.d目录,并按照文件名顺序检索目录下的链接文件。
3.5忘记密码
在Linux中,如果忘记用户账户的密码,如何来解决呢?是否需要重新安装系统?答案当然是不需要重做系统,本节我们来学习一下具体的解决办法。
3.5.1忘记root密码
如果忘记的是管理员用户root的密码,可以使用grub引导系统,通过修改引导参数,进入单用户模式,从而更改root的密码。具体步骤如下:
1. Linux开机后,屏幕上方显示“Press any key to enter the menu”提示信息,按任意键进入GRUB启动菜单,如图3-22所示;
2. 按“e”键进入grub编辑模式,如图3-25所示。使用上/下方向键选择内核“kernel”行,然后按“e”键编辑内核文件。
图3-25 grub编辑模式 |
3. 在内核文件编辑界面,文件末尾“quiet”后面加一个“空格”,然后输入“single”或“1”,回车确定修改。
图3-26 kernel文件编辑模式 |
4. 此时,返回到grub编辑模式。按“b”键启动系统,进入单用户模式,如图3-26所示。使用“passwd”命令更改root密码,然后重新启动即可。
图3-27 单用户模式修改密码 |
3.5.2忘记普通用户密码
如果忘记的是普通用户的密码,可以用root用户登入系统,通过查看/etc/passwd文件,找到想登入系统的用户名,然后修改该用户的密码即可。具体步骤如下:
1. root用户登录系统,输入命令“cat /etc/passwd”,查看用户账户配置文件,找到想要登录的用户名,假设用户账户abc。(如果知道用户名,可以直接执行第2步)
2. 使用passwd命令更改用户abc的密码,输入命令“passwd abc”,按提示两输入新密码后,用户abc的密码修改成功。
3. 使用“logout”命令注销root用户,用abc用户登录即可。
习题
1. 查看/etc/inittab文件,并手动记录其内容;
运行级别 | 英文描述 | 中文描述 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2. 进入GRUB启动菜单,修改引导文件,进入单用户模式,练习修改root用户密码;
3. 在/下创建目录,目录名为abc;
4. 创建用户,用户名为姓名缩写加学号后3位,并指定其家目录为3中创建的目录,设置其密码为111111;
5. 查看/etc/passwd,查看用户账户配置文件。