导言:
最近在做CCNA的题库时,遇到一个考查Cisco router启动过程的题目。如下
A Cisco routeris booting and has just completed the POST process. It is now ready to find andload an IOS p_w_picpath. What function does the router perform next?
A.Itchecks the configuration register.
B.Itattempts to boot from a TFTP server.
C.Itload the first p_w_picpath file in flash memory.
D.Itinspects the configuration file in NVRAM for boot instructions.
Answer: A.
这个题目我选择了错误的选项,所以直接在网上查找与Cisco router启动顺序相关的资料,但是基本上都没有内容涉及到configurationregister。
虽然最终找到了关于configurationregister的资料,但是大多数文章中对这个细节的缺失也促使我重新翻出了CCNA的课本来查找Cisco官方的解释。
再次声明,网上查找到的关于路由器启动过程的资料都是没有问题的,只是没有涉及到所有步骤的细节,所以今天在本文中把尽量多的细节都融入每一个步骤中,以期能够帮助后来的盆友们。
路由器启动过程:
1.执行加电自检
加电自检,POST,Power On Self Test.
该过程发生在刚刚打开电源时。
在此过程中,CPU、RAM、闪存都是必须被检测的项目。
2.加载引导(bootstrap)程序
CPU控制着数据从永久的存储设备到内存的过程,而CPU只能执行在内存中的程序。在启动的过程中,内存是空的,也就是说,如果内存是空的,CPU将不能做任何事情,包括将操作系统加载到内存。
路由器利用引导程序克服这个困难。当路由器完成了POST之后,母板上的各元件已经连好,这样一个非常底层的程序——引导(bootstrap)程序——可以被加载到内存,CPU执行这个程序,它的主要任务就是将完整的IOS映像文件读入内存。
路由器的引导程序存储在ROM中。ROM中的内容是不能更改的,也就意味着引导程序不能被随意替换。
3.加载Cisco IOS
引导程序首先要确定的是它可以从哪儿获得IOS.
可以有3个地方获得IOS镜像文件:
A.闪存;
B.外部TFTP服务器;
C.ROM
加载IOS镜像文件是路由器启动过程中第一次要做出选择的步骤。当路由器加电时,它自动执行POST,然后它自动从ROM中加载引导程序。工程师不能改变这两部。然而,第三部,网络工程师可以告诉路由器从哪里加载哪个IOS镜像文件。
默认情况下,路由器会从闪存中加载IOS,当有新的IOS时也可能从TFTP服务器上加载。当我们发现新版的IOS可以工作的很好时,再把它拷贝到内存。最后,ROM中的IOS是一个限制功能版的boot ROM IOS,它主要用于闪存中的IOS升级。
Cisco公司提供了两种工具来告诉路由器加载哪个IOS。
第一种工具是configredister,也就是配置寄存器。配置寄存器是存储在路由器中的一个16位的数,通常用4位十六进制数来表示,如0x2102。配置寄存器的最后一位称为启动域,启动域告诉引导程序加载哪个软件,如下所示:
启动域为0——ROMMON;
启动域为1——boot ROM IOS;
启动域为2至F——从其他位置加载IOS,典型的为闪存。
如果启动域的值为0或1,路由器可以精确的知道如何去做;如果为其他值,路由器必须要用另一个工具——bootsystem命令——来决定下一步如何做。Boot system命令在路由器加电时,可以从配置文件中找到,它将告诉路由器IOS文件的位置及文件名。当启动域为除了0和1以外的任何值时,路由器使用boot system命令并执行以下逻辑:
1)加载在配置文件中的boot system命令中定义的IOS文件。
2)如果这个IOS文件加载失败,则尝试去找下一个boot system命令。
3)如果所有的boot system都执行失败,或者没有boot system命令,将会加载在闪存中找到的第一个IOS文件。
但是,大多数路由器默认的配置寄存器的值为0x2102,并且不使用boot system命令,则就意味着这些路由器将会加载闪存中的第一个IOS文件。
4.将配置文件读入内存
通常情况下,路由器将所有的配置命令放在一个一个文件中,称作启动配置文件(startup-config)。启动配置文件在路由器初始化时告诉路由器如何进行配置。这个文件被存储在一个很特殊的永久存储设备上,称作NVRAM——非易失性随机存储器,断电时内容不会丢失。
当配置文件进入到内存后它被称为running-config,因为此时它正在被IOS运行。
正像IOS可以从几个位置加载到内存中一样,路由器也可以从几个地方获得启动配置文件。
1)路由器可以选择忽略NVRAM中的配置文件,这样路由器启动时就没有配置文件。这对口令恢复是很有用处的,可以通过配置寄存器来实现。
2)如果在NVRAM的配置文件中有boot config命令,则可以从TFTP服务器上加载初始化配置文件。
3)路由器也可以发广播去寻找一个TFTP服务器及其上的配置文件。
在通常情况下有一个默认的加载顺序。假设配置寄存器没有被配置成忽略NVRAM中的配置文件,IOS首先在NVRAM中寻找,如果没有找到,它会再寻找TFTP服务器,如果依然没有找到配置文件,IOS将假设工程师会登陆到控制台增加配置,所以IOS不再加载任何配置文件。
以下是我做的路由器启动过程流程图,错漏之处在所难免,欢迎指正!