Linux的初始化流程

POST:ROM+RAM
 BIOS:Boot Sequence

 MBR:
     446:bootloader,还要能识别文件系统
     64:分区表,16个字节一个分区
     2:5A
 
 kernel文件:基本磁盘分区,无法放在LVM上
             vmlinuz 压缩存放,有两段代码组成,一个解压代码,一个为内核代码
 /sbin/init
 /lib/
 
 initrd:
    rd:ram disk

 /sbin/init:
      /etc/inittab
         /etc/rc.d/rc.sysinit脚本



 init:
    CentOS 5: SysV格式的系统初始化程序
         串行化:
    CentOS 6:Upstart
         dbus
           A
       B
       C
     SystemD:参考OS X中并行初始化过程

   运行级别:
     0-6:7个级别
        0:关机
    1:单用户模式,直接以root用户登录
    2:多用户模式,不支持NFS文件系统
    3:完全多用户模式,文本模式,不启动图形界面
    4:预留级别
    5:完全多用户模式,图形模式
    6:重启

/sbin/init的配置文件:
    每行定义一种操作:
      id:操作的id
      运行级别:runlevels:在那些级别下执行此操作
      action:动作
         initdefault:设置默认运行级别,无需定义操作
           sysinit:指定系统初始化脚本
       si::sysinit:/etc/rc.d/rc.sysinit
     wait:等待系统切换至此级别时运行一次;
     ctrlaltdel:定义组合键被按下时要运行的命令:
     respawn:当指定的操作进程被关闭时立即在重启一次
       tty1:2345:respawn:/sbin/mingetty tty1
      process:操作
   /etc/inittab中定义的操作(init要完成的任务)
      指定默认运行级别
      指定系统运行的初始脚本
      启动指定级别下的要启动的服务,关闭要停止的服务
        /etc/init.d
             /etc/rc.d/rc.N.d(0-6)
                s##
            k##
      定义ctrlaltdel组合的动作
      初始化字符终端
          终端:对应的是设备
                /dev/tty#,/dev/ttyS#,/dev/console,/dev/pts/#
      调用:login-->/etc/issue
      启动图形终端
cmdline:内核启动时传递给内核的参数
系统初始化脚本:/etc/rc.d/rcinit
      设置主机名:
      打印文本欢迎信息
      激活SELinux和udev
      激活swap
      挂载/etc/fstab定义的本地文件系统
      实现检查根文件系统并对其以读写重新挂载
      设置系统时钟
      装载键盘映射
      根据/etc/sysctl.conf设置内核参数
      激活RAID和LVM设备
      清理操作
MBR:
    bootloader:引导加载器,是一个程序
         LILO:LInux LOader
          不能引导位于1024 Cylinder(柱面)以后的分区中的os;
     GRUB:GRand Unified Bootloader
          1st stage:位于MBR中,为了引导2nd stage
          1.5 stage:位于boot基本磁盘分区中,为识别内核文件所在的文件系统提供文件识别扩展
          2nd stage:位于boot基本磁盘分区中,GRUB的引导成勋
              boot分区大小
             Centos5:100M
             Centos6:200M

          /boot/grub/
             stage2:读取配置文件grub.conf
          Grub的功能:
          1.选择要启动的内核或系统
              隐藏交互式接口
          2.交互式接口
              e: 编辑模式
          3.基于密码保护
              启用内核映像
              定义在响应title下
          传递参数(进入编辑模式)
           在配置文件中 输入 password --md5 密码
           定义在全局段中
          grub接口
          title:操作系统或内核的标题
              root:设定内核文件所在的分区为grub的根
                  kernel:定义要使用的文件,后面可以附加传递给内核的启动参数
          initrd:指定为内核提供额外驱动等功能的ram disk或ram fs文件
          
      init的级别1的表示方法:
           1,s single S
           单用户模式几乎不会启动任何服务,且不需要用户登录;单是会执行/etc/rc.d/rc.sysinit脚本
           如果连/etc/rc.d/rc.sysinit文件也不加载,则传递emergency

           运行级别的切换
           #init [0-6]
           查看运行级别:
                  runlevel
          who -r
        grub.conf配置文件语法:
       default=#:指定默认启动的内核或os
       timeout=#:等待用户选择要启动的内核或os的时长,单位为秒钟
       splashimage=   :指定使用的背景图片
       hiddenmenu:隐藏菜单
       title
          root(hd0,0)
                    (Device Part)
             Device(磁盘)表示方式:在grub中,统统以hd开头,并紧跟一个数字做各磁盘设备的标记,从0开始
             part表示方式:代表分区,从0开始编号
           kernel
                指定内核文件及传递给内核的参数
            参数:ro root=设备文件,quiet 静默模式输出
        initrd
            文件:通常为cpio归档,并使用gzip压缩,通常以.img作为文件后缀名

         grub的安装:
        第一种方式
        #grub
          grub root(hd0,0)
          grub setup(hd0)
          grub quit

         第二种方式:
         # chroot /mnt/sysimage
         # grub-install --root-directory=/ /dev/sda


         sync 将内存文件加载到硬盘上
启动流程:POST-->BIOS(boot sequence) --> GRUB(bootloader(stage1:mbr;stage2:grub目录中)) --> kernel(initrd) --> SHELL

  HOST:宿主机
  Target:目标机
 
  基于HOST只做一个简单的可启动的Linux
   1.给目标磁盘分区
      两个:
         宿主机上:/dev/sdb1 /dev/sdb2
     /dev/sdb1 挂载至 /mnt/boot
         /dev/sdb2 挂载至 /mnt/sysroot

   2.安装grub至目标磁盘
    # grub-install --root-directory=/mnt /dev/sdb
    
   3、复制内核和initrd文件
      cp /boot/vmlinuz-Version  /mnt/boot/vmlinuz
      cp /boot/initramfs-Version.img /mnt/boot/iniyramfs.img

    4.创建目标文件的根系统文件
       mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,src,mnt,media,home,root}
       接着去移植bash等至目标主机的根文件系统

     5.为grub提供配置文件
       vim /mnt/boot/grub/grub.conf
       default=0
       timeout=5
       title
         root(hd0,0)
     kernel /vmlinuz ro root=/dev/sda1 selinux=0 init=/bin/bash
     initramfs /initramfs

Linux的内核,单内核,支持动态装载和卸载
      模块:/lib/modules/Kernel_version/


      查看pci设备的命令
      lspci -v

      查看当前内核装载的所有模块
      lsmod

      查看某模块的详细信息
      modinfo 模块

      动态卸载某模块
         modprobe -r 模块
         rmmod 模块

       动态装载某模块
          modprobe 模块
      insmod 路径文件


       /sbin/init
          /etc/inittab
       /etc/rc.d/rc.sysinit
        启动对应级别的需要启动的服务。停止需要关闭的服务
         /etc/rc.d/rcN.d/
           S##
           K##
         符号链接:/etc/init.d

         ##:表示优先级(0-99),数字越小,优先级越大

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29620572/viewspace-1796329/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29620572/viewspace-1796329/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值