Linux系统启动过程
BIOS(Basic Input Output System),基本输入输出系统。BIOS是计算机启动时加载的第一个软件。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。
主引导记录(MBR,Main Boot Record)是位于磁盘最前边的一段引导(Loader)代码。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。硬盘的主引导记录(MBR)是不属于任何一个操作系统的,它先于所有的操作系统而被调入内存,并发挥作用,然后才将控制权交给主分区(活动分区)内的操作系统。
Linux启动过程大致如下:
- 加载内核
- 启动初始化进程init
- 确定运行级别
- 加载开机启动程序
- 用户登录
- 进入 login shell(Linux启动结束)
1、加载内核
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
内核是操作系统的核心代码,可提供对硬件和其他服务的访问。 引导加载程序(The bootloader ) 将启动内核运行。
为了使内核保持合理的大小并允许为单独的硬件提供单独的模块,现代内核还使用内存中存在的文件系统,即“初始ram磁盘”的“ initrd”。
内核启动在initrd文件系统内的init脚本,该脚本加载硬件驱动程序并找到根分区。
2、运行init
内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境。由于init是第一个运行的程序,它的进程编号(pid)就是1。其他所有进程都从它衍生,都是它的子进程。查看进程可以看到pid=1的init进程。
3、运行级别
许多程序需要开机启动。它们在Windows叫做”服务”(service),在Linux就叫做”守护进程”(daemon)。init进程的一大任务,就是去运行这些开机启动的程序。
但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。Linux允许为不同的场合,分配不同的开机启动程序,这就叫做”运行级别”(runlevel)。也就是说,启动时根据”运行级别”,确定要运行哪些程序。Linux预置七种运行级别(0-6)。一般来说,0是关机,1是单用户模式(也就是维护模式),6是重启。运行级别2-5,各个发行版不太一样.
内核运行后,操作系统的其他部分也将开始运行。首先,定位,检查并挂载根分区和文件系统, 。 接下来,启动初始化进程,该进程运行初始化脚本。
这些脚本位于不同的/etc/rc1.d, /etc/rc2.d, /etc/rc3.d, /etc/rc4.d, /etc/rc5.d, /etc/rc6.d, /etc/rcS.d 内。
上面目录名中的”rc”,表示run command(运行程序),最后的d表示directory(目录)。
4. 运行/etc/init.d
以上七个 /etc/rc*.d 目录里列出的程序,都设为链接文件,指向另外一个目录 /etc/init.d ,真正的启动脚本都统一放在这个目录中。init进程逐一加载开机启动程序,其实就是运行这个目录里的启动脚本。
这样做的另一个好处,就是如果你要手动关闭或重启某个进程,直接到目录 /etc/init.d 中寻找启动脚本即可。比如,我要重启apache,就运行下面的命令:
/etc/init.d/httpd restart
/etc/init.d 这个目录名最后一个字母d,是directory的意思,表示这是一个目录,用来与程序 /etc/init 区分.
5、用户登录
一般来说,用户的登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
Linux系统登陆和远程登陆
Linux 一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的 Linux 服务器。
这时我们就需要远程登录到Linux服务器来管理维护系统。
Linux 系统中是通过 ssh 服务实现的远程登录功能,默认 ssh 服务端口号为 22。
Window 系统上 Linux 远程登录客户端有 SecureCRT, Putty, SSH Secure Shell 等,本文以 Putty 为例来登录远程服务器。
Putty 下载地址:https://www.putty.org/
如果你下载了 Putty,请双击 putty.exe 然后弹出如下的窗口。
进入你的HostName,然后输入你的用户名和密码,你就可以进入你的账号。这个远程登陆一般管理服务器的网站。因为我们的课程主要是配合芯片设计,所以就不过多介绍远程登陆。
如何登陆你的virtual Linux系统。
重新启动virtual计算机后,系统会显示你的用户名, 你需要输入密码。进入回车键。
GUI界面就不用介绍了。利用Ctrl + Alt + t 键就可以进入命令行。