重点

对于Linux系统来说,无论是程序或者配置亦或是其他的组件,都是一个文件!

和java的一切皆对象相似,linux一切皆文件.

硬件装置在linux中的文件名

上文已经说过,在linux中一切皆文件,自然硬件设备对于linux系统来说也是文件.

在linux系统中,硬件设备及其对应的文件名称
IDE硬盘(太老了,我初中的时候好像就不用了.) /dev/hd[a-d]
U盘 /dev/sd[a-p]
软盘机(这个才是标准的老古董) /dev/fd[0-1]
打印机 25针: /dev/lp[0-2]
USB: /dev/usb/lp[0-15]
鼠标 USB: /dev/usb/mouse[0-15]
PS2: /dev/psaux
当前CDROM/DVDROM(这东西也不多了吧) /dev/cdrom
当前的鼠标 /dev/mouse
磁带机 IDE: /dev/ht0
SCSI: /dev/st0

其实,个人感觉上面的东西没有死记硬背的需要,在使用过程中慢慢的就会记得了.

硬盘的构成及分区

在上篇博客中有描述硬盘的构造.

硬盘是由磁盘,机械手臂,读取头和主轴马达构成的,数据实质上卸载磁盘上面的,而磁盘又可以分为扇区和磁柱,每个扇区的大小为512bytes,

磁盘的构造类似于下图:

事实上,在整个磁盘中最重要的第一个扇区,

第一个扇区主要记录了两个重要的信息:

1.主要启动记录去(Master Boot Record,MBR):安装开机管理程序的地方,大小为446bytes,

2.分割表(partition table):记录磁盘分割状态,大小为63bytes.

MBR是一个非常重要的地方,他负责存放系统的启动引导程序,当系统开机时会主动读取这个区块的内容,因此系统才知道在哪里其如何开机.

那么,计算机又是如何去识别这个系统的呢?

在上一篇博客中,提到过两个名词,CMOS和BIOS,其中CMOS负责记录各项硬件的参数,而BIOS则是主板中一个软件,而BIOS就是计算机系统启动时主动执行的程序.

当BIOS启动之后,他会开始计算机的硬件设备,他会根据使用者的设定去寻找可开机的硬盘,然后在该硬盘的MBR寻找开机管理程序,然后BIOS执行完毕,MBR内部的开机管理程序开始加载系统.

那么开机管理程序能够做什么呢?

首先,我们了解到MBR的大小非常小,只有446bytes.所以这个开机管理程序必须要十分精巧.

这个开机管理程序主要需要实现以下功能:

1.提供选单,让用户可以选择不同的开机项目,而这正是多系统引导.

2.加载系统核心程序:指向可开机的程序区段开始加载操作系统.

3.如果,没有使用当前操作系统,那么将启动其他核心程序再次重复这一工作.

也正因为第三点,所以我们才能够实现双系统功能,那么双系统功能具体是如何实现的呢?这又要涉及到MBR的另一个功能,分割表.

分割表的大小只有64bytes,比MBR还要小很多,分割表的主要功能就是进行硬盘分区.

我们了解到硬盘的最小单位是扇区,而可分割的最小单位是磁柱(多个扇区构成),再上图中,我们标注了开始磁柱(图中写错了)和结束磁柱,

这样我们就可以根据磁柱号码的方式进行分区.每个分区使用一对16进制来表示,即每个分区需要占用16字节,因此分区表中最多存放四组数据.

对于这四组数据来说分为主分区(Windos的活动分区),和扩展分区(windows的非活动分区),

如果将硬盘分区后,那么显示在linux文件系统中,则会在原本的文件名称后面,加上分区编号,比如/dev/sd1代表的就是当前硬盘的第一个分区.

按照刚才所说,一个分区表最多只能存放四笔记录,那么难道硬盘只能分四个区吗?

当然不是.除了主分区和扩展分区外,我们还可以进行逻辑分区.

