Linux第八讲随笔 -tar / 系统启动流程
linux 第八讲
1.tar 参考
	作用:压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的。
	语法:tar[必要参数][选择参数][文件] 
	参数:必要参数有如下:                                                        
          -A 新增压缩文件到已存在的压缩 add            
          -B 设置区块大小        block          
          -c 建立新的压缩文件      create         
          -d 记录文件的差别       difference     
          -r 添加文件到已经压缩的文件                  
          -u 添加改变了和现有的文件到已经存在的压缩文件
          -x 从压缩的文件中提取文件     Extraction               
          -t 显示压缩文件的内容        detail                
          -z 支持gzip解压文件   gz     (不支持zip)                
          -j 支持bzip2解压文件  bz2                      
          -Z 支持compress解压文件                      
          -v 显示操作过程      					view                        
          -l 文件系统边界设置                          
          -k 保留原有文件不覆盖                        
          -m 保留文件不被覆盖                          
          -W 确认压缩文件的正确性                      
         可选参数如下:                                  
          -b 设置区块数目                              
          -C 切换到指定目录                             
          -f 指定压缩文件    					file                          
          --help 显示帮助信息                          
          --version 显示版本信息     
  辨析:首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。 为什么要区分这两个概念     呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。       
  例子:
  			.tar                                          
        解包:tar xvf FileName.tar             
        打包:tar cvf FileName.tar DirName     
        (注:tar是打包,不是压缩!)
.gz                                    
        解压1:gunzip FileName.gz              
        解压2:gzip -d FileName.gz             
        压缩:gzip FileName
.tar.gz 和 .tgz                        
        解压:tar zxvf FileName.tar.gz         
        压缩:tar zcvf FileName.tar.gz DirName
.bz2                                   
        解压1:bzip2 -d FileName.bz2           
        解压2:bunzip2 FileName.bz2            
        压缩: bzip2 -z FileName
.tar.bz2                                                 
        解压:tar jxvf FileName.tar.bz2        
        压缩:tar jcvf FileName.tar.bz2 DirName
.bz                                    
        解压1:bzip2 -d FileName.bz            
        解压2:bunzip2 FileName.bz             
        压缩:未知
.tar.bz                                
        解压:tar jxvf FileName.tar.bz         
        压缩:未知
.Z                                     
        解压:uncompress FileName.Z            
        压缩:compress FileName
.tar.Z                                 
        解压:tar Zxvf FileName.tar.Z          
        压缩:tar Zcvf FileName.tar.Z DirName
.zip   -r 压缩目录                                
        解压:unzip FileName.zip               
        压缩:zip FileName.zip DirName
.rar                                   
        解压:rar x FileName.rar               
        压缩:rar a FileName.rar DirName
使用实例                                                                                                                                                                                 
  tar -cvf log.tar log2012.log    仅打包,不压缩!                                                                                                                                                                                                                                                                                                               
  tar -zcvf log.tar.gz log2012.log   打包后,以 gzip 压缩                                                                                                                                                                                                                                                                                                          
  tar -zcvf log.tar.bz2 log2012.log  打包后,以 bzip2 压缩                                                                                                                                                                                                                                                                                                       
  在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar包; 如果加 j 参数,则以 .tar.bz2 来作为tar包名。
2.系统启动流程
	开机->引导->载入内核并执行->运行init进程->执行/etc/rc.d下面对应的Init级别的启动脚本->启动/etc/rc.local脚本->载入控制台->登录
