14_01~~14_04

14_01

linux系统启动流程

POST(加电自检)-->BIOS(Boot Sequence)-->MBR(bootloader,446(mbr只读取一个,不会再读取第二个))-->Kernel(一般是压缩存放的)-->(ROOTFS)/sbin/init(/etc/inittab)-->-->-->

启动的服务不同:

运行级别:0-6

0:halt(关机)

1:single user mode,直接以管理员身份切入

2:multi user mode, no NFS

3: multi user mode(文本多用户模式.text mode)

4:reserved(暂未使用,保留的模式)

5: multi user mode(图形多用户模式,graphic mode)

6:reboot()

详细启动过程:(windows的bootloder不认其他系统,所以如果先安装linux再安装windows,windows的bootloader就把linux的bootloader覆盖掉,安装双系统须先安装windows)

!!win8会锁定MBR,所以安装了win8后,该硬盘就安装不了其他系统

linux的bootloader(MBR)

LILO:LInux LOader(不能引导1024柱面之后的分区的内核,不支持8G后的磁盘,适合于嵌入式)

GRUB:GRand Unified Bootloader

Stage1:MBR

Stage1_5:

Stage2:/boot/grub/

grub.conf

default=0 # 设定默认启动的title的编号,从0开始

timeout=s # 等待用户选择的超时时长,单位是秒

splashimage=(hd0,0)/grub/splash.xpm.gz # grub的背景图片

hiddemenu: # 隐藏菜单

title Red Hat Enterprice Linux Server(2.6.18-308.el5) #内核标题,或操作系统名称,字符串,可自由修改

root (hd0,0) #内核文件所在的设备:对grub而言,所有类型硬盘一律hd,格式为(hd#,N):hd#,  #表示第几个磁盘:最后的N表示对应磁盘的分区;

kernel /vmlinxu-2.6.18-308.el5 ro root=/dev/vo10/root rhgb quiet  #内核文件路径,及传递给内核的参数

initrd /initrd-2.6.18-308.el5.img  ramdisk文件路径(安装系统的过程的最后一步生成的)!!!!版本号要保持一致

,,,,

,,,,

,,,,

内核设计风格:

核心:动态加载 外围的内核模块

内核:/lib/modules/"内核版本号命名的目录"/

内核自身名称:vmlinux-x.x.x

/lib/modules/2.26.32/

RedHat5: ramdisk-->initrd

RedHat6:ramfs-->initramfs

Redhat,SUSE

单内核:设计简单,linux(线程在linux中被称为,轻量级进程--LWP。)

核心:ko(kernel object)

so()

微内核:设计复杂,windows,Solaris(线程)

chroot: 装换根的目录。:chroot /PSTH/TO/TEMPROOT [COMMAND。。。]

chroot /test/virrot  /bin/bash

ldd /PSTH/TO/BINARY_FILE:显示二进制文件所以来的共享库

根是自引用的。

10:0:wait: /etc/rc.d/rc 0

rc0.d/

K*

stop

S*

start

/etc/rc.d/init.d, /etc/init.d

服务类脚本:

start

SysV: /etc/rc.d/init.d

start|stop|restart|status

reload|configtest

chkconfig(!虽然chkconfig和description被注释掉了,但是chkconfig还是会分析这两行。当我们使用chkconfig命令时,任何有了这几行的脚本,都能够自动被创建连接)

#chkconfig:runlevels SS(启动优先次序) KK(关闭优先次序)

runlevels:‘-‘表示没有级别,默认为s*开头的连接;

如果省略级别指定,默认为2345级别或当前级别;

当chkconfig命令为此脚本在rc#.d目录创建连接时,runlevels表示默认创建为S*开头的连接,除此以外的级别都默认创建为K*开头的连接;

s后面的启动优先级为ss所表示的数字;k后面关闭优先次序为kk所表示的数字;

#description:说明此脚本的简单功能;\,续行

@@@先开启的服务后关闭,后开启的服务先关闭的原因是,先开启的服务可能被后面的服务所依赖

chkconfig

--list 空     查看所有独立守护服务的启动设定;  独立守护进程!

--list 服务名  查看特定服务

chkconfig --add SERVICE_NAME  创建/rc.d的链接文件

chkconfig --del 服务名     删除/rc.d下的链接文件

chkconfig --level RUNLEVELS 服务名 {on|off}

myservice.sh:通过锁文件判断一个服务是否开启

