Linux基础知识与文件系统简介
参考文献:Ubuntu Linux 基础教程
Linux是在什么样的历史背景下出现的
Linux的诞生与发展与UNIX系统、Minix系统、Internet、GNU计划密不可分。
1971年,UNIX系统诞生于Bell实验室,早期UNIX系统是免费的,但是随着它的广泛使用,逐渐由一个免费软件变成一个商用软件,高昂的源码许可费用和对硬件较高的要求限制了UNIX系统在教学和科研领域的应用。
1987年,荷兰教授Andrew S. Tanenbaum利用业余时间开发了一个微型UNIX系统——Minix。Minix系统对硬件要求不高,并且可以运行在廉价的PC上。Linux系统就是在Minix系统的基础上设计开发的。
20世纪80年代中期,互联网形成,借助互联网的力量,全球无数程序员通过Internet参与了Linux的技术改进和测试工作。任何人想要往内核中加入新的特性,只要被认为是有用的、合理的,就被允许加入。Linux在全球人们的共同协作下,借助Internet发展起来。
1983年,自由软件领导者Richard Stallman提出GNU计划,GNU是GNU Is Not UNIX的缩写,该项目的目标是开发一个自由的类UNIX操作系统,包括内核、软件开发工具和各种应用程序。为保证GNU计划的软件能够被广泛共享,Stallman为GNU计划创作了通用软件许可证(General Public License, GPL),GPL允许软件作者拥有软件版权,但授予其他任何人以合法复制、发行和修改软件的权利。对于遵照GPL许可发布的软件,用户可以免费得到软件的源代码和永久使用权,可以任意修改和复制,同时有一副公开修改后的代码。
1991年10月,芬兰赫尔辛基大学计算机系学生Linus发布了Linux系统的第一个正式版本,它并没有包括UNIX源代码,而是按照公开的POSIX标准重新编写。
Linux和GNU的关系
Linux内核一开始就是按照公开的POSIX标准写的,并且大量使用了来自麻省剑桥自由软件基金会的GNU软件,并且Linux本身也是由他们构造而成。
Linux的特点
- 基于UNIX设计,性能出色,执行速度快、占用内存少、性能优异,可以全天候不间断工作,胜任大、中、小性格中计算机。
- 遵循GPL许可,用户可以免费获得和使用Linux,并在GPL许可范围内自由地修改和传播。
- 符合POSIX标准,任何基于POSIX标准编写的大多UNIX类和类UNIX系统都可方便的移植到Linux上。
- 可移植性好,Linux内核90%采用C语言编写,可在任何平台运行。
- 网络红能强大,支持Internet、文件传输、远程访问。
- 拥有设备独立性,操作系统把所有外部设备统一看作文件,只要安装它们的驱动程序,就可以像使用文件一样操纵、使用它们。
- 安全性强,源码公开,更新速度快。
- 提供命令行界面、系统调用、图形用户界面。
Linux由哪几部分组成
Linux内核,Linux Shell,Linux文件系统,Linux应用程序等几部分。
- Linux内核,运行程序和管理硬件设备的核心程序,提供硬件抽象层、磁盘及文件系统控制、多任务的系统软件。任何基于Linux内核的完整操作系统容都叫做Linux系统,或GNU/Linux。
- Linux Shell,提供给用户对系统进行操作的用户接口,Shell负责接收、解释和执行用户输入的命令。
- Linux文件系统,文件存放在磁盘等存储设备上的组织方法。
- Linux应用程序,一系列实现某种特定功能的程序。
Linux发行版与Ubuntu
Linux发行版是基于Linux内核,搭配人机界面、应用软件和服务软件的操作系统,主流发行版本包括:
Redhat和fedora, CentOS, Debian, Ubuntu, openSUSE, Gentoo, Slackware。
Ubuntu是基于Debian的Linux发行版,适合个人用户。
Linux操作系统接口的形式
操作系统是架构在硬件上的第一层软件,是计算机硬件和用户之间的接口。任何操作系统都会向上层提供接口,以方便用户使用计算机系统。操作系统的接口包括方便用户使用计算机系统的关键。
操作系统的接口分为用户接口和程序接口,用户接口又包括命令行用户接口和图形用户接口两类。
Shell的含义和作用
Shell是Linux操作系统的最外层,也成为“壳”,作为命令语言为用户提供操作系统的命令接口。
目前常用的bash是Shell的一个版本,即一种命令行用户接口。
X Window, GNOME和Unity
X Window是Linux系统的图形化用户接口,简称X或X11.
GNOME和KDE都是基于X Window的桌面环境,通过X Window才能运行。GNOME安装时需要设定gdm(The GNOME Display Manager)GNOME显示环境管理器,可以选择gdm和lightdm,后者是一个全新的、轻量的桌面显示管理器。
Unity是基于GNOME的桌面系统。
系统调用与应用程序接口(API)
系统调用的作用是把应用程序的请求传递给系统内核,然后调用相应的内核函数完成所需要的处理,最终将处理结果返回给用户的应用程序。
用户输入系统命令,借助应用程序结构实现系统调用。
什么是文件系统
文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构,即文件在磁盘上的组织方法;从另一方面上来看,文件系统还是操作系统在计算机硬盘上存储和检索数据的逻辑方法。
文件目录
计算机系统建立文件的索引,即文件名和文件物理位置之间的映射关系,这种文件的索引称为文件目录。
文件目录的表目中至少要包含文件名、物理地址、文件逻辑结构、文件物理结构和存取控制信息等,以建立起文件名与物理地址的对应关系,方便用户对文件的查找和修改等操作,实现按名存取文件。
常见文件系统
FAT16, FAT32和NTFS可用于MS-DOS或Windows,Linux操作系统一般采用ext2、ext3和ext4文件系统。
如果用户想要在Linux操作系统中使用非Linux文件系统,就必须在操作系统中挂在这些文件系统到内核中。
虚拟文件系统: 实际文件系统通常为不同操作系统设计和使用,具有不同组织结构和文件操作接口函数,为屏蔽各个文件系统之间的差距,为用户提供访问文件的统一接口,在具体的文件系统上,增加了一个称为虚拟文件系统VFS(Virtual File System)的抽象层。
Ubuntu目录结构
/
根目录
/bin
binary,存放系统中最常用的二进制文件,系统运行的最必须文件
/boot
Linux内核和启动文件
/dev
device,存放硬盘在内的设备文件
/etc
etcetra,存放系统配置文件,例如开机挂载的分区等
/home
用户主目录默认位置
/initrid
存放启动时挂在intrid,img映像文件的目录,以及载入所需设备模块的目录
/lib
存放共享库文件,包括许多被/bin
和/sbin
中程序使用的库文件
/lost+found
用于存放系统意外崩溃产生的文件碎片,以修复系统
/media
即插即用型存储设备的挂载点自动在此目录下创建
/mnt
mount(安装), 通常用于被挂载的文件系统的挂载点
/opt
option,可选的文件和程序的存放目录,自定义软件包或用户自己编译的软件包可能存放在这里
/proc
存放所有标识为文件的进程
/root
超级用户的主目录
/sbin
系统管理命令,超级用户的可执行命令,一般用户通常无法执行
/srv
service,存放系统所提供的服务数据
/sys
system,用于将系统设备组织或层次结构,并向用户提供详细的内核数据信息
/tmp
temp,临时文件目录
/usr
UNIX system resources,存放与系统用户直接有关的文件和目录,如应用程序及支持系统的库文件
/var
存储长度可变的文件
创建、挂载与卸载文件系统
安装操作系统时,安装程序会引导用户提供必要的数据或做出相应的选择,然后自动划分磁盘分区,创建文件系统。
当需要增加新盘或使用移动硬盘,改变现有磁盘分区结构时,需要手工创建文件系统。
一般的步骤:
磁盘分区 -> 创建文件系统 -> 挂载文件系统
-
向虚拟机添加未分区硬盘/给电脑新安装硬盘。
-
利用
fdisk -l
命令查看新增硬盘信息,此时会显示新增硬盘的基本信息,但由于没有设置文件系统,所以不会显示分区表。(可将新增硬盘的信息和原有硬盘的信息对比,发现新增硬盘下缺少分区表信息)补充:
cat /etc/mtab
可查看挂载信息,新增硬盘下没有分区信息,原有硬盘下用分区信息
mount
命令也可查看挂载信息 -
建立目录,并将硬盘挂载(括号中为可选的内容)
sudo mkdir [/data1] sudo mount /dev[/sdb] [/data1/]
-
挂载成功与否的测试:在挂载文件夹下新建文件夹,并用
ls -l
查看文件夹信息,文件夹如果能被正确建立,说明挂载成功。sudo mkdir [/data1/testdir] ls -l /data1/
-
(如果需要)卸载文件系统
sudo umount /dev[/sdb]
可用上面“补充”中的方法查看当前挂载的文件系统的信息。