【linux系统基础学习随笔】1.linux基础

启动部分

BIOS

计算机通电后,第一件事就是读取刷入ROM芯片的开机程序,这个程序叫做基本输入输出系统(Basic Input/Output System)

硬件自检

  • BIOS程序首先检查,计算机硬件能否满足运行的基本条件,这叫做”硬件自检”(Power-On Self-Test)
  • 如果硬件出现问题,主板会发出不同含义的蜂鸣,启动中止。如果没有问题,屏幕就会显示出CPU、内存、硬盘等信息。

启动顺序

  • 硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。
  • 这时,BIOS需要知道下一阶段的启动程序具体存放在哪一个设备
  • BIOS需要有一个外部储存设备的排序,排在前面的设备就是优先转交控制权的设备。这种排序叫做”启动顺序”(Boot Sequence)
  • BIOS按照”启动顺序”,把控制权转交给排在第一位的储存设备

主引导记录

  • 计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x550xAA,表明这个设备可以用于启动;如果不是,表明设备不能用于启动,控制权于是被转交给启动顺序中的下一个设备
  • 这最前面的512个字节,就叫做主引导记录(Master boot record,缩写为MBR)

主引导记录的结构

主引导记录只有512个字节。它的主要作用是告诉计算机到硬盘的哪一个位置去找操作系统。

  1. 第1-446字节:是用来记录系统的启动信息的,调用操作系统的机器码
  2. 第447-510字节(64个字节):分区表(Partition table),分区表的作用,是将硬盘分成若干个区
  3. 第511-512字节:主引导记录签名(0x55和0xAA)

分区表

  • 磁盘分区是使用分区编辑器在磁盘上划分几个逻辑部分
  • 磁盘一旦划分成多个分区,不同类的目录与文件可以存储进不同的分区内
  • 主引导记录因此必须知道将控制权转交给哪个区
  • 分区表的长度只有64个字节,里面又分成四项,每项16个字节。所以,一个硬盘最多只能分四个一级分区,又叫做主分区
    1. 第1个字节:如果为0x80,就表示该主分区是激活分区,控制权要转交给这个分区。四个主分区里面只能有一个是激活的。
    2. 第2-4个字节:主分区第一个扇区的物理位置(柱面(Cylinder)、磁头(Heads)、扇区号(Sector)等等)
    3. 第5个字节:主分区类型,比如FAT32、NTFS等
    4. 第6-8个字节:主分区最后一个扇区的物理位置
    5. 第9-12字节:主分区第一个扇区的逻辑地址
    6. 第13-16字节:主分区的扇区总数

扇区

  • 扇区是硬盘存储上的概念,机械硬盘的内部是金属盘片,将圆形的盘片划分成若干个扇形区域,这就是扇区,若干个扇区就组成整个盘片
  • 扇区是硬盘上最小的读写单位,这个是硬盘决定的,不是操作系统决定的
  • 对现在的硬盘来说,逻辑扇区的大小等于物理扇区的大小,所以也并没有严格区分物理扇区和逻辑扇区

物理扇区

物理扇区就是底层硬件意义上的扇区

逻辑扇区

  • 而在物理扇区之上,操作系统划分的逻辑扇区,是为了方便操作系统读取写入硬盘数据而设置的,其大小与具体地址,都可以通过一定的公式与物理地址对应
  • 同时如果出现的坏扇区,系统可以通过逻辑扇区,将物理上的坏扇区地址,重新定位到硬盘上备用的好扇区上,这样也就延长了硬盘的使用寿命

硬盘启动

计算机的控制权就要转交给硬盘的某个分区了
四个主分区里面,只有一个是激活的。计算机会读取激活分区的第一个扇区,叫做”卷引导记录”(Volume boot record,缩写为VBR)

