00:00
好了,那我们已经给大家讲了这个的启动流程,那在工作中有很多和内核相关的设置,那这个我们要知道怎么去修改,包括怎么去保存,那关于这个linus内核的设置。在前面的课程中,我们曾经给大家有的介绍过,比方说比较重要的一些内核设置,例如启用IP forward。记得这个IP功能,它实际上是在这个地方可以看到的,是不是有这样一个文件对吧。那当然这个文件对应的实际上是内存,PC都是内存里的东西,它只是表示了当前的状态啊,是无法实现持久的保存的,你改这个文件它也是临时生效,那么相信大家记得像这种设置呢,保存的话是保存在哪儿啊?
01:22
是不是有一个叫ETC的ctl这样的com文件,这个文件呢,就是专门来保存和内核儿相关的一些设置的。那这就是PLCPLC这个目录,它实际上可以展示我们系统中的一些状态,包括内核的各种参数,他把这些参数呢以PC的方式让我们能够观察到,并且能够修改。那如果你想看帮助,可以卖PC。
02:01
这个PLC的设置啊。他有的是只读的,有的是可以改的啊,比方说咱们改过的这个IP服,它就属于可改的。那么这个修改我们直接可以通过AO命令直接把它改了,那还可以通过命令来改也行,这个命令呢,就是C是CTLW。在PC这个目录里面有很多配置。都是可以更改的,就这个目录,所以我们既然可以改,就干脆有提供一个工具,叫CCL命令,这个命令就叫CC命令。这个命令来源于就是C4这个文件夹。CPL就是控制的意思,Controlr就是这个命令专门来控制PLC文件夹,既然他约定好了是复制这个文件夹,所以如果有些文件是放在这个目录下,那上面这个不用写了,你只要从这个地方往后描述就可以了,写的时候呢,也不需要写他的。
03:18
斜杠用点隔开就可以啊,所以我们比方说可以点net.ipv4点IP,它是这么个写法。啊,那么这个也可以用。一个命令杠A可以显示所有,如果你想改其中一个,那就是W,后面跟上这个你要改的这个值就可以把它改了。那比方说IP保护功能末是零,我现在把它它用过,它可以改成写错了是吧?啊这个C是不用写的。C不用写啊,只要从这个地方往回描述就可以了,在这可以看,你看可以看到当前的值是零,那么如果要想临时修改,那就很简单,你这个地方你把它用一个W后面跟上这个值就可以临时改成一改了,改了以后验证一下吧,看改了,实际上他改的时候就是把这个文件夹,然后这个文件夹改了IP net IPv4下载IP服务的,实际上就是改了它看到没?
04:34
啊,当然你用Apple口改也行,用这个W改也行,不过呢,W改也好,Apple改也好,它都是临时生效,是无法持久保存的啊,无法持久保存。啊。那这个要想持久保存,那我们大家应该都知道,肯定要写到文件里了,那写在哪呢?实际上这些文件都可以。
05:03
你把刚才那个设置你写到这些文件里都行啊,虽然都行,但是一般来讲我们习惯性还是往这个地方去写,或者呢,写到这个的目录里面建一个新的文件夹啊,写成com结尾的也可以啊。这把这个文件写了,这个文件呢,我们可以看一下,这个文件本身就有,不过呢,里面已经有了一些设置,那这个地方是不是直接把它改成一就行了啊,现成的现成的。这里面有大量的设置,有些是需要我们做优化的,杠A可以列出所有,有些东西呢,在生产中需要做修改才能实现优化,你看这里面有很多都是IPV6的,还有很多是IPV4的,有很多设置。那么列设置,有些我们后面会涉及到修改,比方说这个。
06:03
这个东西啊,提前给大家说一下,这个叫ARP announce ARP弄ARP协议,大家应该知道ARP协议干嘛用的呀。实现IP地址到Mac地址解析的,对吧?啊,那这个announce是干嘛的呢?Announce大家记得我们ARP协议里面还有一个特殊的ARP功能,就是叫免费ARP,还记得吗?那个免费RP是干嘛用的呀。免费ERP是干嘛用的?那除了传统的ERP,还有一个叫免费ERP,这个免费P干嘛用的?是来探测网中是否有地址冲突的。啊,那么他怎么。去产生的冲突呢,那就是为什么我这配个地址,你这配个地址,咱俩就打架呀。
07:02
为什么呢?那么原因就是因为有这两个设置,这两个设置第一叫announce。那就是对外宣称,哎,我一旦配了这个地址,我就会对外宣称说我拥有这个地址,那么你想我要配了个地址,我对外宣称,你那也配了个地址,也对外宣称,咱俩是不是就互相知道,哎,你那配了个地址和我一样是不是,是不是就打架了。爸。那么还有一个呢,就是。Ignore呢,表示的是。别人通过ERP协议,他要去找这个地址的时候。是否我去回应他的请求?大家记得免费RP的逻辑呢,就是下面问说谁用这个地址了。那么ignore呢,就表示的是别人问我,我就回答说我用这个地址。如果你不想和别人产生地质冲突。
08:01
你还可以设置一个not。把它设为不想于别人,就是别人问我,我不搭理你。那就是我偷悄悄的拥有这个地址,我不对外去应答。这样的话,是不是即使我配了一个地址,也不会和别人冲突啊?一个是对外要宣称,一个是是否要应答?你这把这两个东西都关了。既不对外宣称,别人问我,我也不搭理你,大家想,这是不是就可以默默拥有这个地址不出,不会产生地址冲突了?是不是这个道理啊?人家说那你配置这样有什么用啊,有啊,当我们学到后面的时候,是确实需要我们在多个机上共同配置相同的地址,是有这种需求的。同时我还不希望产生地址设置,所以到时候就要改这两个设置了,这是我们后面要用到的啊,这特殊场景啊,一般情况下是不会这么用的,所以这里面有大量的内核设置啊,啊,比方说我们刚才说那IP活的也在里面啊,另外呢,我们有些和网络优化相关的一些设置也在这里边,大家记得我们在讲网络内张的时候呢,实际上给大家说过,这些内核参数都在这里面有对应的设置。
09:24
所以将来如果说你要对网络呀,对内核要做优化,你可能都要在这里面改啊,咱们很早以前网络那一章的时候呢,在这有一些内核优化看,谢谢大家,这是不是也当时也说了,是不是改这个文件。对不对,就在里面改就好了,所以呢,这个呢都要去修改,这些就要修改啊,所以在生产中啊,一般来讲这个文件呢,可能都要去调了它啊,挑出你有必要的一些设置把它修改,内容非常多,那我这呢,有一个现成的经过优化过的一个文件,可以作为一个生产的案例吧,啊这是生产中用过的一个东西,在哪呢?在这。
10:20
这个。好放在桌面上啊,你可以看一下这个文件,这个文件是生产中用过的一个经过优化过的一个设置。你看这里面做过好多优化,你看IP给打开了,还有好多,那包括TCP协议的优化,这都有。啊。因为写在文件里才能保存,这里面还有一项,也是我们未来将来会用到的一项啊,在提前给大家说一下这个。
11:05
这个叫什么意思呢?这个就表示的是如果我要把某一个端口。在当前的主机上打开。那通常来讲,你要打开端口,你肯定得和IP地址相关,这个端口是绑定在哪个端口上,这得说清楚,那当然我这个端口应该绑定在是我当前机器上拥有的地址上,我这个机器上拥有这个地址,那么我打开的端口就应该是和这个地址有关的,比方说我这机器上监听了这么多端口。这端口一定是和你当前电脑IP相关的,我这有一个十点上六,那么我的22呢,端口是可以绑定在十点上六层的22。但是我能不能把22端口绑定在我这不存在的ID上一想。
12:03
比如说我绑定在我的机上的,我这没有这个十点,那66,我能不能把22端口绑在一个我根本不存在的IP66上行吗。那肯定是不可以的啊,不可以的。人家绑的话会失败,因为你没有这个地址,他绑不上去啊,我们说骚呢,实际上就是IP加端口。IP一定是你电脑上有的IP,你没有的IP你绑什么?但是在有些场景下,我们确实就想绑到一个我这目前还不不拥有的IP上把这个端口,那要想实现这个,那你就得把刚才那个绑定打开啊,这个绑定打开就把这一项把它设成一就行了。设置一以后就可以做到,这个是我们后面讲那个一些网络服务,比方说我们讲h process的时候会用到啊h for反向代理服务器,到时候我们会用到这个选项,这个开关啊,这里面的设置非常多啊,这这我就不展开给大家一点点介绍了。
13:08
啊,总之那这个文件是我们生产中需要去修改的,它可以保存。啊,比方说IP forward,我现在想把它改了,那就把它改成一就好了,但是改完文件以后呢,我们一般来讲它是不会立即生效的,要想生效怎么生效呢?放屁放屁它就生效了,生效完了以后呢,我怎么验证呢?哎,就直接可以看就行了。你看实际上这已经显示出来了,你直接看是不是已经生效了。啊,当然我如果想再把它改回去,那就很简单,你把它改回去就行了,你把它变成零,改成零以后,你再杠P它就生效了,你再看一下它的值是不是就回去了啊。甚至就是它的设置方法啊和生效方法。
14:02
呃,这个设置你也可以放在ETC ctl.d的下面,放在这里面也行,比方说你建一个叫test com,只要是com结尾就行,然后你把这一项呢,给它加到里面来,加到这里面来啊,把它变成一。啊,变成一,然后把我们刚才写的这个文件的这行从这里面给它注释掉,没了,然后让它生效,怎么生效呢?让P需要指定这个文件的。指定这个文件这样的话就可以了啊,你看生效没生效呢,我们可以用刚才的方法来验证一下,看它生效没生效了吧?啊,写到这个文件里也行,当然我们写到这个文件里也能持久保存,所以下次机器重启以后,这个设置应该能留住,能存住。
15:06
那么用这种方法带来的好处就是,因为内核参数特别多,所以你可以把它们分门别类,哎,有的比方说和网络有关,你可以放在一个网络的配置文件里面。啊,有的和这个呃这个呃进程有关,你可以放在进程的一个配置文件里。啊,所以你可以分门别类放在不同的子配置文件里,这样的话呢,将来管理起来就比较清晰啊,你要放在一个文件里的话,可能会比较多,容易乱啊,容易乱啊,这是他的一个内部的管理思想。好,我重启了,哎,起来了,已经好起来以后呢,你验证一下,你看它的值是不是还是一保留住了。对吧,嗯,好的。好,这就是这个ctl,这个ctl呢,是我们用的很主要的一个文件,不过呢,版本不同啊,它这个文件内容有些变化,你比方说七上现在这个文件虽然有,但是呢,你看他的文件里面什么都没了。
16:11
空了。那空了没关系,你该写写吗?不过呢,你看告诉你了,说你可以放在这里面也行,是不是放在这里面也行啊,你可以放在这啊,比方说刚才说的那个44K啊,这个IP活IP现在不是应该在七上,应该也是没启用的。啊,那你要想要保存,那你可以把这个文件改了,方法是一样的啊,把它加上就行了,就把这个地方加上啊,这就可以了,这个空格有没有都行。杠A啊杠P,从小这样就行了。
17:01
你看现在就变成一了啊,就这么简单,这个七和八也可以写在这个面积一样的。那这里面呢,用到了很多选项,就是内核的参数啊,这个是竞聘的,这个咱们用过,这是清除缓存。这可以清除缓存,这个清除缓存呢,这个一般来讲不建议大家清啊,所以有的时候呢,咱们这个系统中内存会有大量的空间是被缓存占用的。啊,你看这边有缓存,缓存占用以后,有人觉得那个缓存占的空间太大,它就会觉得能不能把它清了呀,清了也可以,清了的话,你可以用这个命令把这个文件改了,这个改了以后你就可以清除缓存,但是我建议大家还是不要清了,缓存是为了提高效率啊,没有必要清。你可以给他设一个值,不过这个值默认值是多少,我们来瞅一眼,看他默认值是多少,全默认是零。
18:06
那你可以给他设置不同的值,一二等等来设,那这个如果你想查看这个用法,你可以慢一下,这里面有大量的设置啊,比方说我们刚才说的那个,这里有没有帮助,你看这边有,那这关于它的这个功能是什么,这有一是什么意思是吧,二是什么意思,三是什么意思,这都有。那这个要清除一二缓存写一。啊,然后清除二缓存,清除这个222的话呢,是清除这个条目和记录。三呢是清除什么呢?第三三是清除这个节点和这个条目和大叶,大叶这个叶缓存,那也就意味着看来三日清的比较全了,三日清的比较全。
19:05
啊,这里面对应的它都有相应的设置。啊,所以你可以用这个命令来清,比方说我们清三清三把氢三的话呢,我们得先构建一下它,让它多利用点缓存啊,那缓存怎么让他用的呀。比方说我们DD一下,是不是就可以让他多利用一下缓存。好,我们来看一下我构建一个大内存的使用。你看它这个缓存利用率会不会大幅上涨,目前现在缓存占了237兆。还少了?那再再来一次。
20:00
上不去是吧,那我就考磁盘文件吧,磁盘文件。把磁盘文件读进去。这缓存不灵啊,缓存上不去。要缓存不增长,不增长,那就不利用呗,利用。那不行了,拷一下啊,放到这个文件也行,或者你只要拷一下文件啊,完事我们拷一下吧。Sda。帮我考一部分。行好了一部分看看它1.3个G,你看它有没有增长,诶涨了看。
21:02
是不是700多兆,那当然他这个700多兆怎么来的,实际上就是把硬盘里的数据怎么样,是不是缓存进去了啊,下次你再用的话,它缓存就可直接用了。当然这个有人就觉得缓存太占劲儿啊,清的话怎么清呢,刚才说了就拿这个就可以清啊,直接来个三。我把它清了。走清了,清了以后你看是不是利益清了看了吧,不过呢,我建议大家别清了,那缓存干嘛不提高效率,不要清了它干嘛清了,内存没了是腾出来了,那下次用不又得从硬盘读吗?是不是没有必要啊,没有必要啊。好,这是一个小例子啊。啊,这儿写在这儿吧,是清除缓存的一个小例子。
22:07
啊,这边呢,它有这个关于他的说明。买PC。好,这是给大家讲的这个CCKL啊,像这些内核参数啊,有的时候我们要去优化,嗯,那接下来咱们来看一下C这个目录。
23:09
C,这个目录呢,也是一个非常重要的目录,不过这个目录目前来讲我们很少改啊,因为它主要和硬件有关。啊,这个目录最典型的代表就是我们加硬盘,加硬盘是不是通过。扫描那个硬盘里的文件,让它能识别硬盘。啊,你看我们用过这个。别名。还记得这个吧,这不就是有吗?就是好,我就把它写在这啊,这是。别名。实现。新添加硬盘的。
24:01
识别。啊,这是我们编过的一个。那这样的话,你加硬盘的话,这个就可以识别出来用的就是C,那C呢,硬件相关,所以我们一般来讲很少去关注它。好,那接下来我们来看一下内核,内核模块实际上呢,我们现在目前在Linux中,它表面上叫单内核,但它也借鉴了微内核的设计理念,实现了一些模块化的体制。在Linux中。内核是由这个包来提供的内核包啊,不过呢,在高版本里面换名字了,那叫号啊,大家看这个内核里面很多文件都是放在lab Mo目录下,而且我们看到是不是都是Q文件,那除了这个文件以外。
25:07
还有就是大家比较熟悉的。你像这个VM0那个文件,这是真正的内核文件,但是呢,大部分文件都在这个目录下,这个目录呢,实际上不小,大家看一下这个目录有多大。那50多兆。而我们真正的boot这里面的文件夹这才多大点啊,100兆100兆,当然里面还有一些别的内容。啊,还有一些别的内容,而且呢,我们这个地方是被压缩了,这个地方FZ是压缩的,压缩了。那实际上这里面我们说过,最核心的就两个文件,一个就是VMV的文件,一个就是这个文件。这两个文件是核心文件,还有一些是grab相关的文件。
26:03
好,那么在另一种内核。他是负责解决超系统的核心功能,比方说我们前面讲的进程管理呀,内存分配呀,包括文件系统的管理,安全控制等等,那其中另一个是内核,作为一个超系统来讲,它应该拥有硬件管理的功能,那所谓硬件管理呢,就要加载硬件驱动,而硬件驱动这些每一个驱动文件就表现为一个Q文件。Q呢,是内核对象的意思,内核对象,内核对象。那每一个Q文件,你可以理解成相当一个驱动啊,比方说我们前面给大家讲的网卡驱动,那网卡ETH-I它的驱动文件呢,我们在这是1000,那1000呢,它对应的这个文件就在这个目录下存着的,你看没有,是不是就是这个目录。
27:14
这就是他的驱动文件。那么为什么他会把这个驱动文件放在这个lab module这个目录下,而不放在咱们的内核的本身的这个文件里呢?那原因就是因为。我们在Linux中虽然有好多驱动,但这个驱动并不是核心文件。不同的电脑,它的网卡驱动是不一样的,文件系统是不一样的,有的用不同的网卡驱动。所以我们不能把这些大家并不通用的东西放在一个文件里,放在这个文件里如果真的放进去的话,就会造成这个文件庞大,而且呢,有的时候你可能也用不着,你要放到这个文件里,一开机它就要加载内存里面,结果你用不到就白白浪费。所以呢,Linux就采用了模块化思想,就把最核心的东西放在里面。
28:12
一些不太核心的,有可能你用,有可能他用,那么就放在lab Mo目录下,那么放在lab Mo的目录下带来的好处就是需要加载,不需要就不加载,那加载的和不加载的怎么观察呢?有一个命令叫l Mo l mode,这列出的就是加载的,已经加载内存里的。那目前被加到内存里的只有这么多?只有这么多,并不是很多。啊,那么这里面呢,如果。如果你添加了一个新的硬件设备,它会自动的内核会识别,并且加载对应的驱动,这就会出现了。啊,比方说你如果你插个U盘在这儿就会自动的出现这个USB的驱动模块啊,因为现在没有啊,所以你看现在应该是没有USB设备的,USB现在没有,那事实上这个USB驱动模块确实是存放在咱们lab Mo下的,那我们可以搜一下,在lab Mo这个目录下,咱们是能找到一个叫USB的Q文件的USB。
29:30
应该叫USBUSB那搜一下应该就能找到这个文件。USB storage。这个看到没有,这就是他的驱动文件,那但是由于我们现在没有USB设备,所以它是不是一个这个驱动是不用加载到内存里的啊,那么如果你插入一个USB设备,这时候它就会在这里面识别出来,在这就会加载到内存里面,你用Mo就能看到了啊。
30:08
好,那比方说我们插入一个U盘试试,插入U盘啊,我这准备了一个U盘啊,我们来插一插试试。好插入U盘以后,呃,在外面里面它给识别出来了,不过呢,我现在不是让Windows来识别,我是让当前的,我现在用哪个系统八的系统,那应该这个让八来识计点去确定好,这时候再来看一下这里面是不是就有了。看到没,是不是自动加载了USB story这个模块自动加载了,当然你要把它拔了,它就没了,那就是这个是按需加载。
31:07
需要的时候把它加在内存里,不需要就不加载,这样的话可以节约资源啊,节约资源这就是他的一个加载逻辑啊,当然了这个加载完了以后。如果你把它拔了,自然他就给你卸载了啊,比方说把U盘拔了,它就给卸载了啊,这是这呢写了个一一的话,就表示已经被使用了啊,这还有个u as,这个u as什么意思呢?大家看这这上面这是模块名,这是它的大小,这个就是被用了几次,BY呢是表示被谁所依赖,那这个地方USB story呢是被USA us as所依赖。被人家依赖,那被人家依赖你加载了他,那这个东西有没有加载,那我们来看一下吧,这里面有没有UV。大家看它也加载了。
32:00
啊,这个us依赖于它,依赖于它啊,你把这个us加载的时候,它必须要加载USB,它有依赖关系啊依赖关系。那如果说我现在把USB设备拔了,然后把U盘拔了啊,拔了以后,那么这个设备它一看没了,它就会自动的卸载啊,当然有的时候不一定那么快啊,可能内核得监测到,稍微等一会儿它就卸了啊,所以它这个是按需加载和卸载的。那么加载和卸载,咱们也可以手工的执行命令啊,比方说我人为的我也不拔,我在这儿模拟拔,怎么模拟拔呢?诶这很简单,在这个Windows里面,它是可以把这个U盘呢这样的给它断开的,我这一断开连接就相当于把它给拔了啊,相当于把拔了,拔了以后当然断了,实际上并没有真断,它是被Windows识别了,被Windows识别Linux就识别不了,就相当于从Linux给拔了它了,诶断。点一下。诶,大家看现在是不是被Windows识别了,你发现没有,哎,那它当然在LIS里,他认为就没这个设备了,Linus就没认为这个没这个设备了,当然你卸载了以后,他这边他得过一会你看过一会才能真正的把它去掉,所以现在它不会立即的卸载掉,可能过一会才会去掉过一会。
33:23
啊,这个是稍微有一个延迟的啊,不是说你这拔了立即就卸了,没那么快,当然了,现在如果你不想等,你也可以人为的把它主动的卸载掉啊,那怎么卸载掉呢?用这个命令mode pro让R。就可以把它卸了。比方说USB story。这就把他人为的主动的卸了。谢了哟,他这还提醒我们说目前仍然在使用啊,目前他仍然在使用,那卸不了,他认为在用啊,认为在用,实际上他这个有一个监控延迟啊,就是你虽然把它拔了,但是系统认为还在用,所以他这个目前那当然我们。
34:09
用这个命令可以卸载,用刚才这个这个命令可以卸载,实际上还可以用另外一个命令卸载,就是r Mo的啊,这个命令一样啊,它也可线可写啊,你看它这梯形,当然它这个梯形是被u as所依赖。这个是依赖关系吧,这是是不是就是说你要卸它,但是人家是不是被UV占着呢,所以呢,要卸不行了,你怎么样先把U卸了。卸了他再卸他,哎,你看这回就可以了。是不是还有依赖关系,那下来以后呢,你再看这里面是不是就没了。没了吧,你看USB明白了,卸载了啊,这是加载和卸载驱动,卸载驱动啊,不过一般来讲现在很少去管这些事,现在都云计算了,说实在的物理服务器都不一定,你天天看得见了,都是虚拟,虚拟化了啊,现在虚拟化都落这个早期的虚拟机都不行了,就容器了,都docker了,所以这些东西慢慢的就不太像以前那么关注了啊,不太关注了,所以大家了解一下,了解一下硬件东西,说实在的以后不像以前那么重要了。
35:28
好,这是刚才给大家讲的这个命令啊,那这个这个是命令,当然我们现在虽然卸载了,但是我也可以把它加载啊,那加载的话用mode的pro,比方说我把us给它加载了,这个一旦加载了以后,因为us是依赖于USB story的,所以它就会自动的加载USB story,看到没?但它这个依赖关系啊,当然这个也应该是加载了。啊,U as应该也加载了,U as都加载了,那么它有依赖关系啊,它能自动的给你把你加载进去,那卸载的时候,它也是可以用这个命令来把它因为依赖关系卸载的USB story。
36:13
他说什么USB正在用,那我就先把那个us as先卸了,Us卸了再去卸USB sorry,这不就卸了吗?明白吧,啊啊,这就是他们的依赖关系啊,是可以实现的。啊,这个驱动模块的加载卸载了解一下,你看还记得刚才我去自定义小Linux的时候,是不是用这个in mode来加载了一个那个,呃,网卡驱动是吧,那那个命令呢,注意mode这个命令呢,它加载的它需要写文件名。他要要求写那个Q文件的路径的,而我们现在用的这个mode pro加载它是不需要写文件名的,你只要写上模块名就可以了,它能找到明白吧,能找到这不一样。
37:00
好,这是刚才我们给大家演示的这个模块使用啊。好,我把这个过程复制一下。那刚才我们给大家演示了这个USB设备的加载和卸载。啊,这有这这有一个演示啊,这个演示我就不写了啊,这这有一步骤。还有什么DP,这个是用来实现依赖关系的,因为模块之间它有依赖关系啊,Mode呢,是指定这个文件名来进行加载。来安装模块。Android模块。好,这些硬件东西呢,了解即可。
38:00
啊,这个mode for呢,它可以查看到这个驱动的模块的详细信息,显示的比较全啊,包括它的路径,包括他的协议,包括他的这个啊,作者是谁开发出来的,这都有详细描述啊,比方说我现在想看一下当前我的这个USB设备的驱动模块是谁提供的,这就有详细的描述。啊,这有是这个人开发出来的,看吧,这他的邮箱。啊,硬件东西我们了解即可,那接下来咱们来给大家说一个啊,叫编译内核这样的一个技术内容编译内核通常我们在目前。
39:05
用的不多,所以这块了解一下,但是作为Linux来讲,咱们运维工程师如果内核编译都没做过,感觉好像是这个差点意思,那会编译普通软件是不是内核咱们也得会编译,对吧?那内核它的编译过程跟我们一般的软件编译还是不太一样的。内核的编译。首先内核它的这个编译过程很多和硬件相关,包括你为什么要编译它,这个得想清楚在Linux中内核的功能。就是超级懂的功能。那现有的内核如果无法满足你的要求,比方说,我想支持特殊的文件系统,而我们默认现在Linux里带的文件系统。
40:05
他不能满足我的要求,比方说我想让它支持NTFS文件系统。那微软的NT发文系统这个Li内核里面,在编译的时候,它是没加进去这个功能的。但是确实linus是有这个功能,只不过我们红帽乌邦兔他在编译的时候没有把这个功能启用,所以那盒就目前是没有NTFS文件系统功能,如果你想支持,那很简单,你自己。重新编译内核,把这个功能启用一下就好了,我们都知道编译其中有一个重要的好处,就是功能可以自己定制,你想用什么功能你自己编译啊,100个功能。官方给你提供的编译,有可能只是挑了一些他觉得比较常用的功能啊,比方说挑了80个啊,或者挑了50个,另外50个觉得用的少,他就不给,没给你编译进去,所以在这种情况下啊,如果我们想使用某个特殊功能,那你自己编译就好了。
41:10
那么内核也是同样存在这种问题,红帽公司呢,他觉得NTFS这个东西啊,大家没有没人再另起用,所以他也就没给你编译进去啊,如果你想用,那你自己编译呗,那现在假设我们就想让当前的list。在内核编译的时候添加NTFS文件系统的支持。当然现在肯定不支持啊,当然为了是不是真的不支持,那我们来构建一个啊,构建一个,构建一个什么呢?找一个分区呗,找一个分区,拿一个NTFS分区来试一试。那我这儿有磁盘管理啊,这块空间,大家看这块空间是没有使用的,我们就拿这块空间做实验就好了。
42:04
新建分区。一个G。NT机系统。好,这不就加进去了吗。加去以后呢,我现在让Linux能够把它,呃识别进识别了,把它加进去,那识别了,那么怎么做呢?我们在这我就直接在八上来做了,四八来做了,四八上我加块硬盘。好,我加一块硬盘,选硬盘,把我刚才那个Windows的那块新增的分区给它映射成我的虚拟机的硬盘。啊,这选择物理磁盘,看到没有物理磁盘,然后我们这儿发现有两个可选项。啊,这个零呢,应该就是我们那个第一个硬盘一呢,就是第二个硬盘。
43:03
我们选一,然后选单个分区。因为我这这个第二块硬盘有两分区,我让他先使使用第二个分区,那么就选分区,分区的话你看是不是NTFS2个,一个500G,一个刚分的一个G嘛,那我把它选中。增加完成。好,加是加了,但是呢,他现在硬盘相当于新加了一个,它能自动识别出来吗?是不是还是不行啊,那我们就要看一下看看出来了吧,当然出来是出来了,但是它这个文件系统啊。下面是不是显示是NTFS,但是呢,你能访问吗?那我们试试吧,啊建一个文件夹啊,就叫NTFS,然后呢,我们把这个SBB2是不是往上挂呀。
44:08
那挂不了,为什么他不支持啊,因为我们当前的内核没有。启用NTFS这种文件系统的功能。啊,咱们系统功能有很多,那我们看一下。在lab这个目录下,Lab Mo这个目录下,它里面有各种各样的文件系统啊,咱们就搜一下FS这个字样就行了,看看这里面。FS的这个字样,你看是不是全是FS,但是这些FS里面有我们熟悉的EFFS,但是是不是就没有NTFS,没有,因为你没有编译吗?那所以我们接下来要自己编译内核,让它支持NTFS啊,将来能够访问我们E盘里的数据,比方说我这提前,诶我这怎么打不开啊,啊对这个被Windows被Linux给占了,占了以后呢,Windows打不开了啊。
45:13
啊,那我这样吧,为了避免这个冲突啊,我先关了,关了这个机器,我现在里面放点数据。你先把它关了啊,关的话呢,呃,直接关机或者是休眠也行,休眠挂起。那挂起不就不用了吗?不用了,我这就可以。打开了。打开以后,我这儿可以放点数据。比方说放一个记事本啊,这个叫Windows。啊,就是我是在NTFS的分区里面。
46:01
啊,我是在这个里面的,行了,能看到这个,那就说明我们能访问成功了,好了,那接着我们把这个分区,把这个S把再启动起来。好,那么现在我们要想让它支持NTFS文件系统,那就得重新编译内核了,那编译内核,那我们首先得拿到源码,那源码在哪呢?官方站点那盒在哪呢?在这儿啊是不是吗?哎,最新版是5.8,比咱们现在目前拿到的版本新多了吧,啊,我们现在的版本是4.1吧,差的还挺多啊,这个我就提前已经下载了,所以我就不下了,我这个提前都已经准备好了啊,我已经提前把它下下来了,就放桌面上了这个。
47:00
这个看没有早上下的啊,直接蹬过来。100多兆。啊,看看怎么编译内核啊。编于内核大致的流程我先给大家说一下,第一步也是先装依赖的包,然后解压缩假说之后,然后在这个文件里面。我们去把这个文件给它拷出来,这个文件叫compare文件,这个文件呢是这样的,在boot下有一个叫conflict开头的文件。这个文件,它的作用就是用来记录。要启用哪些特性?大家都知道,一般的软件编译第一步通常都是comp,还记得吧,那后面是不是要加上一些安装的目录以及启用的特性,那这个启用的特性啊。
48:08
对于内核来讲太多了。内核裂变有几千个特性。难不成你也要用compare类似的命令?EE1000个选项都给它加上?那没法加太多了,那怎么办呢?那我们可以参考当前系统的编译选项。在它的基础上微调就行,它的编译选项放哪了,就放在count里,那这个文件里面就放了,它编译过程中哪些功能启用了,哪些功能没启用。那么这个Y的表示启用了。Yes,哎,那么当然也有没启用的,没启用的你往下翻一翻,有一些是没启用的,咱们搜一下NTFS吧,NTFS肯定没启用,那么就搜一下NTFSNTFS看看见没,这就表示没启用,这不写着赛吗?
49:02
你看这一行是不是被成被注释掉了,就NTFS没体用,当然除了Y的,还有一种呢,叫M的,大家看见没有MM什么意思呢?Y的意思是说把这个功能会集成在内核文件里面,内核文件是谁呢?内核文件不就在这吗?啊,就是不下的vm linu就这个文件就是你如果是Y就会把内核的这个功能集成在这个文件里面,那如果是M呢,M呢,就表示我是把它专门编译成一个独立的文件,放在lab module目录下的某一个专门的文件里面,听懂了吗?他这个意思,你像咱们E4的驱动都是以独立的文件存放的。啊,那那既然这样,那我们NTFS文件系统是不是也不不太适合直接编译到这个内核文件里面,是不是直接给它生成一个独立文件比较好一点,因为这样的话呢,需要就加载,不需要就可以卸载,对吧。
50:05
啊,所以你看这我们可以找一下咱们的net。这样的文件,你看人家的ET是不是都是K文件,独立的文件NGFS不也是这样吗?那既然NT这样,那我们将来这个地方要把它改成M。啊,找到NT法的案例,那这里面呢,内容特别多啊,大家可以看到6000多行,这还没到底呢,啊到底了7000多行,一行就是一个特性,听懂了吧,一行就是个特性,那那盒多复杂啊,7000多个特性,难道你要一个一个手写啊,说哪个特性我要哪个特性不要我就关心NTFS,别的我也不关心,所以呢,我们方法就是把这文件拷过来,用它作为模板,在它就要稍微改改就行了,明白了吧,啊,咱不从头写了,从头写咱们也没也我们也不是搞硬件研究的,是不是哎。
51:00
那所以这个就是一个参考的文件。好,那所以这一步我们需要把这个文件拷过来做一个模板,在他就说改改的话怎么改呢?诶我们不是直接编辑这个文件。啊,那么我们通过一个菜单来改,叫menu这个菜单它会提供一个菜单项,然后这个菜单项呢,呃,可以帮助我们来修改它里面的那些内容,我们找到NTFS可以把它改一下,最终呢,哎,编译完了以后,它就可以支持NTFS文件系统了。你执行这条命令以后,它会弹出一个跟菜单一样的界面来,啊,它的风格呢,类似于什么呢?类似于我们刚刚学过的那个命令,叫net net n nt s SV就类似于这个风格。类似于这个风格,打开以后呢,你这按一下就变成星,按一下就变成M,再按一下就空啊就这个意思,可以切就哪些,这里面有几千项,你就挑吧,几千项当然我们不都改,我们只找到NT版那项改了改就行了,明白了吧,啊就这个意思,它那风格就跟这个风格一样。
52:12
啊,将来这个命令的执行结果就是你打开那个菜单,但是这个地方呢,略微得改一改,你得把这一项给它改了,你要不改的话就是会报错啊,这是它和这个呃信任的有个K有关啊,这个需要临临时稍微改一改啊,这个需要改一改,好那么就参考这个啊,不过这个版本是5.4的啊,那咱们现在拿到的是最新版5.8 5.8不知道有没有变化,我也不知道,那我们测一下吧,万一呃有问题不行,我们就回到老版本啊。啊,那我们就来装一下啊,先把一些依赖包给它装上。这提前给他装了啊,我就不测了啊,提前给它装上。啊,装上以后,接着把这个源码已经拿到了,把它解开,解开我就写在当前目录下了,啊把这个文件呢,总共100多兆。
53:09
啊,解开以后。上次说过啊,多大了一点姐姐了。解开一个G吗?解开一个G里面有几万个文件,有2000多万行C代码,还记得吗?好,这个就解开了,解开以后就解在当前目录下了,实际上一般来讲建议咱们源码啊,一般都是建议放在这儿,这有个专门的目录,专门放源码的啊,我就不放了,实际上习惯的做法应该是放在这。好,进到这个目录里,你看这里面的目录,看看这个文件有多大,1.1个G了,看到没1.1个G了,刚才说了,我们要把那个boot那个文件,那个文件拷过来,拷个拷过来,起个名叫点。com外。
54:05
啊,他将来就可以在他的基础上作为模板来改了。啊,不过这个文件稍微要改一下,就刚才我们说了,有一项要改一改,就这一项。叫什么K这一项,搜一下这个这个这一行。找到这一行,找到这一行以后,大家看它是不是有一个RE7L的证书文件,这是上是红帽的那个证书文件,把它删了,不要要啊,要不会导致我们编译失败。啊,他这个需要用动手验证。好把它改了,然后这还有一项叫com module size,这把它也关了它。找到这一行好,找到这行以后,它这个是E那Y啊,你把它给注释掉。
55:03
把它注释掉。一直闹sad。行,那我把它注册掉就行。好,那这样的话呢,我们就把这个文件给稍微修改了一下,稍微修改一下以后呢,我们就开始来利用它来制作菜单。这条命令呢,就是类似他这个命令就相当于contract内部。不过呢啊,风格是个菜单风格,不用命令行方式。因为这个命令行太长了。啊,几千个功能要用命令行的话太长,所以用菜单方式。大家看这里面呢,就有大量的特性,那我们在这呢,嗯,先找到NTFSNTFS在哪呢,你可以看一下这里面。哪个是和文件系统有关?再往下翻,这是不可文件系统,看见没?
56:02
上面这是网络呀,什么内存啊,这个我们不改,这个我们只改这个文件系统的。啊,这里面还有什么网络的,网络的,你看这个网络设置里面,它有什么无线网卡,有线网卡呀,包括其他的文件系统啊,网络文件系统啊,这都有啊这里面有网络选项,什么蓝牙是不是是不是这是不是无线,你看无线里面这些。8211看到没有,这些都是网络相关的啊,这个我们不改它,不改它我们就退出来,Exit退出来我们不改网络啊,我们改的是文件系统,你看旁边有个小箭头,表示它里面有子项,你回车它就进去了。而且旁边不有个小箭头吗?进来进来以后我们找一找,这些都是原来E3E4的,我们不管它,我们找微软的NTFS,找找有没有微软的NTFS。
57:05
一。这看到没?是不是DOS fat nt f n件系统回车进来,诶这是不是就是NTFS,按一下M空格,再按一下心,再按一下没了啥意思。知道啥意思了吧,这就相当于不支持这个空,就是不支持再看一下M,就以模块方式再看一下,其实就是打到核心里去了,当然我们不愿意打到核心里,打到核心里的话,那个文件会嗯比较大啊,所以我们就M吧,M那这两个呢,实际上是意义不大,这个你说是写,他实际上最终也没有支持写,所以这两个选不选都写。好,只要这个地方选中M就行了,然后exce退出,然后退出来以后呢,我们现在啊。
58:00
还想再退,退到上级啊,注意这个地方我先暂时不退,为什么呢?我要改一些东西,这一个general setup,那么我们都知道内核编译完以后啊,它的内核是有版本的,内核编译完以后什么样呢?你用这个u name-R,将来能看到你的内核版本,那其中咱们现在从互联网上下载的这个内核版本是5.8.5。5.8.5,而这个5.8.5将显示在这个位置。那么后面这个东西从哪来的呢?后面东西是变异者加的。他不不属于源码的编译者加的,那编译者加,所以呢,我们在这我就想自己加一个这个人为加的一个版本信息,那这个要加的话很简单,那我们只需要。在刚才那个菜单里面进行修改就可以了,那怎么改呢?我们来看一下,回到刚才的菜单,在这这一个general setup啊,这个地方有一个general setup回车,然后这有一个叫本地版本,看到没?就这一项叫本地版本。
59:15
然后在这加,比方说我们加一个。马哥E,然后Linux这个是M42版本。下来我就加了这个,那将来你这加的这个东西,将来就体现在哪了,体现在我们这个地方,听了吧,写在这啊,前面是5.8.5,后面这东西就是你加的了。后面就是你家的了。好回来,然后OK,行了,我就改这么多啊,我也别的不改了,这些好多东西和硬件有关的,我们就不改它了啊,然后呢,我们切到exit退出再退,退到最后一次的时候,他会问你是不是保存啊,当然你就yes保存了,保存完了以后,它实际上是把谁把刚才东西存到哪去了,存到这个con文件去了,你看这个文件的时间是不是刚改的啊,但是这里面呢,你应该猜到它那个NTFS是不是应该变了,因为我们是不是希望把这个功能启用的,所以你看一下它里面东西看见了没,是不是变成M了。
60:28
M是不是就是说那个就是我们选菜单的时候不是M啊。北必。好,那接下来我们是不是就可以开始编译了啊,编译的话呢,怎么编译呢,这个已经做完了,这步已经做完了,做完以后呢,我们开始编译,编译的话呢,这个命令编,不过在这个命令编的时候呢,你最好检查一下你的硬件啊,检查什么呢?CPU有几颗。两个,然后呢,内存有多大。一个G不行,加多加点啊,能多大就多大加点,要不这个机器会非常慢。
61:10
啊非常慢,内存这这这这最多开机状态下最多加到三个GCPU,八颗CPU,当然你也可以把这个机器关了啊,关了加关了加的话,那个内存可以加大一点。啊,明儿我关了它吧。啊,这样的话内存我可以加到八个G。这样尽可能快一点,尽可能快一点,因为编译内核确实慢,编译内核是比较慢的。那我们待会编译啊,开始编译,然后我们记一下十,然后我们就待会休息一下,哎,41期同学记得上次编译花了多久吗?啊,我那个机器花了多长时间,你们还用一下。
62:31
那咱们就准备开始编译了啊,那编译的话呢,很简单,目前来讲呢,这个文件夹不大啊,目前这个文件夹不大,你看1.1个G 1.1个G啊,那么编译完了以后呢,接近十个G。啊,那么开始编译呢,就是这个叫make module啊,就是这个啊make杠杠这个啊这是一步做,你也可以分两步做,分两步做呢,先执行这个,再执行这个,这个呢是先编译那个。
63:03
内核,然后再编译模块,就把它分开,那一般来讲我们就合在一起了,一块编译了啊,内核和模块给它一块编。一块编,那这个呢,当然我们就八个,CPU就来八个,这样的话尽可能快一点啊,这个内存应该被我加到了八个G是吧,CPU个数是八个,所以我们就用内杠勾啊,当时编的时候我们看一下时间。看一下这个时间。现在几点了,45是吧?啊记住了,然后这个编辑完了以后,呃,我们再显示一下时间,然后呢,能不能发个声提醒我们一下,有声吗?看看有没有声。
64:02
没声啊,算了,那那就这样吧,那把这个编辑完了提醒一下啊,这个时间,不过这个时间会比较长,可能比较长。好,那我们就开始编了啊,编的过程中啊,最好你们呃在本地编,本地编不要这样编,因为这个编的话呢,容易,这个万一网断了就白编了,所以建议大家坐在本地编就坐在本地编,就这么编,在这编知道吧,因为这个插线万一死了,你编辑半天白折白折腾,进到这个目录下没个杠勾。八这样来做,明白了吧,好,开始编吧。啊,需要花很久。需要缓很久,那所以我们就休息会儿吧,休息会儿啊,啥时候变,我们就开始一会回来。
我来说两句