Linux 的开机流程分析
1. 加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置;
2. 读取并执行第一个开机装置内 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序);
3. 依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;
4. 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 信息;
5. init 执行 /etc/rc.d/rc.sysinit 档案来准备软件执行的作业环境 (如网络、时区等);
6. init 执行 run-level 的各个服务之启动 (script 方试);
7. init 执行 /etc/rc.d/rc.local 档案;
8. init 执行终端仿真程序 mingetty 来启动login 程序,最后就等待用户登入啦
即:BIOS自检与硬件检测--》bootloader加载kernel 自检与硬件检测--》kernel呼叫init --》init呼叫 rc.sysinit 系统初始化--》init呼叫各服务初始化--》init呼叫rc.local 本地用户设置初始化--》进入登录程序
BIOS (Basic Input Output System)
BIOS 是透过硬件的 INT13 中断功能来读取 MBR 的;
Boot Loader 程序安装在哪里呢?就在开机装置的第一个扇区 (sector) 内,也就是我们一直谈到的MBR (Master Boot Record, 主要启动记录区)。
 
/sbin/init  /etc/inittab与runlevel
第一支程序 init 及配置文件
/sbin/init 最主要的功能就是准备软件执行的环境,包括系统的主机名、网络设定、语系处理、文件系统格式及其他服务的启动等。 而所有的动作都会透过init 的配置文件,亦即是 /etc/inittab 来规划,而 inittab 内还有一个很重要的设定项目,那就是默认的runlevel (开机执行等级) ;
 
run level 分为 7 个等级:
 0 - halt (系统直接关机)
 1 - single user mode (单人维护模式,用在系统出问题时的维护)
 2 - Multi-user, without NFS (类似底下的 runlevel 3,但无 NFS服务)
 3 - Full multi-user mode (完整的有网络功能的纯文本模式)
 4 - unused (系统保留功能)
 5 - X11 (与runlevel 3 类似,但加载使用 X Window)
 6 - reboot (重新启动)
 
/etc/inittab 的内容与语法
档案的语法是利用冒号 (:) 将设定分隔成为四个字段,每个字段的意义与说明如下:
[设定项目]:[run level]:[init 的动作行为]:[指令项目]
 
1. 设定项目:最多四个字符,代表 init 的主要工作项目,只是一个简单的代表说明。
2. run level:该项目在哪些 run level 底下进行的意思。如果是 35 则代表 runlevel 3 与 5 都会执行。
3. init 的动作项目:主要可以进行的动作项目意义有:
4. 指令项目:亦即应该可以进行的指令,通常是一些 script 。
 
/etc/rc.d/rc.local
用户自定义开机启动程序
 
 
make  confing 流程
 
 
动态与静态函数库
静态(Static)特色:
扩展名:                 (扩展名为 .a)这类的凼式库通常扩展名为 libxxx.a 的类型
编译行为:       这类凼式库在编译的时候会直接整合到执行程序当中,所以利用静态凼式库编译成的档案会比较大一些;
独立执行的状态:    这类凼式库最大的优点,就是编译成功的可执行文件可以独立执行,而不需要再向外部要求读取凼式库的内容 。
升级难易度:      虽然执行档可以独立执行,但因为凼式库是直接整合到执行档中, 因此若凼式库升级时,整个执行档必须要重新编译才能将新版的凼式库整合到程序当中。                               也就是说,在升级方面,只要凼式库升级了,所有将此凼式库纳入的程序都需要重新编译!
 
动态 (Dynamic)特色:
扩展名:                    (扩展名为 .so)这类凼式库通常扩展名为 libxxx.so 的类型;
编译行为:                动态凼式库与静态凼式库的编译行为差异挺大的。 与静态凼式库被整个捉到程序中不同的,动态凼式库在编译的时候,在程序里面只有一个『 指向                                        (Pointer)』的位置而已。也就是说,动态凼式库的内容并没有被整合到执行档当中,而是当执行档要使用到凼式库的机制时, 程序才会去读取凼式库来使                                 用,由于执行文件当中仅具有指向动态凼式库所在的指针而已, 并不包含凼式库的内容,所以档案大小比较小点;
独立执行的状态:    这类型的凼式库所编译出来的程序不能被独立执行, 因为当我们使用到凼式库的机制时,程序才会去读取凼式库,所以凼式库档案『 必须要存在』才行,                                 而且,凼式库的『 所在目录也不能改变』,因为我们的可执行文件里面仅有『指针』即当要取用该动态凼式库时, 程序会主动去某个路径下读取。所以动                                 态凼式库可不能随意移动或删除,会影响很多相依的程序
升级难易度:      虽然这类型的执行档无法独立运作,然而由于是具有指向的功能, 所以,当凼式库升级后,执行档根本不需要进行重新编译的行为,因为执行档会直接指                                 向新的凼式库档案 (前提是凼式库新旧版本的档名相同喔!)。
 