那么逻辑分区又是如何实现的呢?

逻辑分区本质上是借助于扩展分区实现,在扩展分区中提供额外的分区表进行逻辑分区.但是需要注意的是,因为逻辑分区是依赖于扩展分区的,所以逻辑分区的范围因处于扩展分区之内.也因此,扩展分区表是不能够删除的.因为一旦删除分区表,该扩展分区的所有数据将会丢失.

同时还需要注意,分区编号的1-4是保留给主分区和扩展分区的,因此逻辑分区的编号是从5开始的,因此可能会出现下面这种情况:

/dev/sd1

/dev/sd2

/dev/sd5

借助于MBR和分区表,我们就可以实现了双系统这种喜闻乐见的功能:

假设我们安装了windows和linux两个操作系统,windows安装在盘1中,linux安装在盘2中.那么当我们开机时,BIOS加载盘1的MBR,提供了一个系统的选单,其中windos指向本盘,而linux则指向2盘.那么当我们选择2盘的时候,开机工作将会由2盘的核心程序加载.这样就能够实现多系统引导了.

Linux的目录树及分区

在本篇博客中提及过,linux中一切皆文件这个概念,那么linux中的文件是如何显示的呢?

在linux中,文件显示特别像一棵树-->目录树架构.即以根目录为主(根节点),然后向下呈分支状发散(子节点).

我们可以在windows和linux中使用tree命令来查看,系统的目录树.

上图就是我本机(windos系统)的目录树,和windos相似,linux的目录树以[/]作为根节点,其余所有的节点都是根据[/]衍生出来的.

比如,我们如果需要使用一个文件/home/demo/test.log,那么如何去查找呢?

我们将会进入根节点[/],然后在他的子节点中寻找home节点,然后进入/home节点,然后在home子节点中寻找demo节点,进入demo节点,寻找到test.log节点(文件).

至于目录树又是如何同文件系统关联在一起的,又要牵扯到一个新名词--->挂载!

所谓的挂载呢,就是讲一个目录,作为文件系统的进入点,然后将磁盘分区槽放置到该节点(目录)下,然后,进入该目录实际上就是进入了该分区槽.

因为linux中最重要的就是根目录即[/],因此根目录是必须挂载分割槽的!

至于其他的目录,那么我们可以随意的挂载,随心情~

类似于,我们在windows中,打开计算机,就可以看到CDEF盘,我们就可以把计算机当做linux中[/]节点,而CDEF则相当于分区槽.

那么 ,在实际中我们中应该如何对linux系统进行分区呢?

首先,我们要分割出/,这是其他分区槽的挂载点.

然后分割出swap区,作为内存交换的存储,至于其他的我们还可以根据自己的需求分割出\boot,\root,\home,\tem\usr等分区槽.

具体如何分区,还要依据我们的需求来确定.

