linux 学习

学习《鸟哥私房菜》,做一点学习记录。

一: 计算机硬件相关知识

1. 计算机硬件的五个组成

输入单元:键盘,鼠标,读卡机,扫描仪,手写板,触控屏幕等等。

输出单元:包括屏幕,打印机等。

主机部分:包括CPU(控制单元与算数逻辑单元),内存。

外部存储:硬盘等

2.CPU的种类

①精简指令集(SISC: reduced instruction set computer): 微指令集较为精简,每个指令执行时间都很短,指令的执行效率较好。但是要做复杂的事情,就需要多个指令集来完成。常用与特殊用于某一功能的机器,比如导航系统,网络设备(交换机和路由器)等,他们功能比较单一,不像PC功能复杂。

②复杂指令集(CISC: complex instruction set computer): 指令数目多而且复杂,每条指令长度不相同。因为指令执行较为复杂所以每条指令花费的时间较长, 但每条个别指令可以处理的工作较为丰富。常用与功能复杂的机器,比如我们的PC机。

3. 操作系统在计算机中的角色和功能

①组成:操作系统包括操作系统核心(Kernel)和系统调用(System Call)两部分:操作系统核心功能是管理计算机所有活动以及驱动所有硬件。系统调用是为了保护核心不被改动,而提供的一组开发界面。

②核心功能:主要负责计算机的资源分配与管理,包括文件管理,内存管理,进程控制,硬件管理等等。

③角色:操作系统处于硬件之上,应用程序之下,连接硬件和应用程序。

二: linux磁盘分区

linux系统是安装在计算机组件的那个位置呢?那就是磁盘啦。所以我们先来认识一下磁盘。

1. 磁盘组成

磁盘有扇区(sector)和磁柱(Cylinder)两种单位。其中扇区是512bytes。

是否每个扇区都一样重要呢?其实每个磁盘的第一个扇区是很重要的,因为第一个扇区记录了两个重要信息:

①主引导扇区(Master boot record :MBR):安装启动管理程序的地方,有446bytes

②分割表(partition table):记录整个硬盘分割状态,有64bytes

另外2bytes是结束标志 446+64+2=512bytes

2. 磁盘组成之分割表

一个分割槽就是一个文件系统。前面的图片中有“开始磁柱”和“结束磁柱”,从开始磁柱到结束磁柱就组成一个分割槽,也就是一个文件系统。在分割表的64个字节中,最多有4组记录区,每组记录区记录了这个分割槽的起始磁柱和结束磁柱号码。

