开机启动
固件firmware(CMOS/BIOS) -> post加电自检
↓
自举程序BootLoader(GRUB) -> 载入内核
↓
载入内核Kernel -> 启动硬件
↓
启动进程init
↓
读取执行配置文件/etc/inittab
时间命令
查看系统时钟 date 查看硬件时钟 hwclock 核对软件始终为硬件时钟的时间 hwclock --hctosys 核对硬件时钟为软件时钟的时间 hwclock --systohc 手动修改软件时钟为2010年 date 121511302010.38 手动修改硬件时钟 hwclock --set --date="9/22/96 16:45:05"
linux的BootLoader(GRUB)
查看grub的连接文件 vi /etc/grub.conf
内容中 kernel为内核的版本信息
在内核中 它只做2件事情:1.驱动硬件 2.启动进程init
init进程启动后读取inittab文件,执行缺省运行级别,从而继续引导过程.init进程的pid恒为1.
ppid为0的是内核调度器,在一个CPU周期中负责分配CPU时间片,从而排队执行任务.
init为所有应用程序的父进程
inittab文件
vi /etc/inittab
内容中 运行级别(runlevel)有7种(类似windows的安全模式选择)
0-halt 关机
1-single user mode 单用户模式(安全模式)只有root能够进入且无图形界面
2-multiuser,without nfs 不带图形界面
3-full multiuser mode 不带图形界面
4-unused 自定义用户模式(可以自定义启动的服务之类的)
5-x11 带图形界面的系统
6-reboot
查看运行级别 runlevel
切换运行级别 init [0123456Ss] 其中如果是S或者s 是单用户模式
切换运行级别 telinit [0123456Ss]
指定运行状态 action
指定要运行的可执行程序的完整路径 process
查看文件内容排除行首为#开头的行(有效行) grep -v "^#" /etc/inittab | more
查看如何使用配置文件 man inittab
在inittab中,所有条目采用以下格式
id:run-levels:action:process
例子 id:3:initdefault:
id :标识符
run-levels:指定运行级别,可以指定多个
action:指定运行状态
process:指定要运行的脚本/命令
action常用取值
initdefault: 指定系统缺省的启动运行级别
sysinit:系统启动执行
process中的指定命令
wait:执行process中指定的命令 并等其 结束后再运行其他命令
once:执行process中指定的命令, 不等待其结束
ctrlaltdel:按下ctrl+alt+del时执行的process指定的命令
修改系统启动2种
1.系统不管在任何运行级别都会运行的shell脚本si::sysinit:/etc/rc.d/rc.sysinit 可以在此文件中修改 来在系统启动中运行你想运行的服务或者命令
2.如果想定制不同的运行级别的启动服务或者命令可以这么做
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
/etc/rc.d/rc[0123456].d 分别存放对应于运行级别的服务程序脚本的符号链接,链接到init.d目录中对应的脚本
以rc3.d为例 ls /etc/rc.d/rc3.d
K01smartd K84wpa_supplicant S08iptables S23NetworkManager S82abrtd K10psacct K86cgred S10network S24avahi-daemon S90crond K10saslauthd K87restorecond S11auditd S25netfs S95atd K15httpd K89rdisc S12rsyslog S26acpid S99firstboot K25squid K95cgconfig S13cpuspeed S26haldaemon S99local K50dnsmasq S00microcode_ctl S13irqbalance S26udev-post K50netconsole S01sysstat S15mdmonitor S50bluetooth K74ntpd S02lvm2-monitor S20kdump S55sshd K75ntpdate S08ip6tables S22messagebus S80postfix
位于该目录下以S开头的表示start 是启动时要运行的 位于该目录下以K开头的表示kill 是启动时要杀掉的 位于S或者K后的数字 代表启动时启动的顺序
/etc/rc.d/init.d 该目录下包含了各个运行级别的服务器程序脚本
启动服务可以从init.d中进行 /etc/rc.d/init.d/sshd start
设置自启动程序
软链接方式
如果想在运行级别为3的系统中设置自启动mysql 可以这么做
创建一个软链接到运行级别3的启动目录中 ln -s /etc/init.d/mysqld /etc/rc.d/rc3.d/S100mysqld
那么重启之后 mysql的服务就会自动启动 查看一下 pstree mysql
chkconfig方式
利用 chkconfig --list 查看系统中服务的缺省启动状态
利用 chkconfig --list mysqld 查看系统中某个服务的缺省启动状态
改变mysqld在运行级别中的开启或关闭状态 chkconfig --level 2345 msyqld on
ntsysv 方式
ntsysv --level 3
GRUB
grub的配置文件默认为 /boot/grub/grub.conf 它的软链接文件在 /etc/grub.conf GRUB配置 default 定义缺省启动的系统 timeout 定义缺省等待时间 splashimage 定义grub界面图片 hiddenmenu 隐藏菜单 title 定义菜单名称 root 设置grub根设备即内核 kernel定义内核文件所在位置 initrd 命令加载镜像文件