当前位置: 首页 > news >正文

代做机械毕业设计网站宁波市高新区建设局网站

代做机械毕业设计网站,宁波市高新区建设局网站,网站建设及维护,英雄联盟网页制作素材前言#xff0c;本来让我写博客我是拒绝的然而看见大家都在写#xff0c;还能不能一起友好的玩耍了#xff1f; 我要是不写怎能和同大神们一起ZB呢#xff1f;遂开博客#xff01; 一、Linux启动内核文件 1.Linux系统组成 动态视角#xff1a;内核根文件系统 静态视… 前言本来让我写博客我是拒绝的然而看见大家都在写还能不能一起友好的玩耍了 我要是不写怎能和同大神们一起ZB呢遂开博客 一、Linux启动内核文件 1.Linux系统组成 动态视角内核根文件系统 静态视角磁盘分区相关文件 2.Kernel特点 (1)支持某块化.ko (kernel object)文件 centos7的ko文件 centos6的ko文件 注意     Linux内核模块文件的命名方式通常为模块名称.ko     centos6系统的内核模块被集放在/lib/modules/uname -r /目录下     centos7系统的内核模块被集放在/usr/lib/modules/uname -r /目录下 (2)支持模块运行时动态装载或卸载 模块的相关命令 a)加载模块insmod   modprobe insmod和modprobe的区别 当a模块与b模块有依赖关系时假设安装b模块需先安装a模块。 如果用insmod命令那么需要先insmod  a.ko 然后再insmod  b.ko。 如果用modprobe命令那么直接可以modprobeb.ko。 其中/lib/modules/“内核版本号”/modules.dep中记录了模块之间的依赖关系。 通过modprobe加载的内核均在当前的计算机内有效计算机重新启动后需要重新加载才有效。如果想要开机后自动挂载内核需要将modprobe命令写入/etc/rc.sysint文件中 b)卸载模块rmmod    modprobe -r rmmod只需要调用模块名即可比如安装的时候是inmod  a.ko 安装完毕后该模块存在于内核中的名字为a那么卸载该模块只需要rmmod  a即可。 [rootopenstack01 ~]# modprobe ip_vs #动态加载ip_vs模块 [rootopenstack01 ~]# lsmod |grep ip_vs #查看模块是否加载成功 ip_vs 125220 0 libcrc32c 1246 1 ip_vs ipv6 317340 289 ip_vs [rootopenstack01 ~]# modprobe -r ip_vs #卸载动态模块 [rootopenstack01 ~]# lsmod |grep ip_vs #模块已经卸载干净 c)查看模块lsmod 输出三列信息 分别为模块 占用内存 是否被调用 如果第三列为0则该模块可以随时可以卸载。 总结Linux kernel在单内核设计模型上吸取了多内核设计的优点使用了模块化设计     单内核设计把所有功能集成于同一个程序如Linux     微内核设计每种功能使用一个单独的子系统实现如Windows, Solaris 3.kernel组成 (1)核心文件 1)/boot/vmlinuz-VERSION-release 注 vmlinuz最后一一个z表示压缩格式的kernel文件          2)ramdisk(中间临时文件根系统动态创建出来的使用缓冲和缓存来加速对磁盘上的文件访问) 参考Linux内核Ramdisk(initrd)机制  安装操作系统后临时生成的文件能够扫描当前操作系统的硬盘驱动装载对应的模块 用于实现系统初始化的基于内存的磁盘设备把内存中的一段空间当内存使用 CentOS 5/boot/initrd-VERSION-release.img  工具程序mkinitrd CentOS 6,7/boot/initramfs-VERSION-release.img 工具程序dracut, mkinitrd 注意 a)不是必须的当自编译内核时候知道硬盘接口时候将硬盘驱动编译进kernelramdisk就不用了 b)initrd,基于ramdisk的磁盘映像文件initramfs,基于ramdisk的文件系统 initrd启动该后用free查看memory时候有一段空间被buffers和cached占用二次缓存 从2.6内核开始initrd.img采用cpio压缩不再是2.4内核使用的ext2格式无法使用mount -o loop 挂载。需要使用gunzip解压缩然后再使用cpio解包 cpio命令 cpio - copy files to and from archives -i, --extract Extract files from an archive (run in copy-in mode) 将打包文件解压或者将设备上的备份还原到系统。 -v, --verbose Verbosely list the files processed 显示打包过程中的文件名称。 -o, --create Create the archive (run in copy-out mode) 将文件拷贝打包成文件或者将文件输出到设备上。 -d, --make-directories Create leading directories where needed 在cpio还原文件的过程中自动的建立相应的目录。 -m, --preserve-modification-time Retain previous file modification times when creating files 在创建文件时保留以前的文件修改时间 (2)img文件压缩及解压 centos7的initrd文件解压流程 centos6的initrd文件解压流程 修改内核后自定义打包一个内核initrd文件 (3)img文件挂载方法 在linux中对于img文件例如虚拟机的img文件有时候需要将其挂载以便修改其中的内容。能不能将它像iso文件一样挂载呢 使用kpartx命令 kpartx - Create device maps from partition tables -a Add partition mapping -d Delete partition mappings -l List partition mappings that would be added -a -p set device name-partition number delimiter -f force creation of mappings; overrides ’no_partitions’ feature -g force GUID partition table (GPT) -s sync mode. Don’t return until the partitions are created -v Operate verbosely 然并卵我在centos6和centos7失败 据说这样使用 kpartx -av xxx.img mount /dev/mapper/loop0p1 /mnt (4)模块文件/lib/modules/VERSION-release(与内核版本发行号相同的目录)/* arch 与平台相关的特有代码专有的汇编级的代码 crypto加密解密组件 drivers驱动程序 fs 文件系统 kernel 内核自己追踪用到的文件 lib库文件 mm内存管理功能memory manage net网络功能 sound:和声音相关的驱动程序单独放出来因为有很多与声音相关的××× 二、CentOS系列PC架构MBR主机启动流程 POST -- Boot Sequence(BIOS) -- Boot Loader (MBR) -- Kernel(ramdisk) -- rootfs -- switchroot -- /sbin/init --(/etc/inittab, /etc/init/*.conf) -- 设定运行级别 -- 系统初始化脚本 -- 关闭或启动对应级别下的服务 -- 启动终端 1.POST加电自检检查硬件设备是否存在 用于实现POST的代码在主板上ROM(CMOS)芯片上 BIOSBasic Input and Output System 基本上输入输出系统固化在ROM芯片上 POST(PowerOnSelfTest)首先对每一个设备进行检查。完成后会寻找存有引导记录的设备找到后读入操作系统引导记录然后将系统控制权交给引导记录并由引导记录来完成系统的顺利启动。 2.Boot Sequence 按次序查找各引导设备第一个有引导程序的设备即为本次启动要用到的设备   3.MBR引导bootloader引导加载器程序 MBR(Master Boot Record) MBR记录一般是在磁盘 0 磁道 1 扇区共512个字节。前446个字节是BootLoder后 4*16 的 64 个字节是存放分区信息的最后 2 个字节是校验信息一般是 55AA。 提供一个菜单允许用户选择要启动的系统或不同的内核版本 把用户选定的内核装载到RAM中的特定空间中解压、展开而后把系统控制权移交给内核 (1)Windows上引导加载器ntloader (2)Linux上引导加载器 1)LILO短小精悍的linux加载器1024柱面之后无法加载现在多用于安卓手机启动     2)GRUBGrand Uniform Bootloader统一引导加载器 GRUB 0.X(CentOS 5/6)Grub Legacy GRUB 1.X(CentOS 7)Grub2,完全重写设计理念上很大改变 GRUBGRand Unified Bootloader加载内核就是MBR中的前 446 个字节是BooTLoader的一种它的作用是要选择要启动的内核。 1GRUB程序的组成 centos6 主要是由device.mapmenulststage1,stage2,以及一系列的stage1_5组成。对于这些部分我的理解是这样 device.map存放的是内核文件的根分区 menu.lis是grub.conf的链接文件但是这个名字我觉得更与它的功能接近就是菜单列表。里卖弄设置了可以选择的内核菜单。存放于stage2中。 stage用于grub引导程序过大所以分2段引导第一段存放在MBR中第二段存放于内核文件系统中第一段引导完成后可以找到 第二段。 但是第二段是存放于内核文件系统中的此时还没有格式化文件系统如何可以访问到第二段的 menu.lst 呢就需要借助于中间层 stage1_5有它来协助 stage1 段来访问 stage2 段。stage1_5通常位于 stage1 字段后的 63 个扇区。 由于stage2 在内存中存放可以使用的文件系统不确定所以这就是有多个 stage1_5 的原因了。 2grub.conf 文件参数意义 default0 # 默认启动的内核title, 0 表示是第一个 timeout5 # 默认等待时间 splashp_w_picpath(hd0,0)/grub/splash.xpm.gz # 指定菜单的背景图片的路径。为xpm格式采用gzip压缩只能为14bits色 hiddenmenu # 隐藏菜单 title CentOS (2.6.32-431.el6.x86_64) # 标题名用户可自定义 root (hd0,0) # 指定 grub 的根位置 # 指定 kernel 文件的位置还要指出 root系统启动后 的位置挂载方式 ro这项很关键。 # 加载后会启动 init 进程。 kernel /vmlinuz-2.6.32-431.el6.x86_64 ro rootUUID17df3f60-a2a2-4de3-bdeb-b6fb4950d848 rd_NO_LUKS KEYBOARDTYPEpc KEYTABLEus LANGen_US.UTF-8 rd_NO_MD SYSFONTlatarcyrheb-sun16 rd_NO_LVM crashkernelauto rhgb quiet rd_NO_DM rhgb quiet# 在内核启动过程中装载根文件系统时有用initrd /initramfs-2.6.32-431.el6.x86_64.img # initramfs 是以 gzip 压缩的 cpio 格式的文件。内核启动时将他作为一个临时的根文件系统。 # grub 的 stage2 将initrd加载到内存里让后将其中的内容释放到内容中 # 内核便去执行init脚本这时内核将控制权交给了init文件处理。 # init 它也主要是加载各种存储介质相关的设备驱动程序。当所需的驱动程序加载完后 # 会创建一个根设备然后将根文件系统rootfs以只读的方式挂载。 # 这一步结束后释放未使用的内存转换到真正的根文件系统上面去同时运行/sbin/init程序 # 执行系统的1号进程。此后系统的控制权就全权交给/sbin/init进程了。 Linux内核在初始化之后会执行init进程而init进程会挂载我们的根文件系统但由于init程序也是在根文件系统上的所以这就有了悖论。 Linux采用两步走的方法来解决这个问题。 Linux2.6 版以前的方法是除了内核vmlinuz之外还有一个独立的initrd.img映像文件其实它就是一个文件系统映像linux内核在初始化后会 mount initrd.img作为一个临时的根文件系统而init进程就是在initrd.img里的然后init进程会挂载真正的根文件系统然后 umount initrd.img。 但Linux2.6内核的实现方式却不太一样虽然完成的功能是一样的。Linux2.6采用initramfs。 initramfsinit ram filesystem它是一个cpio格式的内存文件系统制作的方法有两个一个是http://blog.csdn.net/htttw/article/details/7215858介绍的但这样做出来的initramfs是和内核vmlinuz分开的因此我们需要在grub里写上initramfs的路径。 而另 一种方法是把内核和initramfs制作在一起成为一个文件方法是在linux源码make menuconfig然后General setup--选择Initial RAM filesystem and RAM disk (initramfs/initrd) support然后在Initramfs source file(s)里输入我们的initramfs目录然后make bzImage。这种方法做出来的内核就只有一个文件不需要指定initramfs了。 从2.6内核以后真正的内核文件是initramfs开头的initrd开头的注意后面的结尾dump可能是原始备份的 centos7 3grub的功能 (1)提供菜单并提供交互式接口 (2)选择要启动的内核或系统 允许传递引导参数给内核 选择界面可隐藏 # 可以自启动是通过 grub 像内核传递参数。 # 应用之一是修改 root 密码忘记密码使用 e 选项传递单用户指令。 centos7 centos6 (3)为编辑功能提供保护机制 启用内核文件 选择运行指定的内核得先输入密码 传递参数 使用e命令得先输入密码 [rootopenstack01 ~]# grub-md5-crypt Password: Retype password: $1$32hfn$HcmdhoMIJvGir.2hNKz8W0 # 上面是生成的加密字符串 # 然后将信息加入到 grub.conf 文件中格式如下 password --md5 $1$32hfn$HcmdhoMIJvGir.2hNKz8W0 # 当然加入 grub.conf 文件的位置不同加密效果也不一样。 # 加入到 title 之前的话会加密整个菜单。 # 加入到 title 指内的话会加密对应的操作系统的入口。   4.Kernel实现功能 kernel自身初始化实现功能  --- 探测可识别到的所有硬件设备 --- 加载硬件驱动程序有可能会借助于ramdisk加载驱动 --- 以只读方式挂载根文件系统  --- 运行用户空间的第一个应用程序/sbin/init        5./sbin/init管理用户空间服务进程 init程序的在不同CentOS版本上类型 CentOS 5及以前SysV init     配置文件/etc/inittab CentOS 6Ubantu研发的Upstart       配置文件/etc/inittab   /etc/init/*.conf CentOS 7Systemd      配置文件/usr/lib/systemd/system/, /etc/systemd/system/ (1)CentOS 5 SysV init配置文件/etc/inittab [rootopenstack01 ~]# cat /etc/inittab id:3:initdefault: 此处 表示默认启动级别为3文本界面不能为0级别 /etc/inittab文件每行定义一种action 以及与之对应的process 格式id:runlevels:action:process id一个任务的标识符 runlevels在哪些级别启动此任务####若此处为空则表示所有级别 action在什么条件下启动此任务 wait等待切换至此任务所在的级别时执行一次 respawn再次发起此任务终止就自动重新启动 initdefault设定默认运行级别此时process会省略不是设定任务而是默认启动级别 sysinit设定系统初始化方式此处一般为指定/etc/rc.d/rc.sysinit脚本(CentOS5和6用到7无) process任务 (2)CentOS 6init程序upstart但依然为/sbin/init其配置文件 /etc/init/*.conf, /etc/inittab仅用于定义默认运行级别注意*.conf为upstart风格的配置文件各功能切割成片段 init-system-dbus.conf主要在哪儿启动服务的配置文件 rcS.conf:  系统初始化脚本 start-ttys.conf启动时的终端数量 rc.conf启动服务的配置文件 系统初始化首先从/etc/init/rcS.conf开始 end script exec /etc/rc.d/rc.sysinit rcS.conf里面有这样行表明这个rcS.conf执行完后才开始执行rc.sysinit配置文件 更改默认tty数量文件 (3)CentOS 7不需要任何启动脚本 init程序systemd配置文件/usr/lib/systemd/system/*,  /etc/systemd/system/* 完全兼容SysV脚本机制因此service命令依然可用不过建议使用systemctl命令来控制服务  # systemctl  {start|stop|restart|status}  name[.service] 6.启动运行级别初始化控制/etc/rc.d/rc#.d(1)系统运行级别为了系统的运行或维护等目的而设定的机制0-6共7个级别0关机, shutdown1单用户模式(single user)root用户无须认证维护模式2多用户模式(multi user)会启动网络功能但不会启动NFS维护模式3多用户模式(mutli user)完全功能模式文本界面4预留级别目前无特别使用目的但习惯以同3级别功能使用5多用户模式(multi user) 完全功能模式图形界面6重启reboot1) 默认级别3, 52) 级别切换init #3) 级别查看命令who -r   runlevel(2)/etc/rc.d目录1)rc #脚本接受一个运行级别数字为参数当级别切换时启动或关闭服务K*要停止的服务K##*优先级数字越小越是优先关闭依赖的服务先关闭而后关闭被依赖的S*要启动的服务S##*优先级数字越小越是优先启动被依赖的服务先启动而依赖的服务后启动注意按照glob通配数字越小排在前面 注意开机时启动的服务越早开启关闭的时候越靠后 2)/etc/rc.d/rc脚本框架(vim /etc/rc.d/rc) 关闭服务脚本 for i in /etc/rc$runlevel.d/K* ; do# Check if the subsystem is already up.subsys${i#/etc/rc$runlevel.d/K??}[ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] || continuecheck_runlevel $i || continue# Bring the subsystem down.[ -n $UPSTART ] initctl emit --quiet stopping JOB$subsys$i stop[ -n $UPSTART ] initctl emit --quiet stopped JOB$subsys done 开启服务脚本 for i in /etc/rc$runlevel.d/S* ; do# Check if the subsystem is already up.subsys${i#/etc/rc$runlevel.d/S??}[ -f /var/lock/subsys/$subsys ] continue[ -f /var/lock/subsys/$subsys.init ] continuecheck_runlevel $i || continue# If were in confirmation mode, get user confirmationif [ $do_confirm yes ]; thenconfirm $subsysrc$?if [ $rc 1 ]; thencontinueelif [ $rc 2 ]; thendo_confirmnofifiupdate_boot_stage $subsys# Bring the subsystem up.[ -n $UPSTART ] initctl emit --quiet starting JOB$subsysif [ $subsys halt -o $subsys reboot ]; thenexport LC_ALLCexec $i startfi$i start[ -n $UPSTART ] initctl emit --quiet started JOB$subsys done 开启的时候执行最后一个启动脚本时执行/etc/rc.d/rc.local脚本此脚本是启动过程中最后启动的一个脚本。 S99local做了一个软链接给rc.local (3)/etc/init.d/* (/etc/rc.d/init.d/*)脚本执行方式 # /etc/init.d/SRV_SCRIPT  {start|stop|restart|status} # service  SRV_SCRIPT   {start|stop|restart|status} 1.CentOS 6 chkconfig命令 管理控制/etc/init.d/每个服务脚本在各级别下的启动或关闭状态 1) 查看chkconfig  --list   [name] 2) 添加chkconfig  --add  name 3) 删除chkconfig  --del  name 4) 修改指定的链接类型 chkconfig  [--level  LEVELS]  name  on|off|reset --level LEVELS指定要控制的级别默认为2345 5) 能被添加的服务的脚本定义格式 #!/bin/bash # # chkconfig: ### ## ## 注释运行级别、启动优先级、关闭优先级 # description: 2.CentOS 7待续 (4)/etc/rc.d/rc.local脚本开机自动读取此文件中命令 正常级别下最后启动的一个服务S99local没有链接至/etc/init.d下的某脚本 而是链接至了/etc/rc.d/rc.local /etc/rc.local脚本 因此不便或不需写为服务脚本的程序期望能开机自动运行时直接放置于此脚本文件中即可。 7.系统初始化脚本:/etc/rc.d/rc.sysinit (1) 设置主机名 (2) 设置欢迎信息 (3) 激活udev和selinux (4) 挂载/etc/fstab文件中定义的所有文件系统 (5) 检测根文件系统并以读写方式重新挂载根文件系统 (6) 设置系统时钟 (7) 根据/etc/sysctl.conf文件来设置内核参数 (8) 激活lvm及软raid设备 (9) 激活swap设备 (10) 加载额外设备的驱动程序 (11) 清理操作 8.启动终端 tty1:2345:respawn:/usr/sbin/mingetty tty1 ... ... tty6:2345:respawn:/usr/sbin/mingetty tty6 1mingetty会调用login程序 2打开虚拟终端的程序除了mingetty之外还有诸如getty等 启动开机流程总结 内核级别 1.POST做开机启动时候的硬件检测功能 2.BootSequence(BIOS)启动加载主引导分区MBR中的引导加载器程序BootLoader    在LInux现行的BootLoader是三段划分(打破446字节限制)的GRUB程序     第1段写在BootLoader中     第1.5段在其后扇区用于文件系统的引导     第2段在boot/grub中提供国土部接口和调用系统内核kernel 3.Kernel识别硬件、加载驱动、只读挂载根文件系统、同时交付给用户空间第一个程序/sbin/init 此处特别要注意系统发行商为了适应多种硬件接口驱动调用会在第一次安装系统时候自动识别硬件接口并调用唯一驱动程序来生成ramdisk文件以内存当磁盘做虚根驱动接口后会切换到真实的根文件系统上 CentOS 5系列是initrd当磁盘映像文件会造成二次缓存缓冲 CentOS 6/7系列改进为initramfs以文件系统形式可以不二次占用缓存和缓冲   用户空间级别 4./sbin/init接管后更具其配置文件来初始化 5.根据/sbin/init中的配置会设置默认运行级别以及一些在/etc/init.d/设置的开机服务 6./etc/rc.d/rc.sysinit运行系统初始化脚本完成系统初始化 7.关闭对应级别下需要停止的服务启动对应级别下需要开启的服务 8.设置登录终端 [-- 启动图形终端] 转载于:https://blog.51cto.com/renjunjie622/1775749
http://wiki.neutronadmin.com/news/105379/

