Linux学习第三篇--Linux的文件系统
重点
对于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的文件系统相关推荐
- linux cadaver 命令,【Linux学习第三篇】[Tab].[Ctrl]-c.[Ctrl]-d
[root@localhost ~]# ls -al ~/.bash [Tab][Tab] //显示所有以.bash开头的文件名 .bash_history .bash_log ...
- linux学习第三天 (Linux就该这么学)
今天是学习的第三天,讲了很多命令,又赶上双11,网络经常波动,我经常掉线,没有听到多少,回头再看一下录播.我也写一下讲的命令吧,也加深一下命令的印象.第三章老师讲完了. ifconfig命令:输出信息 ...
- Linux学习笔记---使用BusyBox创建根文件系统(三)
目录 创建/etc/init.d/rcS 文件 创建/etc/fstab 文件 创建/etc/inittab 文件 创建/etc/init.d/rcS 文件 通过nfs加载根文件系统成功后,在串口终端 ...
- Linux学习笔记---使用BusyBox创建根文件系统(四)
目录 软件运行测试 设置程序为后台运行 设置开机自启动 外网连接测试 软件运行测试 进入到rootfs文件夹中新建一个drivers文件夹,用于存放编写的软件. 新建hello.c文件 输入以下代码 ...
- Linux学习笔记---使用BusyBox创建根文件系统(二)
目录 向 rootfs 的"/lib "目录添加库文件 向 rootfs 的usr/lib 目录添加库文件 创建其他文件夹 根文件系统初步测试 向 rootfs 的"/l ...
- Linux学习笔记---命令篇
Linux学习笔记-命令篇 本笔记是根据尚硅谷的Linux视频,经过自己的总结得出来的笔记,分为两个大章节,一-四章讲的是Linux的文件目录结构.vim编辑器.网络配置和系统管理.进程和服务.第二个 ...
- Linux学习笔记---使用BusyBox创建根文件系统(一)
目录 下载BusyBox 修改makefile 添加中文支持 编译busybox 下载BusyBox BusyBox 可以在其官网下载到,官网地址为:https://busybox.net 打开官网后 ...
- 【Linux】Linux学习(三)常用基本命令(一)
Linux学习(三)常用基本命令 常用基本命令 帮助命令 文件目录类命令 时间日期类命令 用户管理命令 用户组管理命令 文件权限类 搜索查找类 压缩和解压类 磁盘查看和分区类 进程管理类 学习总结 常 ...
- 【Linux】Linux学习(三)常用基本命令(二)
Linux学习(三)常用基本命令(二) crontab 系统定时任务 crontab 服务管理 crontab 定时任务设置 RPM软件包管理 RPM概述 RPM查询命令 RPM卸载命令 RPM安装命 ...
最新文章
- 隐藏在Win XP中的28个秘密武器
- html model 属性值,如何将Model属性编辑为HTML
- Ubuntu下vi编辑器方向键变成字母的解决方法
- 014 怪物过滤的设计和实现
- flask和ajax,Flask flash和url_用于AJAX
- iOS库--.a与.framework
- c语言鼠标移动响应,CSS鼠标响应事件经过、移动、点击示例介绍
- 解决: VUE 项目中表单提交中文乱码、接口请求参数中文乱码
- python按行读取文件取消空白行_python去掉空白行的多种实现代码
- python coding utf-8_【转】怎么在Python里使用UTF-8编码
- 42.Linux应用调试-初步制作系统调用(用户态-内核态)
- 【转】Android4.4 之Bluetooth整理
- 靠谱测试人员需具备业务分析能力
- MySQL 8.0 异步复制的三种方式
- c语言:简单排序:冒泡排序法、选择排序法、插入排序法(待写)
- 计算机打字练习程序,指法练习打字软件
- html静态页面作业 我的家乡网站设计——我的家乡-杭州(7页) HTML+CSS+JavaScript 大学生家乡网页作品 老家网页设计作业模板 学生网页制作源代码下载
- Vista激活时出现“0X80072EFE”故障及解决
- ubuntu: 安装 摄像头驱动
- 帝国php调用文章列表,帝国cms教程内容页面调用当前会员信息和文章数量以及文章列表...