Linux学习日志(十二)

Linux内核

OS

内核的功能

进程管理:task_struct,scheduler
内存管理:
I/O管理:中断及中断处理
文件系统:ext3,ext4,reiserfs,xfs
驱动程序:
安全相关:SELinux


##定义:是通用软件,平台类的软件 

内核设计流派:

单内核:单一体系结果

      Linux 
         模块化设计:核心+外围功能性模块组成                  ko:kernel object 
         内核支持动态装卸载模块

微内核:内核子系统

       windows 
       Solaris

fork() :

   init:负责管理用户空间的进程
   init:PID 1      

Linux系统的初始化流程

POST:

  ROM+PAM

BIOS:

    boot sequence 

MBR :

466:bootloader
64: 分区表
2: 5A  

Kernel文件:基本磁盘分区,无法放在LVM

 vmlinuz 压缩存放,有两段代码组成,一个解压代码,一个为内核代码


    /sbin/init
    /lib/modules/

initrd :

rd:ram disk 

/sbin/init:

  /etc/inittab
  /etc/rc.d/rc.sysinit 脚本
  init:
    CentOS 5: SysV格式的系统初始化程序
        串行化:100
    CentOS 6:Upstart
         Dbus
              A
               B
              C

     SystemD:参考OS X中并行初始化过程

运行级别:

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

/sbin/init的配置文件(centos5):

每行定义一种操作:
  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中定义的操作:

   设定默认运行级别
   指定系统运行的初始脚本
   启动指定级别下的要启动的服务,并关闭需要停止的服务
   定义ctrlAltDel组合的动作
   初始化字符终端
   启动图开终端

流程: post–>BIOS (boot sequence)–>MBR(bootloader)–>Kernel (Centos: initrd, Centos6:intramfs)–>/sbin/init (Centos5:/etc/inittab,Centos6:/etc/inittab,/etc/init/.conf)*

/etc/inittab:

CentoS5: 每一行定义一个操作
CentoS6: Upstart脚本

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
      启动图开终端     
           X-Windos,桌面管理器

启动初始化脚本/etc/rc.d/rc.sysinit

 设置主机名
 激活SELinux和Udev     
 激活swap 
 挂载/etc/fstab定义的本地文件系统
 检测根文件系统并对其以读写方式重新挂载
 设置系统时钟
 装载键盘映射
 根据/etc/sysctl.conf设置内核参数
 激活RAID和LVM设备
 清理操作

MBR (446字节)

 bootloader:程序 
     LILO: Linux Loader    
            不能引导位于1024,Cylinder以后的分区中的OS

GRUB:Grand Unified Bootloader

            1st stage: 位于MBR中(为引导2nd)
            1.5 stage: 位于boot基本磁盘分区中,为识别内核文件所在的文件系统提供文件识别扩展 
            2nd stage: 位于boot基本磁盘分区中,GRUB的引导程序 
             boot分区大小:
                 CentOS5:100M 
                 Centos6:200M 

      /boot/grub/
         stage2:读取配置文件grub.conf            
         groub.conf

Group的功能:

 1.选择要启动的内核或系统
 2.交互式接口
         e:编辑模式
 3.基于密码保护
       1.启用内核映像
            定义在响应title下
       2.传递参数(进入编辑模式)
                在配置文件中 输入 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

启动流程: POST–》BIOS(boot sequenc)—-》GRUB(bootloader(Stage1:mb4;stage2;grub目录中))–>kernel(initrd)–>shell

HOST :宿主机
Target:目标机

制作基于HOST制作一个简单的可启动的linux;

   1.给目标磁盘分区  两个: 宿主机上:/dev/sdb1 /dev/sdb2
       /dev/sdb1 挂载至 /mnt/boot
       /dev/sdb2 挂载至  /mnt/sysroot
   2. 安装grub至目标磁盘
        grob-install --root-directory=/mnt /dev/sdb
   3. 复制内核和Initrd的文件
          cp /boot/vmlinuz-VERSION /mnt/boot/vmlinuz

          cp /root/initramfs-VERSION.img /mnt/root/initramfs.img

   4.先创建目标主机的根文件系统
      mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root} 

        ***接着去移植bash等至目标主机的根文件系统  ***
  5.为grub提供配置文件

       vim /mnt/boot/grub/grub.conf
       default=0
       timeout=5
       title TL Little linux
            root(hd0,0)
            kernel /vmlinuz ro root=/dev/sda2 quiet selinux=0 init=/bin/bash 
            initrd /initramfs.img

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),数字越小,优先级越大


     chkconfig --add 添加服务

     指定级别
     --level 

     删除:
     chkconfig --del 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值