linux-19 根文件系统(一)

之前提到过,linux的目录是一个倒置的树,它通过层次性的方式来组织,管理整个系统的文件,而这本身实际上是通过文件系统。文件系统,大家记得文件系统是内核的主要功能之一,

它的主要目的就是实现本机上的某一个分区上的文件管理,最后,要记得,对于文件系统一条条的磁盘来说,它通常指的是以分区来进行标识的,但是在整个系统上,所有的文件系统都必须同属于,这样的整个系统级别的一个东西,它有个名字叫根文件系统,叫rootfs,对于linux而言,每一个文件都必须是根文件系统下的某一个路径,或者是都必须要通过文件系统才能够进行访问的。如下图,

我们这整个称为是文件系统,当然A是根,叫root,用 / 来表示,在每一个路径下,还可以有子目录或者文件,文件的都是叶子节点,否则它就是目录,当然,无论是特殊文件,块设备也好,字符设备也好,都是文件,所以从这个角度来讲,可能文件只分为目录和文件,除了目录都是文件,而所有的文件都存放在目录当中,或者能够通过查找得到,对于linux系统而言,他们有一个专门的规范和标准来定义,因为发行版有很多,centos、debian、ubuntu等等有许许多多的发行版,如果每一个发行版的组织随便起一个名字,那么,我们发现整个linux是比较混乱的,因此,标准委员会就专门制定了一个标准,叫FHS,叫文件系统层级标准,它规定的一个linux发行版应该创建哪些目录用于存储特定的文件,所以,无论是外表看着suse或者debian,他们基本上都会具有这个目录,

而且他们所包含的文件几乎都是近似的。所以总体ls一下,ls /,如下图,

就可以查看我们整个系统上根目录下的所有的一级子目录,这些子目录并非完全都是标准,只是在有些绝大多数的发行版上都会提供,我们一个一个来介绍,首先,/boot是用来干什么的,ls /boot 看一下,如下图

看它里面所存放的文件,关键性的文件有两个一个叫做vmlinuz,一个叫做initrd,那么但是在红帽六以上的版本,这块需要注意,这个initrd被命名为initramfs,名称可能有所不同,但功能是相同的,我们就以红帽五为例,这两个文件其实是我们操作系统启动时候所要用到的,以及暂时性的小微的linux系统,initrd是一个映像文件,类似于虚拟空间的文件系统一样,像一个假的硬盘,甚至还可以给它进行分区的,实际上,这里只有一个分区,它里面具有了一个传统linux所具备的很多基本目录,而且是独立的,但是它的主要目的在咱们系统使用的时候再详细介绍。由此可见,boot的作用主要用是跟我们系统启动相关的文件,如内核、initrd,initrd叫RAM磁盘或者叫内存。当然,还包括 grub,这是一个bootloader,它叫引导加载器,所以boot目录如果不存在或者对应的分区不存在,没有这几个文件根本没法处理,好,这就是boot目录。再看下一个,这个叫/dev,顾名思义指的是device的缩写,所以这是设备的,这里面都是设备文件,我们说过linux的重要哲学思想之一叫一切皆文件,那因此,所有的硬件设备也被识别成各个文件,比如我们的光盘在DEV目录下,如果是DVD设备的话,它可能显示为DVD,我们来看看,ls /dev,我们来看有没有DVD,如下图,

是不是有个dvd呀?但事实上,除了DVD,还有另外一个叫cdrom,发现了吗?还有cdrom、cdrom-sr0、cdrw、cdrw-sr0、cdwriter、cdwriter-sr0,这实际上都是同一种文件,它们是符号链接文件,我们使用ls -l来看,如下图,