RPM 
安装
[root@www ~]# rpm -ivh package_name
选项与参数:
-i :install 的意思
-v :察看更细部的安装信息画面
-h :以安装信息列显示安装进度
范例一:安装 rp-pppoe-3.5-32.1.i386.rpm
[root@www ~]# rpm -ivh rp-pppoe-3.5-32.1.i386.rpm
Preparing... ####################################### [%]
:rp-pppoe ####################################### [%]
 
范例二、直接由网络上面的某个档案安装,以网址来安装:
[root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm
RPM 升级与更新 (upgrade/freshen)
-Uvh     后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动更新至新版;
-Fvh     如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!
 
RPM 查询 (query)
root@www ~]# rpm -qa <==已安装软件
[root@www ~]# rpm -q[licdR] 已安装的软件名称 <==已安装软件
[root@www ~]# rpm -qf 存在亍系统上面的某个文件名 <==已安装软件
[root@www ~]# rpm -qp[licdR] 未安装的某个文件名 <==查阅 RPM 档案
选项与参数:
查询已安装软件的信息:
-q :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详绅信息 (information),包括开发商、版本等说明等;
-ql :列出该软件所有的档案与目录所在完整文件名 (list);
-qc :列出该软件的所有配置文件 (找出在 /etc/ 底下的檔名而已)
-qd :列出该软件的所有说明文件 (找出不 man 有关的档案而已)
-qR :列出与该软件有关的相依软件所有的档案 (Required 的意思)
 
 
利用 yum 进行查询、安装、升级与移除功能
[root@www ~]# yum [option] [查询工作项目] [相关参数]
选项与参数:
-y   :    当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
--installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
[查询工作项目] [相关参数]:这方面的参数有:
search :  搜寻某个软件名称或者是描述 (description) 的重要关键字;
info :      同上,不过有点类似 rpm -qai 的执行结果;
provides:从档案去搜寻软件!类似 rpm -qf 的功能!
 
 
[root@www ~]# yum [option] [查询工作项目] [相关参数]
选项与参数:
install   :后面接要安装的软件!
update : 后面接要升级的软件,若要整个系统都升级,就直接 update 即可-q
remove  : 移除后面接的软件;  
 
 
备份策略
1.系统基本设定信息
 /etc/   整个目录
 /home 整个目录
 /var/spool/mail
 /boot
 /root
 如果你自行安装过其他的套件,那么 /usr/local/ 或 /opt 也最好备份一下!
2.网络服务数据信息
 软件本身的配置文件案,例如:/etc/ 整个目录,/usr/local/ 整个目录
 软件服务提供的数据,以 WWW 及 MySQL 为例:WWW 资料:/var/www 整个目录或 /srv/www 整个目录,及系统的用户家目录MySQL : /var/lib/mysql 整个目录
 其他在 Linux 主机上面提供的服务之数据库档案!
 
由于硬件或者费用的限制,鸟哥推荐需要备份目录:
 /boot
 /etc
 /home
 /root
 /usr/local(或者是 /opt 及 /srv 等)
 /var(注:这个目录当中有些暂存目录则可以不备份!)
 
备份用储存媒体的选择
1.硬件备份,如硬盘,光盘等
2. 异地备援系统,将数据定期备份到异地机器当中
 
备份的种类、频率与工具:
积累备份和差异备份
完整备份之累积备份 (Incremental backup)
如果你的主机是负责相当重要的服务,那么当系统损毁时,希望在最短的时间复原系统,仅仅备份关键数据时不行的,因为只有关键数据,还得重新安装新的disturbtion,还的考虑新旧版本之间的差异问题,还得进行数据的移植与系统服务的重建;所以需要完整备份;
 
积累备份:
                                                           累积备份操作意图  
 仅仅与前一次累计结果相比较,备份与前一次累计的不同之处;
 
累积备份使用的备份软件
dd, cpio, dump/restore
# 1. 用 dd 来将 /dev/sda 备份到完全一模一样的 /dev/sdb 硬盘上:
[root@www ~]# dd if=/dev/sda of=/dev/sdb
# 由于 dd 是读取扇区,所以 /dev/sdb 这颗磁盘可以不必格式化!非常的方便!
# 只是你会等非常非常久!因为 dd 的速度比较慢!
# 2. 使用 cpio 来备份不还原整个系统,假设储存媒体为 SATA 磁带机:
[root@www ~]# find / -print | cpio -covB > /dev/st0 <==备份到磁带机
[root@www ~]# cpio -iduv < /dev/st0 <==还原
 