有于分割表就只有64 bytes而已,最多只能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)或延伸(Extended)分割槽。 根据上面的图示与说明,我们可以得到几个重点资讯:

  • 其实所谓的『分割』只是针对那个64 bytes的分割表进行配置而已!
  • 硬盘默认的分割表仅能写入四组分割资讯
  • 这四组分割资讯我们称为主要(Primary)或延伸(Extended)分割槽
  • 分割槽的最小单位为磁柱(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分割槽进行数据的处理

磁盘分割的好处:

① 数据安全性:一个分割槽的数据损坏不会影响另一个分割槽

②读写磁盘更高效:如果不分割,那么每次都是从第一个磁柱开始搜索或读写,性能很低。

虽然分割表只有记录4组数据的空间,但是不代表我们的硬盘只能分割出4个分割槽,因为我们可以利用拓展分配进行逻辑分割:扩展分配的想法是: 既然第一个磁区所在的分割表只能记录四笔数据, 那我可否利用额外的磁区来记录更多的分割资讯?实际上图示有点像底下这样:

3. 启动流程与主要启动扇区(MBR)

既然操作系统也是软件,那么我的计算机又是如何认识这个操作系统软件并且运行他的? 明明启动时我的计算机还没有任何软件系统,那他要如何读取硬盘内的操作系统文件啊?嘿嘿!这就得要牵涉到计算机的启动程序了! 底下就让我们来谈一谈这个启动程序吧!

  1. 首先主板上有一个存储器CMOS,上面有一个软件程序BIOS,在计算机系统启动的时候,会主动启动这个BIOS,注意BIOS是主板上的一个程序,每个主板都有的,不需要我们去载入他。

  2. BIOS会去分析计算机里面有哪些存储设备,BIOS会根据使用者的配置去读取能够启动的硬盘,并且回去该硬盘上读取第一个磁区的MBR位置, MBR这个仅有446 bytes的硬盘容量里面会放置最基本的启动管理程序。此时BIOS就功成圆满,而接下来就是MBR内的启动管理程序的工作了。

    (注意MBR只是硬盘上的一个位置,是一个扇区,就是最前面的446个字节的地方;而这个地方所存放的基本启动程序才是用于启动系统的软件)

  3. 这个启动程序的任务是加载核心文件,然后接下来就是核心文件的工作,启动管理程序也功成圆满,之后就是大家所知道的操作系统的任务啦!

总结一下过程:CMOS上的BIOS —》MBR上的启动程序 —》核心文件开始操作系统的功能

4. MBR上的启动管理程序

由於MBR仅有446 bytes而已,因此这个启动管理程序是非常小而美的。 这个boot loader的主要任务有底下这些项目:

  • 提供菜单:使用者可以选择不同的启动项目,这也是多重启动的重要功能!

  • 加载核心文件:直接指向可启动的程序区段来开始操作系统;

  • 转交其他loader:将启动管理功能转交给其他loader负责。

    上面前两点还容易理解,但是第三点很有趣喔!那表示你的计算机系统里面可能具有两个以上的启动管理程序呢! 有可能吗?我们的硬盘不是只有一个MBR而已?是没错啦!但是启动管理程序除了可以安装在MBR之外, 还可以安装在每个分割槽的启动磁区(boot sector)喔!瞎密?分割槽还有各别的启动磁区喔? 没错啊!这个特色才能造就『多重启动』的功能啊!

    我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分割槽,其中第一、二分割槽分别安装了Windows及Linux, 你要如何在启动的时候选择用Windows还是Linux启动呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的启动管理程序, 那么整个流程可以图示如下

在上图中我们可以发现,MBR的启动管理程序提供两个菜单,菜单一(M1)可以直接加载Windows的核心文件来启动; 菜单二(M2)则是将启动管理工作交给第二个分割槽的启动磁区(boot sector)。当使用者在启动的时候选择菜单二时, 那么整个启动管理工作就会交给第二分割槽的启动管理程序了。 当第二个启动管理程序启动后,该启动管理程序内(上图中)仅有一个启动菜单,因此就能够使用Linux的核心文件来启动罗。 这就是多重启动的工作情况啦!我们将上图作个总结:

  • 每个分割槽都拥有自己的启动磁区(boot sector)
  • 图中的系统槽为第一及第二分割槽,
  • 实际可启动的核心文件是放置到各分割槽内的!
  • loader只会认识自己的系统槽内的可启动核心文件,以及其他loader而已;
  • loader可直接指向或者是间接将管理权转交给另一个管理程序。

三. linux 文件系统

1. linux文件权限与目录配置
  1. 介绍文件权限与属性

上图每一列所代表的意义如下:

这部分知识比较简单,这里不做过多解释,需要注意的点如下:

①第一栏代表这个文件的类型与权限,其中第一个代表这个文件是『目录、文件或链接文件等等』

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件
  • 若是[ l ]则表示为连结档(link file);
  • 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

②图中倒数第二列代表的是文件最后修改的时间,如果想看最后一次显示的时间和第一次创建的时间,可以根据给ls 不同的参数来实现(比如mac上是-u和-U,linux上是 -u和-c),具体查看man ls 命令的输出结果

  1. 修改文件权限

①改变文件所属群组 :chgrp

1
chgrp users install.js

把install.js的文件所属群组改成users组

②改变文件拥有者 :chown

1
chown bin install.log

把install.js的文件所属用户组改成yang

③改变文件的权限,SUID, SGID, SBIT等等的特性 :chmod

不同权限对应的数值 r:4 w:2 x:1

1
chmod 754 .bashrc

上面的命令代表:改变.bashrc文件拥有者可以读写执行,同组的人可以读和执行,其他人可以读

同时还有下面的方式来改变权限:

u是user,g是group,o是other,a是all(所有人)

1
2
3
chmod  u=rwx,go=rx  .bashrc
chmod u+w .bashru
chmod a+w .bashrc
  1. 文件默认权限

    umask 可以得到 『目前使用者在创建文件或目录时候的权限默认值』

    查阅的方式有两种,一种可以直接输入 umask ,就可以看到数字型态的权限配置分数, 一种则是加入 -S (Symbolic) 这个选项,就会以符号类型的方式来显示出权限了! 奇怪的是,怎么 umask 会有四组数字啊?不是只有三组吗?是没错啦。 第一组是特殊权限用的,我们先不要理他,所以先看后面三组即可。

    1
    2
    3
    4
    [root@www ~]# umask
    0022 <==与一般权限有关的是后面三个数字!
    [root@www ~]# umask -S
    u=rwx,g=rx,o=rx

    umask 的分数指的是『该默认值需要减掉的权限!』

    一下是创建文件和目录时的(最高权限)-(被剥夺的权限)=还剩下的权限

    • 创建文件时:(-rw-rw-rw-) - (—–w–w-) ==> -rw-r–r–

    • 创建目录时:(drwxrwxrwx) - (d—-w–w-) ==> drwxr-xr-x

      注意目录一定要有x执行权限,否则无法进入该目录。

      可以修改文件和目录的默认权限:

      1
      umask 002
  2. 文件隐藏属性lsattr chattr和特殊权限 SUID/SGID/SBIT

    这是链接,可自行查看

  3. 权限和命令间的关系: 执行不同命令需要不同权限

    这是链接,可自行查看

  4. 目录配置

    linux下不同目录里面放置不同的内容,可自行上网查阅。

    另外区分两个命令 ll -d mydirecorty :显示mydirecorty这个目录文件本身的信息

    ​ ll mydirecorty:显示mydirecorty这个目录里面所含文件的文件信息

2. 磁盘与文件系统管理

这一节鸟哥说的非常清楚,直接点这里