这些相关的文件都指向谁了?sr0了,是不是这就表示它是个符号链接?这是个链接文件,或者说你在Windows上就理解为叫快捷方式,对吗?好,他们都指向了同一个位置,事实上,它无论起多少名字,指的都是同一个文件而已,那为什么有这么多名字呢?因为不同的用户,他的引用机制不一样,大多数情况下,我们都使用cdrom来引用它,而之所以这里还显示为cdrw,你的可能没有,我这个有,因为我的是一个可刻录的光驱,所以在这里有叫cdwriter,如果直接装在物理设备上的话,现在很多的光驱很有可能指向的不是sr0,很有可能是别的什么,以后会详细的讲,现在大概知道就行了,所以这些都是我们所谓的叫设备文件。而且将来我们去引用这些设备的时候,也都到这底下去找,一般说来,只要我能记得cdrom,就能够找到我们的光驱,因为在大多数的发行版上,他们都会为光驱自动创建一个链接,叫cdrom,好,其他内容我们就不再一个一个去说,先知道这底下都是设备文件就好了。好,那么这里需要再做一个进一步说明的是,设备文件有两种类型,块设备和字符设备,它俩有什么区别?什么是块设备?什么是字符设备?简单来说,块设备指的是随机设备,可以实现随机访问的设备,而字符设备则是线性设备,要完成线性访问的。什么是线性?理解成有次序的,比如像键盘,敲个ABC,它如果在我们的显示器上显示为BCA可能就麻烦了,像这种通常是按一个字符一个字符的输入的,一个字符一个字符的进行输入读取的设备也叫字符设备,它的访问是线性访问模型,所以是逐个字符访问或者叫按字符为单位,而随机访问设备或者叫块设备,它是随机访问的,无所谓先后,你放在什么位置,我可以随意找到任何一个地方的数据,像我们的磁盘,像我们的硬盘。存了三个文件A、B、C,如果打开A以后才能打开B,那就麻烦大了,是不是?所以我们可以直接访问C文件,而不用经过A、B这两个文件,那因此,像这种我们都称为叫随机访问的设备,而且它的访问是按照组织层对应的数据块进行访问的,数据块首先数据都被分割成一个一个的块了叫,所以它也被称为叫块设备。

那想一下,鼠标应该是什么设备啊?那显示器应该是什么设备?它们都是线性的,显示器看上去显示的一满屏,对吧?其实字符也是逐个显示出来的,如果知道什么是CRT显示器,这个很容易理解,整个满屏显示的所有内容都是在显存当中按位存储的,而且是逐个显示的,当然,早期的显示器最容易理解了,现在液晶显示器,很难想明白这个道理,对吧?这里不做过多的解释了,以后慢慢去深入了解,要知道这两种设备文件类型就成了。而且发现设备文件的颜色非常独特,背景为黑色,前景为黄色,看到了吗?这就告诉你,这是特殊文件,以后我们但凡看到这种类型的文件,就知道它是特殊文件。特殊在什么地方?你有没有发现这个文件的非常独特?这个位置看到了吗?如下图,

不再是大小了,而是两个数字,而且中间用逗号隔开了,我们说过以前的文件类型,我讲ls的时候是不是都是文件大小啊?这里没有大小,所以我们说特殊文件是没有大小的,他们直接存储为原数据,没有数据,只有原数据,而且是作为设备的访问入口存在的。这两个数字是设备的设备号,或者是我们硬件的设备号,曾经提到过这个概念,叫主设备号和次设备号,同一种类型下的不同设备的,比如说,我装了两块硬盘,那这两块硬盘属于同一总线,同一种类型。这是dev目录设备文件,一个设备只有有了设备文件,通常才能被linux所访问的,所以以后但凡要在我们的主机上接入一个新设备,比方插一个U盘上来,要想访问你的U盘,首先在dev目录下得给他创建一个设备文件,当然这个在大多数情况下,我们的系统会自动完成,好,这是设备文件,将来我们还要深入的去解释,因为这里边所涉及到的问题是非常复杂的。

