Linux中启动过程和登录方式介绍

Linux系统启动过程

1、BIOS启动

当系统加电后,计算机会首先从CMOS(complementary Metal Oxide Semiconductor)芯片中加载BIOS,并且检测系统硬件基本信息,如内存、硬盘、处理器等。然后BIOS寻找是否有系统启动盘,如果没有,系统会寻找主引导区MBR(Master Boot Record)并运行记录在MBR上的程序。通常这个程序就是操作系统的Loader程序(嵌入式系统中称为BootLoader),其主要功能是指示系统在启动之后所要加载的系统以及加载方式。例如,在MBR上运行Linux的Loader程序(GRUB和LILO)后,就可以加载Linux内核。

BIOS称为固件。在计算机系统中,BIOS程序是存储于主板芯片中的,格式化硬盘对此住信息没有任何影响除使用专门工具可以对其进行擦除外,其内容始终是存在的。

2、GRUB加载系统

GRUB是一种系统运行的Loader程序,一般情况下,安装了Linux操作系统后,启动系统时的第1个程序即是GRUB。

此程序用于加载操作系统内核(如果有多个操作系统,此程序可以用于选择启动多个操作系统)。

在Linux操作系统下,与启动相关的应用程序位于/boot文件夹下。运行GRUB时读取的应用程序为/boot/grub/grub.conf文件,修改此文件可以设置加载操作系统的启动等待时间(超过此等待时间后系统将启动默认启动操作系统)、启动菜单、默认启动操作系统和操作系统内核映像文件及位置。
# ls -l /boot/grub/grub.conf    //查看此文件位置
# cat /boot/grub/grub.conf     //显示此文件内容

3、系统启动文件

在系统加载Linux内核后,系统将依次运行以下几个内核程序。系统运行的第1个内核文件为/sbin/init,此程序将创建系统第1个进程,并将此进程作为整个系统以后应用程序的父进程,然后运行/etc/rc.d/rc.sysinit初始化系统。/etc/inittab是系统运行的第3个重要程序,此程序主要用来选择系统启动级别,不同的启动级别运行不同的程序及命令,这些文件在/etc/rcX.d文件夹下读取。执行完成以上内容后,系统即加载用户所特有的信息。下面详细介绍这些文件。
(1)/sbin/init.此文件位于/sbin文件夹下,用户可以在#提示符下查询当前系统进程,可以发现init进程号为

0.在整个系统中,此进程必须处于活动状态,除非系统关闭。
# ls /sbin/init    //查看init文件位置
# ps -aux    //查看当前系统中所有进程
(2)/etc/rc.d/rc.sysinit.创建0进程后,系统将读取文件/etc/rc.d/rc.sysinit进行系统初始化。
系统初始化的内容有以下几个方面:
设置环境变量内容;
读取/etc/sysconfig/network;
使用fsck检测文件系统;
将启动信息经过dmesy存入/var/log/dmesg中;
使用/etc/sysconfig/clock文件来初始化clock;
检测系统参数proc并设置PNP;
运行rc.erial对串行端口进行初始化;
安装root、proc文件系统以及其他文件系统;
设置字体,启动Swapping等操作。
(3)/etc/inittab.读取并检测系统基本信息后,系统将读取/etc/inittab文件来选择默认的运行级别,以决定启动哪些系统服务。Linux包括6种运行级别,不同的运行级别将默认启动不同的硬件和系统环境,例如,要启动网络环境,必须在级别3和级别5中进行;要修改系统错误,一般在单用户模式级别1中进行。一般情况下,系统将默认启运行级别3或级别5.
# cat /etc/inittab
6种运行级别的义如下:
0,挂起模式,建议不要设置成这一级别;
1,单用户模式,一般在系统修复时使用;
2,多用户模式,但没有网络文件系统支持;
3,多用户完整模式,很多服务器选择这种模式;
4,没有使用;
5,为X11模式,即图形界面,运行桌面系统需要选择此级别;
6,重启模式。
(4)/etc/rcX.d.根据/etc/inittab中选择的默认级别,系统将读取/etc/rcX.d文件夹下的文件(X即为对应的级别,如1,2,3...),此文件夹下全部为S和K前缀文件。

4、初始化用户文件
(1)/etc/rc.d/rc.local是一个脚本文件,在完成以上初始化后,用户可以在该文件夹下加载系统启动时要运行的程序。系统启动时自动启动的程序即可以在此文件中添加,相当于启动时的一个批处理程序。

(2)/etc/profile文件。读取/etc/rc.d/rc.local后,系统将设置环境变量,这是系统最主要的shell配置文件,也是用户登录时系统最先检测的文件。主要包括PATH、USER、LOGNAME、MAIL、HOSTMAME等。

(3)/home/$USERNAME/./bash_profile文件。读取完/etc/profile文件后,各用户将读取自己特有的配置文件,

除root用户外,所有用户都将分别读取/home/$USERNAME/.bash_profile文件并设置自身的环境变量。

执行完以上文件后,Linux操作系统就可以登录了。

Linux登录方式

 Linux是一个多用户的网络操作系统,登录方式有多种,包括虚拟控制台和远程登录等方式。Linux启动到图形界面后(级别3),系统提供了多个虚拟控制台,每个控制台相互独立,互不影响,在字符界面下,可以通过按快捷键Alt+F1~F6进行多个虚拟控制台之间的切换,使用startx可以切换到图形界面;如果当前是图形界面,可以通过按快捷键Alt+Ctrl+F1~F6切换到字符虚拟终端,按Alt+Ctrl+F7可以返回图形界面。