#!/bin/bash

#

#chkconfig: 2345 77 22

#description:Test Service

#

LOCKFILE=/var/lock/subsys/myservice

status() {

if [ -e $LOCKFILE ]; then

echo "Running..."

else

echo "Stoped."

fi

}

usage() {

echo "‘basename $0‘ {start|stop|restart|status}"

}

case $1 in

start)

echo "Starting..."

touch $LOCKFILE

;;

stop)

echo "Stoping..."

rm -f $LOCKFILE &> /dev/null

;;

restart)

echo "restart..."

;;

status)

status

;;

*)

usage

;;

esac

/etc/rc.d/rc.local:系统最后启动的一个服务,准确说,应该执行的一个脚本;

S99loacl 系统启动时,最后一个启动的脚本。

所以一些不方便定义成服务的,或者我们不易把之写成脚本的命令,我们可以写入这里!!!!!!

/etc/inittab的任务:

1、设定默认运行级别;

2、运行系统初始化脚本;

3、运行指定级别对应的目录下的脚本;

4、设定Ctrl+Alt+Del组合键的操作;

5、定义ups电源在电源故障/恢复时执行的操作;

6、启动虚拟终端(2345级别);

7、启动图形终端(5级别);

守护进程类型:

独立守护进程

xinitd:超级守护进程(需要关联运行级别)。超级守护进程是瞬时守护进程的代理人  (多个超级守护进程)

瞬时守护进程:不需要关联至运行级别(多个瞬时守护进程)

核心: /boot/vmlinuz-version

内核模块(ko):/lib/modules/version/

内核设计:

单内核

模块化设计

微内核

装载模块:

insmod

modprobe

www.kernel.org

kernel-2.6.17------2(主版本号).6(次版本号).17(修正号)

用户空间访问、监控内核的方式:

/proc,/sys

伪文件系统

/proc/sys: 此目录中的文件很多是可读写的

/sys/:某些文件可读写

设定内核参数值的方法:(暂时)

echo VALUE > /proc/sys/TO/SOMEFILE

sysctl -W kernel.hostname

永久有效(不能立即生效): /etc/sysctl.conf

立即生效的命令:#sysctl -p  -------通知内核重读sysctl.conf

sysctl -a :显示所有内核参数及其值

内核模块管理:

lsmod :查看 使用的内核模块

modprobe MOD_MAME; 装载某模块

modprobe -r MOD_MAME; 卸载某软件模块

modinfo:查看某模块的相关信息

insmod /PATH/TO/MODULE_FILE;装载模块

rmmod MOD_NAME;

depmod /PATH/TO/MODULE_DIR;

POST-->BIOS(Boot Sequence) --> BootLoader(MBR)-->Kernel(initrd,initramfs)-->init(/etc/inittab)

/etc/inittab:

设定默认运行级别

系统初始化(/etc/rc.d/rc.sysinit)

运行指定级别的服务脚本

/etc/rc.d/init.d/

/etc/rc.d/rc#.d

rc0.d--rc6.d

K*

S*

00-99:运行次序

启动虚拟终端

启动图形终端

/etc/rc.d/rc.sysinit:

检测并以读写方式重新挂载根文件系统;

设定主机名;

检测并挂载/etc/fstab中的其他文件系统;

启动swap分区;

初始化外围硬件设备的驱动;

RHRL6:

upstart-->init

/etc/inittab

/etc/init/*.conf

内核初始化:

16_01

编译内核:

1、配置

make menuconfig

make gconfig

make kconfig

make oldconfig

make config

保存为 .config

2、

make

make modules_install

make install

模块安装位置: /lib/modules/KERNEL_VERSION/

如何实现部分编译:

1、只编译某子目录下的相关代码:

make dir/

make arch/

make drivers/net/

2、只编译部分模块

make M=drivers/net/

时间: 2024-08-25 23:15:06

14_01~~14_04的相关文章

Docker on Microsoft Azure

Docker蓬勃发展,如日中天.微软自然也不甘落后,且不说即将发布的.支持Docker技术的Windows Nano Server和Windows Server 2016.我们来看看在Microsoft Azure上如何使用Docker吧. Microsoft Azure目前并没有发布独立的Container Service,而是将Docker集成到VM和CLI中.这样,用户就可以通过是用CLI来创建和管理Docker了.看起来有点简陋不是?没关系,有胜于无.再说了,相信微软不会让大家失望的.顺