再看下一个目录,下一个叫/etc是吧?etc这也就是我们配置文件所存放的位置,我们系统上大多数程序或者服务程序的配置文件都在这个目录下,或这个目录下创建一个子目录目录下,像之前看到的/etc/passwd,记得吧,这是psswd的配置文件,对吗?甚至也是全系统用户账号的配置文件,所以我们说这是配置文件的主要存放路径。那因此,这里边绝大多数都是纯文本文件,我们上次说过linux的重要哲学思想之一就是将程序的配置文件保存为纯文本格式,还记得吗?好,这是/etc目录,当然/etc目录还有许许多多的子目录,将来用到的时候再一个一个解释,因为他们都是纯文本的,不必要再做额外的说明了。

再看下一个,home,顾名思义,上次就解释过,每一个用户都有一个家对吧,这是用户的家目录,但是需要注意,每一个用户的家目录肯定跟其他用户是不能重复的,对吗?所以每个用户的家目录通常默认为home下有一个跟用户名同名的目录,通常默认为home下的username,比如说像student,我们ls /home,如下图,

是不是有个用户叫student目录,这就是student用户的家目录,所以我们切换到student,su - student,它的家就是home下的student,看到了吗?如下图,

返回我们的root用户,但是各位需要注意root用户是一个非常独特的用户,root用户的家目录不在home下,而是直接在根文件系统上,并且它的名称就叫root,我们还需要注意这一点。在传统的unix系统上,root用户是没有加目录的,因为root用户从来都不需要登录操作系统,事实上,在linux上也遵循此法则,现在是学习,为了使用方便,所以通常都拿root直接登录了,但各位一定要记得,一般情况下,将来在工作的时候,你千万不要拿root用户直接登录,因为任何一个误操作都有可能是致命的,root用户有所有权限,在Windows上,应该知道我们要格式化C盘,Windows通常是不允许的,试过吗?但是在linux不是如此,你要删除根下的所有文件都能删除掉,大家知道,对linux而言,所有文件都在根下,对不对?你把根删除了都能做到,所以它是不阻止你自杀的,那因此,这样一个误操作将会导致致命的后果,所以我们不建议使用root直接登录,再强调一遍,在生产环境中一定要记得啊,我们现在只是为了学习方便,不然的话我们要做一个操作,老是得切换用户,那我在生产环境中,将来就是使用一个普通用户登录进来,只有在用到管理功能的时候才切换到管理员,好,这是管理员的家目录,知道就好了。

好,再继续看下一个目录,下一个叫lib,这是某一个单词的简写是吧?叫什么?library,

库文件和内核模块文件目录,内核模块文件在这个路径下/lib/modules目录下,顾名思义,大家知道,modules是不是就是模块的意思,是内核模块文件,这是lib的一个子目录,这里的库文件通常都有两种类型,有静态库和动态库。好,我们的库文件有两类,有静态库和动态库两种,

