码迷,mamicode.com
首页 > 其他好文 > 详细

14_01~~14_04

时间:2015-02-26 18:47:38      阅读:198      评论:0      收藏:0      [点我收藏+]

标签: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/






14_01~~14_04

标签:windows   graphic   single   linux   管理员   

原文地址:http://zgysolution.blog.51cto.com/9605745/1615460

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!