假设 /home 为一个独立的文件系统,而 /backupdata 也是一个独立的用来备份的文件系统,那如何使用 dump 将/home 完整的备份到 /backupdata 上呢?可以像底下这样进行看看:
# 1. 完整备份
[root@www ~]# dump -0u -f /backupdata/home.dump /home
# 2. 第一次进行累积备份
[root@www ~]# dump -1u -f /backupdata/home.dump.1 /home
 
差异备份:
差异备份与累积备份有点类似,也是需要进行第一次的完整备份后才能够进行。只是差异备份指的是:每次的备份都是与原始的完整备份比较的结果。 所以系统运作的越久,离完整备份时间越长, 那么该次的差异备份数据可能就会越大!差异备份的示意图如下所示:
差异备份常用的工具与累积备份差不多!因为都需要完整备份嘛!如果使用 dump 来备份的话,那么每次备份的等级(level) 就都会是 level 1 的意思啦!当然啦,你也可以透过 tar的 -N 选项来备份喔!如下所示:
[root@www ~]
# tar -N '2009-06-01' -jpcv -f /backupdata/home.tar.bz2
/home
# 只有在比 2009-06-01 还要新的档案,在 /home 底下的档案才会被打包进home.bz2 中!
# 有点奇怪的是,目录还是会被记录下来,只是目录内的旧档案就不会备份。
此外,你也可以透过 rsync 来进行镜像备份喔! 这个 rsync 可以对两个目录进行镜像 (mirror) ,算是一个非常快速的备份工具!简单的指令方法为:
 
[root@www ~]# rsync -av 来源目录 目标目录
# 1. 将 /home/ 镜像到 /backupdata/home/ 去
[root@www ~]# rsync -av /home /backupdata/
# 此时会在 /backupdata 底下产生 home 这个目录来!
[root@www ~]# rsync -av /home /backupdata/
# 再次进行会快很多!如果数据没有更动,几乎不会进行任何动作!
 
总结
  • Linux启动流程

    • BIOS自检与硬件检测-->bootloader加载kernel 自检与硬件检测-->kernel呼叫init -->init呼叫 rc.sysinit 系统初始化-->init呼叫各服务初始化-->init呼叫rc.local 本地用户设置初始化-->进入登录程序
    • 系统初始化,服务初始化,用户设置初始化;
    • 第一支程序init及配置文件
      • /sbin/init,准备环境,各种初始化
      • /etc/inittab配置文件及语法,默认开启runlevel(7个等级)
        • [设定项目]:[run level]:[init 的动作行为]:[指令项目]
    • /etc/rc.d/rc.local
      • 用户自定义开机启动程序
  • make config 流程
    • make依据makefile的设定,呼叫原始码,函数库,编译器来编译。
    • 动态库与静态库
      • libxxx.so动态库,libxxx.a静态库
      • 静态库,整合到程序当中,不需要再向外部请求函数库,升级困难,需要把库重新编译到程序中。
      • 动态库,程序在编译的时候只指向动态库的位置,没有被编译到程序中,程序需要执行的时候到指定位置去执行。易于升级
  • RPM
    • 安装

      • rpm -ivh package_name
      • 可以网址来安装
    • 查询
      • rpm -qa 已安装软件
  • yum
    • yum [option] [查询工作项目] [相关参数] 选项与参数:

      • install   :后面接要安装的软件
      • update : 后面接要升级的软件,若要整个系统都升级,就直接 update 即可
      • remove  : 移除后面接的软件;
      • search,info;
  • 备份策略
    • 累计备份
    • 完整备份
    • 差异备份
      • 与累计备份有些类似,只是差异备份每次只能与完全备份比较并备份。累计备份,可以针对上一次累计结果来备份。
  • 备份工具
    • dd

      • 读取扇区,磁盘不必格式化。但速度较慢
      • dd if=/dev/sda of=/dev/sdb
    • dump/restore
      • 完整备份

        • dump -0u -f /backup/home.dump /home
      • 第一次进行累计备份
        • dump -1u -f /backup/home.dup.1 /home
        • 针对0 进行一次累计备份
    • tar
      • 根据时间点来备份

        • tar -N '2009-06-01' -jpcv -f /backupdata/home.tar.bz2 /home
        • 只有比2009-06-01还要新的档案,才备份
    • rsync
      • 镜像备份,速度快
      • rsync -av  来源目标  目标目录
        • rsync -av  /home /backup