1.BIOS 加电自检 (Basic Input Output System)(ROM BIOS)
		  1.检测硬件连接(显卡,内存,磁盘等)是否正常
		  2.寻找启动磁盘:启动级别(硬盘、光盘、软驱)
	    3.第一个启动扇区-MBR主引导记录(Main Boot Record): (1)引导程序446  (2)分区表16*4  (3)校验码 2,以55.aa结尾
	      查看MBR: dd if=/dev/sda of=/mbr bs=1 count=512  从硬盘中读取512字节数据
	      hexdump -C /mbr: 查看mbr数据,cat 查看会乱码
	2.启动内核(kernel)
	    1.boot loader:大于512字节,无法放入引导程序中,boot loader写入引导程序中来加载 。
	    2.lilo/grub:grub进一步取代lilo。因为lilo存在着一个1024柱面的限制,并且更改了磁盘上的启动信息文件后需要重新启动系统才能同步446字节的内容,因为lilo的缺陷,已经被    grub所取代.现在的绝大多数类linux系统都采用grub做boot loader;   
	        cd /boot/grub/:查看grub 文件,stage1 ,stage2, stage1_5
	 		    stage1:在系统启动时装载stage2
	 		    stage1_5:连接stage1和stage2,格式区分引导
	 		    stage2:GRUB的核心,所有的功能都是由它实现
	 	3.grub.conf:
	 			  default:默认启动title系统
	 			  timeout:默认显示系统提示时间
	 			  splashimage:登陆时默认图片
	 			  hiddenmenu:隐藏菜单
	 			  title CentOS:启动菜单名字                                                                                                                                                                                                                                                                                   
              root (hd0,0): boot分区位置 hd0代表第一块硬盘,0代表第一个分区                                                                                                                                                                                                                                                             
              kernel /vmlinuz-2.6.32-220.el6.x86_64:内核文件名以及相对位置                                                                                                                                                                                                                                                                              
              initrd /initramfs-2.6.32-220.el6.x86_64.img :系统静态驱动
一.BIOS 加电自检 (Basic Input Output System)                                                                                                                                                                                                                                                                                                                          
     当你按电源开关开机时,电脑会首先去启动BIOS(基本输入输出系统),BIOS一般是集成在主板上的.                                                                                                                                                                                                                                                        
     BIOS 的工作                                                                                                                                                                                                                                                                                                                                  
            1.检测连接硬件,比如显卡,内存,磁盘等等,检测的目的是以后把这些设备信息提供给操作系统                                                                                                                                                                                                                                                    
            2.寻找启动磁盘,每一种BIOS都会有开机启动菜单,可以在菜单里设置以哪个设备启动系统                                                                                                                                                                                                                                                        
              比如:光驱,硬盘,网络等等,这个菜单可以设置多个选项,依照设置次序在设备上寻找启动信息                                                                                                                                                                                                                                                   
            3.找到了启动硬盘,接着BIOS就会在磁盘上寻找第一个启动扇区,也就是主引导记录MBR(Master Boot Record)                                                                                                                                                                                                                                       
              但是MBR中,存储操作系统的空间只有446字节;MBR总共是512字节(=stage1)(其中引导程序占446字节+分区表占64字节(每16个字节记录一个分区),标识符校验码占2个字节,以55.aa结尾)                                                                                                                                                                   
            如果没有在MBR中找到操作系统的内核,那么BIOS就无法继续启动工作.                                                                                                                                                                                                                                                                         
            而我们的内核往往会大于446个字节,存放在磁盘的其他位置上,既然446装不下内核,又为了能顺利的找到放在其他位置上的内核,人们想出了一个办法就在446字节里写了一个小程序,当BIOS试着启动操作系统时就会执行这个小程序,然后再由小程序来载入位于其他位置的内核.这个小程序就是启动载入器(boot loader)                                                 
            (dd if=)                                                                                                                                                                                                                                                                                                                                     
   二.BOOT Loader   参考                                                                                                                                                                                                                                                                                                                              
     linux的boot loader(上文提到的小程序) 常见的有两种:lilo grub                                                                                                                                                                                                                                                                                  
            因为lilo存在着一个1024柱面的限制,并且更改了磁盘上的启动信息文件后需要重新启动系统才能同步446字节的内容,因为lilo的缺陷,已经被grub所取代.现在的绝大多数类linux系统都采用grub做boot loader;                                                                                                                                              
            grub则没有了lilo各种限制,而且方便到能修改系统文件的启动内容就可以立刻与446内容同步.                                                                                                                                                                                                                                                   
            那么我们就看看grub的内容 它存在于 /boot/grub中                                                                                                                                                                                                                                                                                        
            GRUB有几个重要的文件,STAGE1、STAGE1.5、STAGE2                                                                                                                                                                                                                                                                                        
            STAGE1:它只有512字节,通常放在MBR中,它的作用很简单,就是在系统启动时用于装载STAGE2并将控制权交给它。                                                                                                                                                                                                                                
            STAGE2:GRUB的核心,所有的功能都是由它实现。                                                                                                                                                                                                                                                                                          
            STAGE1.5:介于STAGE1和STAGE2之间,是它们的桥梁,因为STAGE2较大,通常都是放在一个文件系统当中的,但是STAGE1并不能识别文件系统格式,所以才需要STAGE1.5来引导位于某个文件系统当中的STAGE2。根据文件系统格式的不同,STAGE1.5也需要相应的文件,如:e2fs_stage1_5,fat_stage1_5,分别用于识别ext和fat的文件系统格式。它存放于1-63的柱面之间.
            引导顺序如下:STAGE1->;STAGE1.5->;STAGE2,                                                                                                                                                                                                                                                                                            
            主要的配置文件时 grub.conf                                                                                                                                                                                                                                                                                                            
            里面选项含义:                                                                                                                                                                                                                                                                                                                         
            title:一个操作系统引动的标头,可以使多个                                                                                                                                                                                                                                                                                               
            root :指明所需文件存在于哪个磁盘哪个分区上 (hd0,0)表示第一个硬盘,第一个分区                                                                                                                                                                                                                                                           
            kernel:内核文件的名字,并且会有一些加载内核时的参数                                                                                                                                                                                                                                                                                    
            initrd:包含一些附加的驱动程序                                                                                                                                                                                                                                                                                                         
            _____________________                                                                                                                                                                                                                                                                                                                 
             #cat /boot/grub/grub.conf           grub配置文件                                                                                                                                                                                                                                                                                     
            default=0                             默认启动项,选择启动条目第一个为0号                                                                                                                                                                                                                                                             
            timeout=5                                    默认超时时间                                                                                                                                                                                                                                                                             
            splashimage=(hd0,0)/grub/splash.xpm.gz      登陆时默认图片                                                                                                                                                                                                                                                                            
            hiddenmenu                                 隐藏菜单
