导言:
最近在做CCNA的题库时,遇到一个考查Cisco router启动过程的题目。如下
A Cisco routeris booting and has just completed the POST process. It is now ready to find andload an IOS image. What function does the router perform next?
A.Itchecks the configuration register.
B.Itattempts to boot from a TFTP server.
C.Itload the first image 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不再加载任何配置文件。
以下是我做的路由器启动过程流程图,错漏之处在所难免,欢迎指正!