相关文章:

  • 东莞网站建设有什么网络公司wordpress网站关闭
  • 杭州网站制作专做外贸库存的网站
  • 定制 网站电子商务网站开发方式
  • 小地方网站建设公司取名字的网站 优帮云
  • 目前热门的网站建设语言wordpress的意思和读音
  • 广州有哪些做网站的公司门户网站系统设计
  • 网站系统分析报告手机网站建设哪家专业
  • 做网站模板平台cms wordpress模板制作
  • 药材公司网站建设模板WordPress无法取消置顶文章
  • 凡科网站空间慢wordpress图片源码
  • 合肥建设工程竣工结算备案网站建设工程司法解释(一)
  • 深圳线运营是网站建设天津建设银行网站
  • 高校网站建设的重要性网站建设和维护要点
  • 网络直播平台搭建seo文章代写平台
  • 电脑手机一体网站张家界有没有做网站的公司
  • 海口房产网站建设wordpress 商务模板
  • 雅虎网站收录入口住房和城乡建设部政务服务门户app
  • 佛山做网站开发有哪些可以做任务的网站
  • 温州建校官网整站seo技术搜索引擎优化
  • 做网站能赚到流量费吗如何建设好医院网站
  • 网站添加白名单长沙中小企业有哪些公司
  • 网站设计网页的优缺点阿里巴巴国际站网站建设
  • 站长申论如何建立淘宝客网站
  • 网站建设与管理试卷_美食网站建设页面要求
  • 网站管理后台地址网上商城图片
  • 个人建站需要多少钱wordpress 啊树
  • 邢台做网站建设优化制作公司金信一条龙优秀个人网站模板下载
  • 网站建设与网页设计从入门到精通wordpress 千万数据
  • 扁平化网站设计方案做的好的宠物食品网站
  • 做网站需要注意多少页手机怎么做程序