Linux学习日志(十二)
来源:互联网 发布:网络协议都有哪些 编辑:程序博客网 时间:2024/06/07 23:51
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:bootloader64: 分区表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
- Linux学习日志(十二)
- Linux Socket学习(十二)
- Linux学习笔记(十二)
- Linux Socket学习(十二)
- Linux学习笔记(十二)
- Linux每日学习(十二)
- linux学习笔记(十二)
- SpringBoot学习笔记(十二):如何打印mybatis的日志
- Linux学习笔记(二十二)
- Linux学习笔记(十二)软件安装
- Linux学习笔记(十二、选项帮助)
- Linux学习(二十二)网络编程
- Linux 学习笔记 十二
- Linux学习 十二单元
- 传智学习日志篇:十二
- linux 学习日志(1)
- Linux学习日志(一)
- Linux学习日志(一)
- 机器学习常见算法个人总结(面试用)
- NYOJ-14-会场安排问题
- Linux学习日志(十五)
- Linux学习日志(十四)
- Linux学习日志(十三)
- Linux学习日志(十二)
- Linux学习日志(十一)
- Linux学习日志(十)
- Ubuntu 更改文件夹权限及chmod详细用法
- activemq使用系列: linux环境下ActiveMQ 的安装与使用(单节点)
- ubuntu 16.04 使用五笔拼音输入法
- Material-UI + React + Babel + Webpack 环境配置
- 【离线Tarjan 模板】LCA tarjan 算法 练习: hdu 2586 + poj 1986
- 用UGUI简单实现Inventory案例