操作系统

  • 控制权转交给操作系统后,操作系统的内核首先被载入内存。
  • 以Linux系统为例,先载入/boot目录下面的kernel。内核加载成功后,第一个运行的程序是/sbin/init。它根据配置文件(Debian系统是/etc/initab)产生init进程。这是Linux启动后的第一个进程,pid进程编号为1,其他进程都是它的后代
  • 然后,init线程加载系统的各个模块,比如窗口程序和网络程序,直至执行/bin/login程序,跳出登录界面,等待用户输入用户名和密码。

硬件设备文件名

  • 只要插入硬盘,Linux会自动检测和分配名称
  • 一个硬盘可以分成多个分区,每个分区都会有一个系统分配的名称
  • 第一块SCSI硬盘名称叫sda,它的第一个分区叫sda1
硬件 设备文件名
IDE硬盘 /dev/hd[a-d]
SCSI/SATA/USB硬盘 /dev/sd[a-p]
光驱 /dev/cdrom或/dev/hdc
软盘 /dev/fd[0-1]
打印机(25针) /dev/lp[0-2]
打印机(USB) /dev/usb/lp[0-15]
鼠标 /dev/mouse

分区

  • 磁盘分区是使用分区编辑器在磁盘上划分几个逻辑部分
  • 磁盘一旦划分成多个分区,不同类的目录与文件可以存储进不同的分区内
  • 分区表的长度只有64个字节,里面又分成四项,每项16个字节。所以,一个硬盘最多只能分四个一级分区,又叫做主分区

扩展分区

  • 随着硬盘越来越大,四个主分区已经不够了,需要更多的分区. 但是,分区表只有四项,因此规定有且仅有一个区可以被定义成扩展分区(Extended partition)
  • 所谓扩展分区,就是指这个区里面又分成多个区。这种分区里面的分区,就叫做逻辑分区(logical partition)
  • 为了突破4个分区的限制,就取出一个分区作为扩展分区
    • 扩展分区最多只能有1个
    • 主分区加扩展分区最多有4个
    • 不能写入数据,只能包含逻辑分区,逻辑分区最多是23个

格式化

  • 格式化是指根据用户选定的文件系统(如FAT16(2G),FAT32(4G)、NTFS、EXT2、EXT3、EXT4)对分区进行划分
  • 目的是为了更好的写入和读取数据
  • 主要是把整个分区切分成等大小的数据块,每个数据块是4KB,10K需要使用2个半的数据块。是存放文件的最小空间。
  • 微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做簇
  • 簇(cluster)的本意就是一组,即一组扇区(一个磁道可以分割成若干个大小相等的圆弧,叫扇区)的意思。因为扇区的单位太小,因此把它捆在一起,组成一个更大的单位簇更方便进行灵活管理
  • 在分区中划出一片用于存放文件分配表,目录表等用户文件管理的磁盘空间。
    • ID
    • 修改时间
    • 权限
    • 数据块位置
  • 格式化会清空数据

挂载点

  • 为了让Linux系统中可以访问这些分区,需要把这些分区挂载到对应的目录上
  • 在Linux中是把目录称为挂载点
  • 把目录和分区链接在一起的过程成为挂载
  • /为根目录,必须挂载到一个分区上,默认所有子目录都会写入这个分区
  • 同一级目录下面的所有子目录可以有自己的独立存储空间
  • 必须有的分区
    • / 根分区
    • swap分区(交换分区,虚拟内存,一般为内存的2倍,不要超过2G)
  • 推荐分区
    • /boot (启动分区,200M) 单独分区,避免分区写满造成系统无法启动

挂载示例:

  • /dev/sd2挂载到了 /目录上,也就是说向/目录下在写文件就是往/dev/sd2分区里写文件
  • /dev/sd1挂载到了 /boot目录上,也就是说向/boot目录下在写文件就是往/dev/sd1分区里写文件
  • /dev/sd3挂载到了 /home目录上,也就是说向/home目录下在写文件就是往/dev/sd3分区里写文件