标签:windows graphic single linux 管理员
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/
标签:windows graphic single linux 管理员
原文地址:http://zgysolution.blog.51cto.com/9605745/1615460