动态库,上次提到过,叫动态链接库,在Windows上叫什么?dll,.dll在linux上表现为.so,叫共享对象,shared object,我们称叫共享对象。另外,还有静态库,静态库在linux上通常叫什么?.a,Windows上好像叫.lib,那动态和静态有什么区别?大家发现我们动态库在linux上叫做共享库,是这样子吧?它叫共享对象,它为什么被称为叫共享对象呢?库是用来干什么的?库就是一些被调用的封装好的某些功能是不是,那一旦有这个功能了,我们程序在开发的时候直接调用这个功能就好了,不用再自己写这程序,对吧,那他们在系统上执行的时候怎么执行呢?为什么被称为叫共享库?任何程序和数据都必须要载入内存以后才能被程序所使用,对不对?那共享库的好处就在于第一个程序启动以后,他如果用到某个共享库,他把共享库直接载入内存中就使用了,那在内存中存放这个共享库,而我们启动第二个程序的时候,如果第二个程序也用到这个共享库的话,它就不用再载入了,因为内存直接有,拿来就用,能明白吗?所以把它称为叫共享库,所以这个库文件在内存当中,甚至只用存储一份即可,也能大大节约内存空间的,静态库并非如此,静态库是直接链接到程序的地址空间中去,而且是作为程序的一部分而运行的,所以静态方式便于程序单个文件管理,我要把一个程序从一个linux主机挪到另外一个linux主机上,如果它是个静态的文件,编译的时候或者说使用静态编译方式的文件,使用的是静态库文件的话,那么这个时候,只需要把文件从a主机复制到b主机就能直接运行的,但是如果要使用动态链接库的方式的话,那就意味着它自己的运行还要依赖于库的,对不对?那就意味着我把这个程序从a主机挪到b主机还不够,还必须要保证b主机上有它运行所依赖的共享对象才行。假如我们的ls命令运行的时候链接到了某个动态对象上,它依赖于某个库,注意这个库跟ls没关系,但是ls运行的时候要用到它,它存储的时候是单独放在lib下的,能理解这个概念吗?这些都是.so文件,所以这就意味着将来我想把这个ls在另外一个主机上运行。另外一个主机没有ls,我只把这个文件复制过去,请问它能运行起来吗?不能,为什么?因为ls的运行要依赖于什么?扩文件,是不是这道理?所以我们必须要把ls和它依赖的扩文件一并复制过去,是不是才行啊?就是这个道理,但是如果我们要静态编译的话,一定要记得这个库是不是独立的,如果我们要使用静态编译,ls就直接把这个库直接就包含进来了,ls中就直接有,所以我们以后想在另外一个主机上运行,直接复制ls过去了,这叫静态编译。哪一种方式更好啊?如果所有程序都依赖于这个库,每个程序编译的时候都包含自身,可以想象这个个头有多大?如果都运行起来,需要占用多少内存?有多少是重复和浪费的?明白了吗?我们系统为什么会做成这样子?为什么有库?为什么称为叫动态共享对象?需要真正去理解他们,事实上,无论是库文件还是可执行程序,它们本身得能运行才行,比如,各位来看,我们看一下,ls /lib,如下图,

看这些文件是不是都是显示为绿颜色的,我们说过这就表示什么?有执行权限对吗?来看一下lib,ls -l /lib,如下图,

看些绿色的文件是不是都有x权限,看到没有?这说明它是有执行权限的,而且我们随便找一个文件,看它的类型,比如就看这个libc-2.5,看它的格式,elf 32位,可执行的共享对象,是不是跟我们的bin下的ls格式的可执行程序是一样的,file /bin/ls,如下图,

elf的格式对吗?只不过一个是可执行格式,一个是叫动态共享对象,libc-2.5.so这里为什么没显示叫可执行格式呢?不能单独执行,库文件是不能单独执行的,它因为没有程序的访问入口,或者叫没有执行入口,它只能被调用,好,那么这就是我们的库文件,lib主要就是用于存放库文件的。但是除了lib之外,还有其他路径也可以存放库文件,稍后再做说明。

好,继续往下看,下一个目录,lost+found,这不算,这是任何一个新建的分区上都会有的目录,它通常跟我的文件系统相关,适用于存储那些文件系统在突然间断电的时候,尚未保存的文件,所以它是为了能够实现丢失然后重新找回的这个目的的,所以叫lost+found,这跟我们系统没关系,不用管它。

