linux启动过程
来源:互联网 发布:网中网会计软件答案 编辑:程序博客网 时间:2024/04/29 22:45
1、启动电源,查询BIOS(Basic Input/Output System)信息,如CPU、内存、网卡、显卡等
2、读取MBR里的bootloader,它是在硬盘的第一个扇区里,有LILO和GRUB之分,现在一般的linux用的都是GRUB,如果你的机器装的是双系统,它也能识别到WIN系统的存在,双系统中WIN损坏,可以重装WIN,不需要重装linux只需修复下GRUB就可以了。
3、GRUB会指定内核的路径,这一步就是将内核加载到内存里,一般内核放在/boot里。
4、运行第一个程序/sbin/init,它的PID是1,是所有进程的父进程,它会去读inittab文件,定义了7种启动等级(run-level)
1 single user mode
2 multi-user,without NFS
3 full multi-user mode
4 unused
5 X11
6 reboot
5、知道了run-level后,系统就执行/etc/rc(run-level).d/下的服务,以S打头的表示开机启动,K打头的表示开机不启动,数字表示启动的顺序,数字越小,启动越早。这些服务都是链接到/etc/rc.d/init.d/下的相关文件。
6、启动相应服务后,系统会读取/etc/rc.d/rc.local文件,执行文件里指定的命令,你可以把需要开机自的服务写在这里面,非常方便。
7、接下来系统会执行getty进程,它会去读取/etc/issue文件,提示用户输入用户各及密码
8、启动login进程,根据/etc/passwd文件,判断用户名及密码是否正确,若正确,往下执行,若有误,返回步骤7
9、显示文件/etc/motd内容,这相当于一个欢迎语句,然后启动shell,这里面也包括.bash_profile和.bashrc的内容
http://blog.chinaunix.net/u3/93196/showart.php?id=1973206。
/etc/profile
为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置,etc/profile中设定的变量的可以作用于任何用户,而~/.bashrc等中设定的变量只能继承/etc/profile中的变量。
/etc/bashrc
为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile
用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件被执行一次。它设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc
该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
~/.bash_logout
当每次退出bash shell时,执行该文件。
~/.bash_history
记录历史输入命令
我的系统中的相关文件如下所示,调用关系也很清楚。
# /etc/profile
# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc
pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
# ksh workaround
if [ -z "$EUID" -a -x /usr/bin/id ]; then
EUID=`id -u`
UID=`id -ru`
fi
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
if [ -x /usr/bin/id ]; then
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi
JAVA_HOME=`/usr/java/jdk1.6.0_14`
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
export PATH USER JAVA_HOME LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done
unset i
unset pathmunge
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
JAVA_HOME=/usr/java/jdk1.6.0_14
export JAVA_HOME
PATH=$PATH:$HOME/bin
BASH_ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME BASH_ENV PATH
export LC_ALL=zh_CN.gb2312
export LANG=zh_CN.gb2312
export LANGUAGE=zh_CN.2312
unset USERNAME
vi .bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
Fi
# ~/.bash_logout
clear
- linux启动过程
- Linux启动过程综述
- Linux启动过程概述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程综述
- Linux启动过程
- Linux启动过程详解
- Linux服务器启动过程
- Linux启动过程综述
- linux启动过程综述
- Linux启动过程综述
- linux启动过程
- Grub--Linux启动过程
- Linux的启动过程
- Linux启动过程综述
- Linux启动过程
- 硬盘都是占据着相当重要的地位
- 设计师要懂心理学
- [K/3Cloud] 单据新增、复制、新增行、复制行的过程
- C# winform自动居中,及特效
- Angular开发杂记——模块代替页面
- linux启动过程
- Linux命令——cut命令学习
- 使用RMAN避免Split Block的产生
- MVC只Controller跳转
- Patch workflow with mutt and git
- 遍历窗体中所有的控件
- 删除字符串中所子串【编程】
- ETL工具
- 在原有3306端口mysqld服务的情况再搭建第二个3308端口的mysql实例