linux基础学习7的更多相关文章

  1. linux基础学习之软件安装以及常用命令

    linux基础学习之软件安装以及常用命令 调用中央仓库: yum install wget 然后下载nodejs: wget https://nodejs.org/dist/v10.14.2/node ...

  2. Linux基础学习系列目录导航

    Linux基础学习-通过VM安装RHEL7.4 Linux基础学习-命令行与图形界面切换 Linux基础学习-基本命令 Linux基础学习-RHEL7.4之YUM更换CentOS源 Linux基础学习 ...

  3. linux基础学习路线&review

    linux基础学习网址: https://www.runoob.com/linux/linux-tutorial.html 比较重点的是这个启动过程的介绍学习:https://www.runoob.c ...

  4. Linux 基础学习1

    目录 Linux 基础学习 用户登录 终端 交互式接口 bash 修改ssh连接慢的步骤 命令提示符 显示提示符格式 命令 别名 命令格式 获取命令的帮助信息 man bash 快捷键 tab 键 引 ...

  5. Linux 基础学习2

    目录 Linux 基础学习2 文件目录结构 文件命名规范 文件系统结构 linux应用程序的组成 绝对路径和相对路径 目录名和基名 切换目录 切换到家目录 切换到上一次的目录 显示当前的工作目录 列出 ...

  6. Linux基础学习(全)

    使用的Linux发行版本为Redhat 1.Linux(RedHat)基础学习-命令行使用入门 2.Linux(RedHat)基础学习-文件寻址与管理 3.Linux(RadHat)基础学习-vim编 ...

  7. Linux基础学习(1)--Linux系统简介

    第一章——Linux系统简介 1.UNIX和Linux发展史: 1.1 unix发展史: (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及AT&T的贝尔实验室联合开发Mul ...

  8. Linux 基础学习(第二节)

    free命令用于显示当前系统中内存的使用量信息,格式为:“free [-h]”. 为了保证Linux系统不会突然卡住宕机,因此内存使用量应该是运维人员时刻要关注的数据啦,咱们可以使用-h参数来以更人性 ...

  9. Linux基础学习(二)

    前言: 我们在上一节了解了一下linux的硬件组成,虽然也许对具体的东西还不甚了解,但是我们知道了linux下一切皆文件这一特性 我们装好了CentOS7的虚拟机(这个可以看别人教程来装起来,比较简单 ...

  10. Linux基础学习(一)

    前言:这个学习笔记是为了督促自己能够更好的学习Linux的有关知识. 参考书目 鸟哥的linux私房菜 Chapter 1:入门建议 新手建议:重点 基础一定一定要学好 那么什么是基础呢? 先从Lin ...

随机推荐

  1. Tensorflow实现Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)

    Mask R-CNN实例分割通用框架,检测,分割和特征点定位一次搞定(多图)   导语:Mask R-CNN是Faster R-CNN的扩展形式,能够有效地检测图像中的目标,同时还能为每个实例生成一个 ...

  2. Careercup - Microsoft面试题 - 6751316000899072

    2014-05-12 07:10 题目链接 原题: Write a thread safe data structure such that there could be only one write ...

  3. leetcode 【 Remove Duplicates from Sorted Array II 】python 实现

    题目: Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For ex ...

  4. C# 方法重载 overload、方法重写 override、隐藏 new

    一.重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同.这样才能通过传递不同的参数来决定到底调用哪一个. 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法, ...

  5. [oldboy-django][2深入django]学生管理(Form)--查看(分页)

    1 需求: 查看所有学生的信息,(分页功能) 2 前端:bootstrap美化前端 <!DOCTYPE html> <html lang="en"> < ...

  6. 【转】unity Animator 怎么判断一个动画播放结束

    关于unity Animator 怎么判断一个动画播放结束这里有几种方法.希望对大家有帮助.还有其他办法的可以分享一下 第一种方法:在动画结束帧后面加个动画事件,调用下含这个变量的函数接口不是可以了? ...

  7. bzoj 4310 跳蚤 二分答案+后缀数组/后缀树

    题目大意 给定\(k\)和长度\(\le10^5\)的串S 把串分成不超过\(k\)个子串,然后对于每个子串\(s\),他会从\(s\)的所有子串中选择字典序最大的那一个,并在选出来的\(k\)个子串 ...

  8. 《Java性能权威指南》笔记----Java性能调优工具

    OS 1.CPU 用户态时间(us):cpu执行应用代码所占时间的百分比. 内核态时间(sy):cpu执行内核代码所占时间的百分比,系统态时间与应用相关. 空闲时间(id):cpu空闲时间百分比.空闲 ...

  9. codeforce div2 426 D. The Bakery

    D. The Bakery time limit per test 2.5 seconds memory limit per test 256 megabytes input standard inp ...

  10. windows 加入域

    点击computer,右击选system ,点 change setting,填写domain和computer-name 加入域,下次登陆加入,在域中会检查computer name