远程登录是一种非常重要的登录方式,Linux服务器一般都采用远程登录的方式登录系统,通常使用telnet工具

时间: 2024-10-25 13:16:22

Linux中启动过程和登录方式介绍的相关文章

系统管理员-linux中当用户在登录时遇到无法登录的问题,或出现一些预期之外的错误时,会将数据记录在哪里

问题描述 linux中当用户在登录时遇到无法登录的问题,或出现一些预期之外的错误时,会将数据记录在哪里 如题当用户在登录时遇到无法登录的问题,或出现一些预期之外的错误时,会将数据记录在 什么地方,可用于让系统管理员排查问题 解决方案 查看系统log /var/log/syslog 解决方案二: 查看登录日志 命令: tail /var/log/secure 查看登录失败的用户信息 命令: lastb 解决方案三: log 下面没有secure那个文件啊 lastb 我的好像也只打印出了登录日期

深入理解计算机系统-之-内存寻址(四)--linux中分段机制的实现方式

linux中的分段机制 前面说了那么多关于分段机制的实现,其实,Linux以非常有限的方式使用分段.因为,Linux基本不使用分段的机制(注:并不是不使用,使用分段方式还是必须的,会简化程序的编写和运行方式),或者说,Linux中的分段机制只是为了兼容IA32的硬件而设计的.实际上,分段和分页在某种程度上显得有些多余,因为它们都可以划分进程的物理地址空间,分段可以给每一个进程分配不同的线性地址,而分页可以把同一线性地址,映射到不同的物理地址空间.与分段相比,linux更喜欢分页方式,因为: 当所

linux中expect实现自动登录的例子

使用expect实现简单自动登录,从网上看了几个脚本不错,借鉴一下 NO.1 #!/bin/sh auto_login_ssh(){ expect -c " set timeout -1; spawn -noecho ssh -o StrictHostKeyChecking=no $2 ${@:3}; expect *assword:*; send -- $1\r; interact;" } auto_login_ssh password user@hostname StrictHos

在Linux中绑定多网卡的原理介绍与实战

一.原理介绍: 1.什么是bonding? Linux bonding 驱动提供了一个把多个网络接口设备捆绑为单个的网络接口设置来使用,用于网络负载均衡及网络冗余: Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作. 2.bonding技术功能作用? bonding主要用于两个方向: a.实现 负载均衡:   通过bonding技术,将网络的业务流量平均分配到不同的

Linux中SSH端口号更改方法介绍

 SSH端口默认是22了,我们为了服务器的安全一般会把SSH端口22修改成其它的端口好了,下文小编来各位整理一篇SSH端口修改教程供各位参考.   vps一到手,第一件事就是更改ssh端口,使用一个不容易被拆解的端口号,防止被黑. 更改端口号是通过修改SSH的配置文件实现的,登录ssh后,输入: vim /etc/ssh/sshd_config 向下找到#Port 22这段 进入vi插入模式,进行编辑 删除掉Port 22前面的#,然后下一行输入新的端口号如:Port 10000(这个你自己定,

Linux中Apache并发连接数和带宽控制介绍

Linux+Apache的稳定性.安全性和性能以及低廉的价格正在赢得越来越多的市场份额,使 用Linux+Apache作网站服务器的朋友也越来越多,而Apache作为一种http服务,相比FTP总是不容易控制,特别是当网站以http方式 提供软件/音乐下载时,若是每个用户都开启多个线程并没有带宽的限制,将很快达到http的最大连接数或者造成网络壅塞,使得网站的许多正常服务都无法运 行.不过,Apache的使用者们早已开发出了mod_limitipconn和mod_bandwidth两个模块,来控

linux中忘记root用户登录密码解决方法

1.在Grub的引导装载程序菜单上,选择你要进入的条目,键入 "e" 来进入编辑模式: 2.在第二行(类似于kernel /vmlinuz-2.6.15 ro root=/dev/hda2 ),键入"e"进入编辑模式: 3.在句末加上"init=/bin/bash",回车: 4.按"b"启动系统. 这样我们即可获得一个bash的shell,进入shell后,根分区的挂载模式默认是只读,我们要将其改为可写,否则不能更改root密

linux中ssh配置与登录命令

首先,如果没有安装,那么就在命令行里apt-get install ssh 安好后,其实就可以登录开启了ssh服务的机器了   开启ssh服务的命令为: sudo /etc/init.d/sshd restart (生成公私密钥对) 查看ssh状态命令: sudo /etc/init.d/sshd status 如果是没有启动sshd守护进程,那么只需要:sudo /usr/sbin/sshd (不需要每次做)   登录时候,输命令:ssh (对方ip) -l (对方机器上有的用户名) -p (

jQuery中json对象的复制方式介绍(数组及对象)_jquery

1.jQuery自带的$.map方式 复制代码 代码如下: $.map(json, function (n) { return n; }); 这种方式原来用于复制数组还可以,今天用它复制数组中的某一条记录,发现字段名称丢失了,后来发现了第二种方法. 2.深复制与浅复制 复制代码 代码如下: // 浅层复制(只复制顶层的非 object 元素) var newObject = jQuery.extend({}, oldObject); // 深层复制(一层一层往下复制直到最底层) var newO