下面一个media,还有一个叫mnt,这两个是挂载点,media和mnt叫挂载点目录,什么叫挂载点?在Windows上,我们要想访问光盘中的内容,怎么访问?比如我拿了一张光盘,想访问,放进光驱双击打开,是不是就可以访问了?就这么简单,在linux上不是你把光盘放进光驱以后,必须要将这个设备关联到当前整个文件系统树上的某一个节点上,才能进行访问的,而这个过程,把某个设备跟当前文件系统上的某一个目录相建立关联关系的过程,就叫挂载的过程。所以我们把光盘放进光驱,并不是说你找到dev下的cdrom,你就能访问了,不是这么回事,这是设备文件,你不能双击打开,或者甚至我们也不支持鼠标,对不对?不能双击打开进去的,你也不能cd进去,它不是个目录,它是个文件,你也不能使用其他目录命令去查看,因为它是个设备文件,它只是设备上数据的访问入口,那到底怎么访问?那就要建立关联关系,我们必须要把cdrom给它关联到一个位置,比如说,我把它关联到media就可以,然后我们通过这个目录就可以访问这里面的内容,这个过程就叫挂载的过程。那哪些地方专门用于挂载的,像media就是,但是media通常用于挂载移动设备的,比如你的U盘,光盘等等,而mnt通常用来挂载额外的文件,文件系统额外的临时文件系统,比如说我有第二块硬盘,第二块硬盘的数据,想访问也得挂载,只要跟我们当前根建立关系都得挂载,当然,这里并没有严格规定,事实上,你无论挂在移动设备也好,挂在额外设备也好,

只要是这两个目录下的某一个目录,一般而言都可以,只是fhs规定media是移动设备的挂载点,

mnt是额外临时文件系统的挂载点。注意这些目录,我们将来都会反反复复的使用,好。

再看下面一个叫misc,这个其实是比较独特的,说过这叫杂项,这默认是个空目录,那些不便于归类的都在这里头,实际上也没用它,所以你把它理解成叫杂项即可。

再看后面这个opt,顾名思义opt是什么?叫optional,叫可选的,所以这是个可选目录,那既然可选了,这是一个可选目录,早期,它通常用于安装第三方程序的,什么意思啊?我系统运行的好好的,但是有个软件,我想装这个软件跟我系统没有任何关系,是我自己想装的,所以它会装在这个文件夹,比如说早期oracle就装在这个文件夹,还有像系统漏洞扫描工具,所以这些第三方非关系的软件通常都装在这里,所以叫第三方程序安装目录,但是现在约定俗成已经不把它放在opt下了,通常放在另外一个路径下,我们后面会有介绍,叫/usr/local,好,这是opt。

下一个比较独特,叫proc,这是一个伪文件系统,事实上,这个目录中没有任何内容,是不是呢?我们打开看看,我们ls /proc,如下图,

有没有,一大堆是吧?那什么叫没有任何内容呢?你要记得这个目录其实是空的,但系统启动起来以后,它就不空了,如果我们的系统不启动,打开硬盘,你看看在你的硬盘这个目录是空的,那这个目录绝对是空的。但启动以后就不空了,为什么?因为这里边所显示出的所有文件,实际上是内核的映射文件。所以你可以把它理解成叫内核映射,或者内核映像文件都行。所以这里边儿大多数的文件都是内核中很多的可调参数或者内核的工作的统计数据。我们要想看一看内核当前工作它的工作属性,比如说像我的网卡,大家知道网卡是个设备,要想访问是不是只有内核才能访问啊?那这个网卡到底接收了多少个数据包?发送了多少个数据包?这些统计数据都在这,还有我们的内核支不支持IPV4协议,大家知道IPV4不?支不支持路由功能等等等,都在这里,所以我们要想改变操作系统的根本工作属性,通常都是改变这个目录下的某个文件来完成的,因为事实上你改的不是文件而是内核属性。他们只不过被映射成了文件,都是假文件,事实上不是文件,再说一遍,

他们只不过表现出了文件的样子而已。这就是为什么把它称为叫伪文件系统的原因,有些东西觉得很奇怪,你可能理解不了,那么不是文件还能写这个文件?的确如此,这是通过软件的方式模拟出来的,我们不是硬盘,还还能使用虚拟机创建一个假文件是不是,很多设备都是可以模拟的?更何况有文件。好,这叫proc,是内核映射,那我们最后讲的内容叫系统调优,其实调优中的绝大部分内容都跟这个有关,我们整个系统的性能,数据的监控也跟这个目录相关。所以事实上,这是个非常重要的目录,但是也是最难理解的目录。