Linux学习第三篇--Linux的文件系统相关推荐

  1. linux cadaver 命令,【Linux学习第三篇】[Tab].[Ctrl]-c.[Ctrl]-d

    [root@localhost ~]# ls -al ~/.bash [Tab][Tab]            //显示所有以.bash开头的文件名 .bash_history  .bash_log ...

  2. linux学习第三天 (Linux就该这么学)

    今天是学习的第三天,讲了很多命令,又赶上双11,网络经常波动,我经常掉线,没有听到多少,回头再看一下录播.我也写一下讲的命令吧,也加深一下命令的印象.第三章老师讲完了. ifconfig命令:输出信息 ...

  3. Linux学习笔记---使用BusyBox创建根文件系统(三)

    目录 创建/etc/init.d/rcS 文件 创建/etc/fstab 文件 创建/etc/inittab 文件 创建/etc/init.d/rcS 文件 通过nfs加载根文件系统成功后,在串口终端 ...

  4. Linux学习笔记---使用BusyBox创建根文件系统(四)

    目录 软件运行测试 设置程序为后台运行 设置开机自启动 外网连接测试 软件运行测试 进入到rootfs文件夹中新建一个drivers文件夹,用于存放编写的软件. 新建hello.c文件 输入以下代码 ...

  5. Linux学习笔记---使用BusyBox创建根文件系统(二)

    目录 向 rootfs 的"/lib "目录添加库文件 向 rootfs 的usr/lib 目录添加库文件 创建其他文件夹 根文件系统初步测试 向 rootfs 的"/l ...

  6. Linux学习笔记---命令篇

    Linux学习笔记-命令篇 本笔记是根据尚硅谷的Linux视频,经过自己的总结得出来的笔记,分为两个大章节,一-四章讲的是Linux的文件目录结构.vim编辑器.网络配置和系统管理.进程和服务.第二个 ...

  7. Linux学习笔记---使用BusyBox创建根文件系统(一)

    目录 下载BusyBox 修改makefile 添加中文支持 编译busybox 下载BusyBox BusyBox 可以在其官网下载到,官网地址为:https://busybox.net 打开官网后 ...

  8. 【Linux】Linux学习(三)常用基本命令(一)

    Linux学习(三)常用基本命令 常用基本命令 帮助命令 文件目录类命令 时间日期类命令 用户管理命令 用户组管理命令 文件权限类 搜索查找类 压缩和解压类 磁盘查看和分区类 进程管理类 学习总结 常 ...

  9. 【Linux】Linux学习(三)常用基本命令(二)

    Linux学习(三)常用基本命令(二) crontab 系统定时任务 crontab 服务管理 crontab 定时任务设置 RPM软件包管理 RPM概述 RPM查询命令 RPM卸载命令 RPM安装命 ...

最新文章

  1. 隐藏在Win XP中的28个秘密武器
  2. html model 属性值,如何将Model属性编辑为HTML
  3. Ubuntu下vi编辑器方向键变成字母的解决方法
  4. 014 怪物过滤的设计和实现
  5. flask和ajax,Flask flash和url_用于AJAX
  6. iOS库--.a与.framework
  7. c语言鼠标移动响应,CSS鼠标响应事件经过、移动、点击示例介绍
  8. 解决: VUE 项目中表单提交中文乱码、接口请求参数中文乱码
  9. python按行读取文件取消空白行_python去掉空白行的多种实现代码
  10. python coding utf-8_【转】怎么在Python里使用UTF-8编码
  11. 42.Linux应用调试-初步制作系统调用(用户态-内核态)
  12. 【转】Android4.4 之Bluetooth整理
  13. 靠谱测试人员需具备业务分析能力
  14. MySQL 8.0 异步复制的三种方式
  15. c语言:简单排序:冒泡排序法、选择排序法、插入排序法(待写)
  16. 计算机打字练习程序,指法练习打字软件
  17. html静态页面作业 我的家乡网站设计——我的家乡-杭州(7页) HTML+CSS+JavaScript 大学生家乡网页作品 老家网页设计作业模板 学生网页制作源代码下载
  18. Vista激活时出现“0X80072EFE”故障及解决
  19. ubuntu: 安装 摄像头驱动
  20. 帝国php调用文章列表,帝国cms教程内容页面调用当前会员信息和文章数量以及文章列表...

热门文章

  1. 【office 2019】不能显示公式解决办法
  2. 基于Matlab的Vander Lugt相关算法车牌汉字识别系统
  3. Java学到什么程度才可以找到工作?
  4. 波涛暗涌的人效时代,力挽狂澜的灵活用工
  5. wamp php升级7.1,wamp升级PHP7.1
  6. HTML积分小游戏,js实现带积分弹球小游戏
  7. 漂亮国因一颗气球而疯狂给质量团队带来的启示
  8. 全球热门的短视频平台,TikTok,流量巨大
  9. 2020年的总结和2021的目标
  10. 基于Hexo+Matery的LuckyBlog开源搭建教程