title CentOS (2.6.32-220.el6.x86_64)   启动菜单名字                                                                                                                                                                                                                                                                                   
            root (hd0,0)                           hd0代表第一块硬盘,0代表第一个分区                                                                                                                                                                                                                                                             
            kernel /vmlinuz-2.6.32-220.el6.x86_64        内核文件名                                                                                                                                                                                                                                                                               
            initrd /initramfs-2.6.32-220.el6.x86_64.img
三.内核启动                                                                                                                                                                                                                                                                                                                                    
            内核启动后会向bios查询电脑的所有硬件信息,然后自己接手下来管理这些设备,以便提供给linux使用                                                                                                                                                                                                                                             
            内核会试着驱动这些设备,这些设备的驱动一部分包含在内核中,叫做静态驱动,一部分以模块的方式(动态)存放文件系统中,由于此时还未挂载任何文件系统,因此还不能使用文件系统中的模块,这里只能驱动在内核中存在的硬件驱动程序的对应设备.想驱动内核中未包含的硬件驱动就需要加载文件系统.
四.启动INIT服务  参考                                                                                                                                                                                                                                                                                                                               
            顺利的挂载了根文件系统后,就会启动init服务,init内核启动的第一个用户级进程                                                                                                                                                                                                                                                             
            内核会按 /sbin/init /etc/init /bin/init 顺序寻找init程序,                                                                                                                                                                                                                                                                             
            如果找不到则内核报错                                                                                                                                                                                                                                                                                                                  
           启动init的目的就是为了初始化系统环境,启动了init就证明了内核已经顺利启动,接下来就由init服务来建立linux使用环境                                                                                                                                                                                                                          
            init做了什么?它会读取 /etc/inittab 文件,根据这个文件的信息来进行初始化工作.                                                                                                                                                                                                                                                           
            会执行三个脚本 /etc/rc.d/rc.sysinit /etc/rc.d/rc[0-6]/* /etc/rc.d/rc.local(万能配置文件,系统启动完毕后,最后运行此文件内的命令)                                                                                                                                                                                                      
            rc.sysinit 主要的功能用来建立系统的基本环境,比如:                                                                                                                                                                                                                                                                                   
                      启动udev selinux子系统                                                                                                                                                                                                                                                                                                      
                      udev负责产生 /dev中的文件,selinux负责增强系统的安全性                                                                                                                                                                                                                                                                       
                      设定核心参数 sysctl -p 加载 /etc/sysctl.conf                                                                                                                                                                                                                                                                                
                      设定系统时间 将硬件时间设定为系统时间                                                                                                                                                                                                                                                                                       
                      加载键盘和交换分区 swapon -a -e                                                                                                                                                                                                                                                                                             
                      设置主机名,挂载文件系统,并将根重新挂载为可读写的.                                                                                                                                                                                                                                                                           
                      加载动态驱动模块                                                                                                                                                                                                                                                                                                            
                      USB设备与RAID & LVM
rc 脚本设置启动级别 linux中有许多不同的启动级别,不同的启动级别会制定不同的服务                                                                                                                                                                                                                                                        
            根据指定rc的参数会对应执行 /etc/rc.d/rc[0-6].d/ 中的连接脚本文件 以S开头的则启动,K开头的不随机自启动                                                                                                                                                                                                                                 
            rc.local 前两个脚本都是系统至关重要的脚本,如果我们想在启动过程中放置一些其他程序                                                                                                                                                                                                                                                      
            应该使用rc.local脚本中                                                                                                                                                                                                                                                                                                                
            三个RC脚本执行完毕后,就会建立虚拟主控制台 执行 /bin/login 就提供了用户登陆界面了                                                                                                                                                                                                                                                      
            如果是图形 L5级别的话,会启动X window登录界面                                                                                                                                                                                                                                                                                          
          所有的启动就都已经完毕
初始化/sbin/init                                                                                                                                                                                                                                                                                                                          
            #vime/etc/inittab 初始化配置文件
# Default runlevel. The runlevels used by RHS are:                                                                                                                                                                                                                                                                                    
            #   0 - halt (Do NOT set initdefault to this)                      关机                                                                                                                                                                                                                                                               
            #   1 - Single user mode                                              单用户模式                                                                                                                                                                                                                                                      
            #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)   多用户模式,无网络模式,也就是不能远程登录                                                                                                                                                                                                             
            #   3 - Full multiuser mode                                         全部都用户模式                                                                                                                                                                                                                                                    
            #   4 - unused                                                                 保留参数                                                                                                                                                                                                                                               
            #   5 - X11                                                              图形界面模式                                                                                                                                                                                                                                                 
            #   6 - reboot (Do NOT set initdefault to this)                          重起模式                                                                                                                                                                                                                                                     
            #                                                                                                                                                                                                                                                                                                                                     
            id:3:initdefault:                                                       定义默认启动级别                                                                                                                                                                                                                                              
   #ls /etc/rc.d                                                                                                                                                                                                                                                                                                                                  
            init.d  rc0.d  rc2.d  rc4.d  rc6.d     rc.sysinit(启动初始化)                                                                                                                                                                                                                                                                         
            rc      rc1.d  rc3.d  rc5.d  rc.local          (rc0~6为运行级别脚本,启动或关闭的控制文件,S启动,K关闭,启动或关闭顺序S后面的数字越小、优先级越高)
五.登陆,加载用户环境变量                                                                                                                                                                                                                                                                                                                      
            输入用户名和密码系统验证,然后会执行                                                                                                                                                                                                                                                                                                   
            /etc/profile                                                                                                                                                                                                                                                                                                                          
            /etc/bashrc                                                                                                                                                                                                                                                                                                                           
            $HOME/.bash_profile                                                                                                                                                                                                                                                                                                                   
            $HOME/.bashrc                                                                                                                                                                                                                                                                                                                         
   查看当前启动级别                                                                                                                                                                                                                                                                                                                               
            # runlevel                                                                                                                                                                                                                                                                                                                            
            N 5                                                                                                                                                                                                                                                                                                                                   
            N是上次的级别,5是当前级别 也就是说机器开机就是5级别                                                                                                                                                                                                                                                                                   
   切换级别                                                                                                                                                                                                                                                                                                                                       
   init 3
Linux第八讲随笔 -tar / 系统启动流程的更多相关文章
- Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密
		一.系统启动流程 一般来说,Linux 系统的启动流程是这样的: 1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIO ... 
- linux文件系统启动流程、启动脚本
		linux文件系统启动流程.启动脚本 下面是一张Linux启动流程图: 在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为: 1. /sbin/init 2. /etc/ ... 
- linux:系统启动流程
		系统启动流程 本文基于CentOS6 版本 黑色部分为主流程分支,蓝色部分为详细流程分支,绿色部分是注释部分 第一步--加载BIOS打开计算机电源,计算机会首先加载BIOS信息,主要负责检测系统外围关 ... 
- Linux操作系统启动流程梳理
		接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下 ... 
- linux基础-附件1 linux系统启动流程
		附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主 ... 
- Linux系统启动流程及安装命令行版本
		Debian安装 之前也安装过很多次linux不同版本的系统,但安装后都是直接带有桌面开发环境的版本,直接可以使用,正好最近项目不是很忙,想一直了解下Linux的整个启动流程,以及如何从命令行模式系统 ... 
- 【转载】Linux系统启动流程
		原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbi ... 
- Linux系统启动流程及grub重建(1)
		日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel--& ... 
- Linux基础知识第八讲,系统相关操作命令
		目录 Linux基础知识第八讲,系统相关操作命令 一丶简介命令 2.磁盘信息查看. 3.系统进程 Linux基础知识第八讲,系统相关操作命令 一丶简介命令 时间和日期 date cal 磁盘和目录空间 ... 
随机推荐
- ML笔记:Where does the error come from?
			error来自哪? 来自于偏差Bias和方差Variance. 就如打靶时瞄准一个点f平均,打出的点f星分布在该点周围. 该点与实际靶心f帽的距离就是偏差Bias, 打出的点与该点的分布距离就是方差V ... 
- HDU2546--饭卡(01背包)
			饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ... 
- CMMI-4中19个PA的大致描述
			组织过程资产库下面有组织级标准过程库, 这个库里一共有19各PA(就是标准过程啦) PA的英文是Process Area CM(配置管理过程,英文是Configuration Manage ... 
- mysql--二进制日志(bin-log)三种格式介绍及分析
			一.Mysql binlog日志有三种格式,分别为ROW.Statement以及MiXED.Row LevelBinary Log会记录成[每一行数据被修改的形式],然后在Slave端再对相同的数据进 ... 
- 深入理解php内核 编写扩展 II:参数、数组和ZVALs
			原文:http://devzone.zend.com/article/1022-Extension-Writing-Part-II-Parameters-Arrays-and-ZVALs Part I ... 
- CenterOS 7 基础命令学习
			CentOS 7 命令 网络配置 nmcli(NetworkManageCommandLineInterface)查看网卡 nmtui(NetworkManageTextUserInterface)网 ... 
- FastDFS教程Ⅲ-文件服务器扩容
			1.简介 FastDFS文件服务器在设计时,为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式.存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是 ... 
- 《RabbitMQ Tutorial》译文 第 4 章 路由
			原文来自 RabbitMQ 英文官网的教程(4.Routing),其示例代码采用了 .NET C# 语言. In the previous tutorial we built a simple log ... 
- Android 7.1   屏幕旋转流程分析
			Android 7.1 屏幕旋转流程分析 一.概述 Android屏幕的旋转在framework主要涉及到三个类,结构如图 PhoneWindowManager:为屏幕的横竖屏转换的管理类. Wi ... 
- linux系统编程:进程间通信-fifo
			进程间通信-fifo 进程间通信的还有一种方式是fifo. fifo是还有一种管道:有名管道.从名字能够看出.它也是队列. 使用fifo通信前,得先创建fifo $ mkfifo myfifo 随后仅 ... 