好,除了它之外,还有另外一个伪文件系统叫sys,一个目录叫sys,sys这是另外一个伪文件系统,里边本来也没有任何内容,系统启动起来以后才有,只不过它不是内核映射文件,一般是跟硬件设备相关的属性映射文件,事实上,跟内核也相关,只不过把它独立出来了,只不过把它独立出来,当做一个独立的文件系统来使用。通常用于实现硬件设备管理的,尤其是这像硬盘这样的存储设备。还是那句话,既然跟内核相关,我们的很多调优工作都要通过它来进行,比如我们修改磁盘调度队列或者叫IO磁盘IO调度队列的时候都在里边进行修改,简单来看,我们来看这个目录sys,ls sys,如下图,

这里边有很多目录,像block,块设备,bus,这是总线,class不管它了,devices这是设备是不是,firmware这是固件,fs就是文件系统,kernel内核,module是模块以及power电源相关的内容。还是那句话,关机以后这个目录也是空的,它也是映射出来的信息而已好。

我们继续看,还有什么目录呢?tmp是吧?顾名思义,这是什么目录啊?这是个临时文件系统,

很多用户登录进来系统以后都要存放临时文件的,对吗?所以一些公共的临时文件可以被其他用户查看到的临时文件都放在这个路径下,既然是临时的,它的主要目的是不需要长久存储的,对吗?所以这个目录一般而言,每隔一个月,如果这个文件一个月之内再也没有被访问过,会被自动清除的,这是系统上定义的一些脚本完成的任务,而且这个目录还非常独特,每一个人在里边都可以创建文件,谁都有权限,普通用户也好,管理员也好,但是每一个人只能删自己的文件。却删不了别人的,那因此我们来看这个目录,它格式非常独特,我们ls -ld /tmp,如下图,

看它的底色是绿色的,看到了吗?底色是绿色的,前景是黑色的,而且它的权限很独特,展现为t,不再是x了,那这些都是什么?后面讲到权限管理的时候,会细说,知道就行。好,这是临时文件的存放位置,事实上,我们系统还有另外一个路径也能存放临时文件的,它在另外一个目录下,我们等会再说。

/var,叫经常发生变化的,刚装完系统,这个目录很小,但是你会发现,当你的系统运行半年以后,这个目录就非常大了,因为随着系统的运行,这里边的文件会越来越多,内容也越来越多,数据量也越来越大,来看看这底下都有什么子目录吗?ls /var,如下图,

有许多的子目录是不是?有些都是非常关键性的子目录,比如说像cache,这是什么?缓存对吗?

再看这个叫lock,这是什么?锁文件,还有这个log,日志,还有mail,用户的邮件转存位置,还有像run,run在我们Linux系统上,每一个进程运行起来以后,都有一个进程号码,而很多服务需要存储的进程号码在某一个单独的文件当中,这个文件就在run下,而且通常是什么点PID,ls run,如下图,

里面是不是有很多的.pid文件,看到了吗?这叫进程ID号,我讲到进程管理的时候,我会再提到,

var下还有一个tmp,看到了吗?这是另外一个临时文件目录。

再说两个非常关键的路径,一个叫bin,一个叫sbin,bin叫做binary,什么意思?二进制是吗?二进制所以bin路径下面是什么?可执行文件,所有的命令都在这个路径下,但是这里边放的都是用户命令,而sbin放的都是管理命令。s可以理解成叫super,所以这两个里边放程序,lib放的是库,这些程序运行的时候可能依赖于lib下的库,而且每一个程序都有可能有用到配置文件,配置文件在哪啊?/etc,这就是他们的关联关系。

还没说一个非常关键的路径叫做usr,usr指的是什么?user是不是?是不是理解为它是user的简写?显然不是的,首先s指的叫shared,shared什么意思啊?共享的,r叫read-only,只读的,

所以通常是在用户之间,或者在整个系统级别上叫全局的共享的只读文件,所以这里边放的是只读文件,可能让你想象不到的是,在usr下还有很多独特的路径,比如在usr下有bin,猜这是什么?usr下有sbin,usr下还有lib,如下图,

刚才说过,bin和sbin放的是可执行程序对不对,lib放的是什么?库。为什么要多这么一个路径呢?为什么不都放在/bin下或者/sbin下?我们可以简单理解成/bin和/sbin这些程序跟我们系统自身启动相关的命令或者可执行程序,而/usr/bin或者/usr/sbin通常是系统自身启动起来以后,为了提供一些基本功能,所应该具备的命令或者可执行程序,所以一个是跟系统系统启动相关的,一个是跟系统自身的正常提供基本功能相关的。当然,这只是为了方便认识才有意这样做的分类,但不管怎么讲,在/usr/bin下和/usr/sbin下的程序所依赖的库,如果不是公共库,不是lib下的这些共享库,

它就必须要放在/usr/lib下来,所以这也是库文件存放路径,不但如此,在usr下,还有一个独特的路径叫local,如下图,

这又是一个独立的文件系统,它底下也有bin,也有sbin,也有lib,这是第三方软件的安装路径,它底下甚至还有etc或者com目录的,专门用来存放配置文件。对于一个操作系统来讲,通常/bin /sbin /lib /usr/bin /usr/sbin /usr/lib就这几个路径对于一个操作系统来讲是必须的,而 /usr/local 并非是必须的,因为它是第三方软件,跟系统运行没有关系,只是为了提供外围其他功能的,所以就算这个目录底下没有任何文件,把它卸载掉,我一不小心把它格式化了,并不影响系统的启动,这能理解吗?但/bin /sbin /lib /usr/bin /usr/sbin /usr/lib 不行,一定要理解,什么叫第三方软件,虽然这样归类未必精确,足以说明问题,可以这么理解它,就是第三方的意义就是非关键性的程序。当然,这里虽然把它称为叫非关键系统,但是对业务来讲,很可能非常关键,比如把oracle装在这底下了,oracle可能是非常非常关键,没有oracle,系统正好能启动,但没有oracle业务可能执行不了。所以我们这里都是站在系统的立场或者角度来进行说明的。

好,那我们关键性的路径其实就这么多,那要注意这些路径,每一个路径的基本意义和它的名称,一定要熟悉熟练的掌握。还是那句话,我们只要理解了这些路径的意义,并且理解了对一个系统来讲,哪些程序是最基本的,我们完全可以拿一块硬盘,或者拿个U盘在里边创建了这样几个目录,在里面拷贝几个文件进来,然后这个U盘就可以启动起来。文件系统就这么简单,所以它并不需要特别多的额外的其他东西。当然,那之所以能这么做,那是因为我们的linux没有注册表的概念,对吧?所以把程序在这台主机上装,附到另外一台主机上,这样很轻松的跑起来,从来不需要注册表。

相关推荐
是店小二呀7 分钟前
【Linux】Linux开发利器:make与Makefile自动化构建详解
linux·运维·自动化
baihb10241 小时前
Jenkins 构建流水线
运维·jenkins
BUG 4041 小时前
LINUX--shell
linux·运维·服务器
菜鸟小白:长岛icetea1 小时前
Linux零基础速成篇一(理论+实操)
linux·运维·服务器
深海的鲸同学 luvi1 小时前
【HarmonyOS NEXT】hdc环境变量配置
linux·windows·harmonyos
dowhileprogramming2 小时前
Python 中的迭代器
linux·数据库·python
过过过呀Glik2 小时前
在 Ubuntu 服务器上添加和删除用户
linux·服务器·ubuntu
Tesseract_95274 小时前
ioctl回顾
linux
Java小白中的菜鸟4 小时前
centos7的磁盘扩容
linux·运维·服务器
黑客老陈5 小时前
面试经验分享 | 北京渗透测试岗位
运维·服务器·经验分享·安全·web安全·面试·职场和发展