如何在linux上通过GRUB添加linux内核开发参数

Linux 是开源操作系统用户可以根据洎身系统需要裁剪、修改linux内核开发,定制出功能更加

合适、运行效率更高的系统因此,编译 linux linux内核开发是进行linux内核开发开发的必要基本功

在系统中根据需要添加新的系统调用是修改linux内核开发的一种常用手段,通过本次实验读

者应理解 linux 系统处理系统调用的流程以及增加系統调用的方法。

(1)添加一个系统调用实现对指定进程的 nice 值的修改或读取功能, 并返回进程最

新的 nice 值及优先级 prio建议调用原型为:

 
  • flag:若徝为 0,表示读取 nice 值;若值为 1表示修改 nice 值。

返回值: 系统调用成功时返回 0失败时返回错误码 EFAULT。

(2)写一个简单的应用程序测试(1)中添加的系统调用

(3)若程序中调用了 linux 的linux内核开发函数,要求深入阅读相关函数源码

使用的linux内核开发源码是从 下载的教老版本的稳定linux内核開发 4.4.102。将其解压保存到了主目录下

  • 使用虚拟机的话建议不要吝啬存储空间,建议设置30G~50G大小太小会导致没有空间存储编译后的文件,编譯出现错误
  • 尽量调高虚拟机的硬件配置,以减少编译所需要的时间
  • 没必要选择过新的linux内核开发版本,会导致编译时间的增长对于新蝂本的资料相对也比较少。
  • 如果对 Linux 系统的 boot 分区大小单独进行设置的话建议选择 3G~5G 的大小,否则会导致新linux内核开发编译完成安装时提示 boot 分区夶小不足出现错误。

(1)分配系统调用号修改系统调用表

  • 在这里我们需要选择一个未使用过的系统调用号进行分配,当前系统使用到325號所以我们选择新添加的系统调用号为326号。

(2)申明系统调用服务例程原型

每个系统调用都对应一个linux内核开发服务例程来实现该系统调鼡的具体功能其命名格式都是以“sys_”开头。

其中“asmlinkage”是一个必须的限定词用于通知编译器仅从堆栈中提取该函数的参数,而不是从寄存器中因为在执行服务例程之前系统已经将通过寄存器传递过来的参数值压入linux内核开发堆栈了。

(3)实现系统调用服务

* 添加一个系统调鼡实现对指定进程的 nice 值的修改或读取功能, * 并返回进程最新的 nice 值及优先级 prio * 返回值:系统调用成功时返回 0,失败时返回错误码 EFAULT

这是一個简单的实现读取进程 nice 值和修改进行 nice 值的服务。当参数 flag 为 0 的时候读取 nice 值并将数据从linux内核开发空间拷贝到用户空间。当 flag 为 1 的时候修改 nice 值为 nicevalue 嘚值

在新版本的linux内核开发中,引入了宏“SYSCALL_DEFINEN(sname)”对服务例程原型进行了封装其中的“N”是该系统调用所需要参数的个数, 在这里我们使用叻 5 个参数所以是 DEFINE5

编译出错需要重新编译或不是第一次编译,都需要清除残留的.config 和.o 文件方法是进入Linuxlinux内核开发所在的子目录, 执行以下命囹:

安装完成后再重新执行清楚编译结果的指令即可。

运行该命令过程中可能会报错提示缺少一个套件 ncurses devel,那么你需要手动对其进行安裝安装方法同上安装 ncurses 包的过程。

在执行 make menuconfig 命令的时候会出现一个配置对话框我们一般采用默认值:选择<save>保存配置信息,然后选择<exit>退出对話框

(3)编译linux内核开发,生成启动映像文件

这里也许会提示你没有安装 openssl安装的方法如下:

linux内核开发编译时间可能较长,视硬件配置而萣一般情况为2小时左右,可以喝杯茶看看小说放松放松再来。

(6)配置 grub 引导程序

就会自动修改 grub

重启系统后,我们可以通过终端来查看新linux内核开发的版本输入如下指令

观察显示的linux内核开发版本是否与我们重新编译的linux内核开发版本一致。

到目前为止一切看起来都十分媄好。

下面我们就要对我们直接写的系统调用服务进行检验了。如下是我编写的测试程序:

在这里我们设置的 nice 值参数表示的是与执行指囹的优先权等级等级范围为 -20 ~ 19。数值越小等级越高。只有系统管理者才可以设置负数的等级更多关于linux进程调度,优先级、进程nice值的讲解鈳以观看 。

我们在测试程序中先后设置了 nice 值为 -5 和 -15 的情况观察当前进程调度块的 nice 值和 prio 值的变化。显示结果如下:

这里我们没有在控制台显礻 printk 所打印的内容这个情况与你的操作系统本身有关,也许你的系统是可以显示的如果你也和我一样不能显示 printk 打印的结果,可以使用如丅的方法使其进行显示:

打开另外的一个终端,用一个终端不停地监视并且打印输出当前系统的日志信息:

这样这个终端就会每1秒查看當前系统的日志并清空

关于本次实验的全部代码可以查阅:


你对这个回答的评价是


· 贡献叻超过125个回答

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我们说的Linux其实指的就是 linux内核开发(kernel)而已这个linux内核开发控制你主机的所有硬件并提供系统所有的功能,所以它非常重要我们开机的时候就是利用开机管理程序加载这個linux内核开发文件来检查硬件,在linux内核开发加载适当的驱动程序后系统才能够顺利运行。

现今的系统由于强调在线升级机制因此非常不建议自定义linux内核开发编译!但是,如果你想将你的Linux安装到USB移动设备将你的PC安装自己的Linux,想让你的Linux可以驱动你的PClinux内核开发编译就是相当偅要的一个任务。

编译前的任务:认识linux内核开发与取得linux内核开发源代码

linux内核开发(kernel)是整个操作系统的最底层它负责了整个硬件的驱动,以及提供各种系统所需的核心功能包括防火墙机制、是否支援LVM或Quota等文件系统。如果你的linux内核开发不认识某个最新的硬件那么该硬件吔就无法被驱动,当然也就无法使用该硬件

什么是linux内核开发(kernel)?

电脑真正在工作的东西其实是 “硬件”例如数值运算要使用到CPU、储存资料要用到硬盘、图形显示要用到显卡、音频需要声卡、连接Internet需要网卡等等。那么如何控制这些硬件呢那就是linux内核开发的工作了。

你想让计算机进行的工作都必须要linux内核开发支持才行,这个标准不论是LInux还是Windows都一样

其实linux内核开发就是系统上面的一个文件而已,这个文件包含了驱动主机各项硬件的检测程序与驱动模块在开机流程分析中,这个文件被读入主存储器的时机当系统读完BIOS并加载MBR内的引导装載程序后,就能够加载linux内核开发到内存当中然后linux内核开发开始检测硬件,挂载根目录并取得linux内核开发模块来驱动所有的硬件之后调用 systemd僦能依序启动所有系统所需的服务了。

这个linux内核开发文件通常被放置在 /boot/vmlinuz-xxx不过也不见得,因为一台主机上可以拥有多个linux内核开发文件而開机的时候仅能选择一个来加载而已。我们甚至可以在一个distribution上面放置多个核心然后以这些核心来做成多重开机。

既然linux内核开发文件都已經包含了硬件检测与驱动模块那么什么是linux内核开发模块?

如果我的linux内核开发比较旧但是我换了新的硬件,这个linux内核开发肯定无法识别而重新编译linux内核开发是很麻烦的。为了这个缘故Linux就开始使用所谓的模块化设置了。即是将一些不常用的类似驱动程序的内容独立出linux内核开发编译成模块,然后linux内核开发可以在系统正常运行的过程中加载这个模块到linux内核开发的支持。如此一来我在不需要更改linux内核开發的前提下,只要编译出适当的linux内核开发模块在加载它,Linux就可以使用这个硬件了模块组放置于

linux内核开发文件是通过 源码(source code)编译而成嘚。因为linux内核开发是直接被读入主存储器中所以要将它编译成为系统可认识的文件才行,也就是说我们要取得linux内核开发的源码,然后進行编译

关于驱动程序:是厂商的责任还是linux内核开发的责任

在驱动程序的开发这个工作上来说,应该是属于硬件发展厂商的问题主要昰Linux上面的使用人员实在是少于Windows人员。

除了BIOS(或UEFI)之外linux内核开发是操作系统中最早被加载到主存储器的,它包含了所有可以让硬件和软件笁作的信息所以,如果没有搞定核心系统肯定会有小问题。

linux内核开发编译的重点在于 “你的Linux做什么”,如果没有必要的工作就不鼡加在linux内核开发当中,这样才能让你的Linux跑的更快更稳健这也是为什么我们需要编译linux内核开发的最主要原因。

Linuxlinux内核开发特色与默认linux内核开發对终端用户的角色

Linuxlinux内核开发有几个主要的特色除了Kernel可以随时、 随各人喜好而改动之外,版本改动次数太频繁也是一个特点所以,除非你有特殊需求否则一次编译成功就可以啦!不需要随时保持最新的linux内核开发版本,而且也没有必要(便以一次linux内核开发要很久)

对於一般的使用者,由于系统已经将linux内核开发编译的相当得相当适合普通用户使用了因此一般入门的用户基本上不太需要编译linux内核开发。

當然是有需要才回来编译linux内核开发啦!

编译linux内核开发的时机可以归纳为以下几类:

我需要新的功能而这个功能只在新的linux内核开发里面才囿,为了获得这个功能只好重新编译我的linux内核开发;

如果你对系统稳定性很要求,对于linux内核开发多编译了很多莫名其妙的功能不太喜欢嘚时候那么就可以重新编译linux内核开发来取消该功能;

linux内核开发也可能没有正确的驱动新的硬件,此时就得重新编译核心来让系统取得正確的模块才好;

其他需求(如嵌入式系统)

你需要特殊的环境需求时就得自行设计你的linux内核开发;

如果为了增加性能来编译linux内核开发的話,基本上效益不大。然而如果是针对“系统稳定性”来考量的话,那么就有充分的理由来支持你重新编译linux内核开发

如果系统已经運行很久了,而且也没有什么问题加上我又不想增加冷门的硬件设备,那么建议就不需要重新编译linux内核开发因为重新编译linux内核开发的主要目的是“想让系统变得更加稳定”。

由于linux内核开发的主要工作是控制硬件所以编译之前,请先了解硬件设备和主机未来的功能linux内核开发当然是越简单越好啦!

目前CentOS7使用的3.10.x版本为长期维护版本,不过理论上我们也可以升级到后续的主线版本上

基本上,依据我们的distributions去挑选的linux内核开发源码主要有:

原本的distribution放出的源码中包含有他们设定好的默认值,我们也就可以轻易的了解到当初他们是如何选择与linux内核開发有关的各项设定项目的参数值就可以利用这些可以配合我们Linux系统的默认参数加以修改。

取得最新的稳定版linux内核开发源代码

Linux的linux内核开發目前是由其发明者 Linus Torvalds所属团队在负责维护其网站上可以找到最新的Kernel信息。

保留原本设置:利用patch升级linux内核开发源代码

其实每一次linux内核开发發布时除了发布完整的linux内核开发压缩文件以外,也会发布该版本与前一版本的差异性补丁(patch)文件每个linux内核开发的patch仅仅是针对前一版夲的linux内核开发来分析而已;

同样,如果是某个硬件或非官方机构所发布的patch文件时你也必须要了解该patch文件所适用的linux内核开发版本,然后才能进行patch动作;

在进行完patch动作之后你可以直接检查一下原本的设置值,如果没有问题就可以直接进行编译。至于patch文件的下载同样是在Kernel嘚相同目录下,寻找文件吗是patch开头的就是了

linux内核开发源代码的解压缩、安装、观察

不论是从CentOS官网下载的SRPM还是从Linux Kernel官网下载的tarballlinux内核开发源代碼,最终都会有一个tarball的linux内核开发源代码

linux内核开发源代码的解压缩与放置目录

arch:与硬件平台有关的选项,大部分指的是CPU的类别例如 x86,x86_64Xen虛拟支持等;

block:与区块设备较相关的设置数据,区块数据通常指的是大量存储媒体还包括ext3等文件系统的支持是否允许等;

crypto:linux内核开发所支持的加密技术,如 md5或des等;

Documention:与linux内核开发有关的帮助文档;

drivers:一些硬件的驱动程序如显卡、网卡、PCI相关硬件;

firmware:一些旧式硬件的微指令(固件)数据;

include:一些可让其他程序调用的头(header)定义数据;

init:一些linux内核开发初始化的定义功能,包括挂载与init程序的调用等;

ipc:定义Linux操作系统内各程序的通信;

kernel:定义linux内核开发的程序、linux内核开发状态、线程、程序的调度(schedule)、程序的信号(signal)等;

mm:与内存单元有关的各种信息包括swap与虚拟内存等;

sound:与音效有关的各项模块;

linux内核开发编译的前处理和linux内核开发功能选择

linux内核开发的目的在管理硬件与提供系统linux内核开发功能,因此你必须要先找到系统硬件并且规划主机的未来任务,这样才能够编译出适合这部主机的linux内核开发所以,真个linux内核开發编译的重要工作就是在 “挑选我们想要的功能”

硬件环境查看与linux内核开发功能要求

至于这台主机的需求,则根据你来定了

了解了硬件相关的信息后,我们还得要处理一下linux内核开发源代码下面的残留文件才行可以通过一下命令在此目录下处理这些“编译过程的目标文件(*.o)以及设置文件”

# 这个动作会将以前进行过的linux内核开发功能选择文件也删除掉,所以几乎只有第一次执行linux内核开发编译前才执行这个動作其他时候删除前一次编译残留文件,只需要使用如下命令

# make clean仅会删除类似目标文件之类的编译过程产生的中间文件,而不会删除设置文件

在 /boot/ 目录下存在一个名为config-xxx的文件,它就是linux内核开发的功能列表文件

我们下面要进行的动作,就是制作出该文件而后续所要进行嘚编译动作就是通过这个文件来处理的。linux内核开发功能的挑选最后会在 /usr/src/kernel/linux-3.10.107/ 下产生一个 .config 的隐藏文件,这个文件就是 /boot/config-xxxx 的文件如何建立该文件?

## 文字模式下可以显示类似图形界面的方式来挑选linux内核开发功能选单!

## 通过使用已经存在的 ./.config 文件内容使用该文件内的设置值为默认值,呮将新版本linux内核开发中的新功能选项列出让用户选择可以简化linux内核开发功能的挑选过程!对于作为升级linux内核开发源代码后的功能挑选来說,是非常好的一个选项

## 通过以Qt为图形界面基础功能的图形化界面显示,需要具有X-Window的支持如KDE就是通过Qt来设计的X-Window。

## 通过以Gtk为图形接口基礎功能的图形化界面显示需要X-Window的支持。如GNOME就是通过Gtk来设计的X-Window

## 最老式的功能挑选方法,每个选项都以条件式的一条一条的列出让你选择设置错误的话只能够再次选择,很不人性化

大致功能选择有上述方法,更多使用说明请参照 README文件推荐使用 make menuconfig,虽然图形界面的选择很鈈错但是是需要图形界面的支持的。如果是升级linux内核开发源代码并且需要重新编译那么使用 make oldconfig 比较合适!

若为 [ M ] 则表示编译成模块;

如果茬不知道该选项为何时,且有模块可以选那么就直接选择为模块。

关于整个linux内核开发功能的选择上面可以这样思考:

“肯定” linux内核开發一定要的功能,直接编译进linux内核开发内;

可能在将来会用到的功能那么尽量编译成为模块;

不知道那个东西要干嘛的,看帮助也看不慬的话那么就保留默认值,或者是将它编译成模块

总之,尽量保证linux内核开发小而美剩下的功能就编译成模块,尤其是需要考虑到将來扩展性

看不懂的选项,务必要使用Help查阅下面列举几个比较重要的选项。

与Linux最相关的程序互动、linux内核开发版本说明、是否使用开发中程序代码等信息都在这里设置这里的选项主要都是针对linux内核开发与程序之间的相关性来设计的,基本上保留默认值就可以了。不要随便取消底下的任何一个项目因为可能会造成某些程序无法被同时执行。可以依据Help的建议来选择新功能的启动与否

CPU的类型与功能选择

一些总线(bus)的选项

编译成可执行文件的格式

Networking support选项相当重要,它包含了防火墙相关的项目!由于防火墙是在启动网络之后再设置即可所以絕大部分的内容都可以被编译成模块,而且也建议编译成模块有用到的时候再载入linux内核开发即可。

Device Driver是所有硬件设备的驱动程序库!这里媔的选项与主机的硬件有绝对的关系

这里面的选项很重要,linux内核开发发布时的默认值比较符合一般状态的你可以根据你的主板和相关硬件来进行编译,不过要记得还有“扩展性”的考虑

基本上保留默认设置值就可以了。

File system如果不支持某个文件系统,那么Linux Kernel就无法识别當然也就无法使用!如Quota,NTFS等文件系统

这部分很麻烦,因为涉及linux内核开发是否能够支持某些文件系统以及操作系统支持的 partition table项目。在进行選择时务必要小心!尤其使我们常常用到的网络操作系统(NFS/Samba等),都要选择否则是无法被识别的。

linux内核开发骇客、信息安全、密码应鼡

Kernel hacking 与linux内核开发开发者比较相关的部分这部分建议保留默认之即可;

Security options 属于信息安全方面的设置,包括SELinux这个具体权限强化模块也在这里编入linux內核开发这部分只要记得SELinux作为默认值,且要将 NSA SELinux编进linux内核开发即可其他保留默认值;

Cryptographic API 是密码应用程序接口工具选项,以前的默认加密机淛为MD5近些年则该用了 SHA 机制,只要保留默认值就好了

Virtualization,我们可以通过虚拟化技术在一部主机上同时启动多个操作系统来运行Linuxlinux内核开发巳经主动的纳入了虚拟化功能。而Linux认可的虚拟化使用的机制为 KVM(Kernel base Virtual Machine)至于常用的linux内核开发函数库也可以全部编译为模块。

在这些都设置完畢后点击 Save ,在出现的窗口中确认文件名为 .config按下 OK,这样刚刚的设置便被记录下来了接下来就可以准备进行编译的行为啰!原来的 .config 文件會被更名为 .config.old。

无论如何请记得随时查看 Help那个选项来看一看内容,反正Kernel重新编译的几率不大!花一点时间重新编译一次然后将该编译完荿的参数文件储存下来,未来可以直接将该文件拿来读取!所以花一点时间安装一次就好这是相当值得的。

将最复杂的linux内核开发功能选擇完毕后接下来就是进行这些linux内核开发、linux内核开发模块的编译了。编译完成后就需要使用新linux内核开发。如何使用新linux内核开发呢就得偠考虑 grub 了。

可以使用 “ make help” 查询所有可用的编译参数

我们常见的 /boot/ 下的linux内核开发文件,都是压缩过的linux内核开发文件因此,上诉动作中比较瑺用的是 modules 和 bzImage 这两个bzImage可以制作出压缩过的linux内核开发,也就是一般我们拿来进行系统开机的信息

基本上我们会进行的动作是:

## 为啥是 -j 4,因為我的主机有四个CPU核心这几个核心可以同时进行编译行为,这样在编译时会比较快如果CPU核心数有多个,那这里就写成可用CPU数量

编译動作花费的时间依据你选择的选项以及主机硬件的性能而不相同!

在上面的编译过程中,如果有发生任何错误的话很可能是由于linux内核开發项目的选择不够好,可能就需要重新 make menuconfig 再次检查一下你的相关设置如果还是无法成功的话,那么或许要将原本的linux内核开发数据内的 .config 文件複制到linux内核开发源文件目录下然后加以修改,应该就可以顺利编译出linux内核开发

最后,执行完 make bzImage 命令后最终结果应该会像这样:

并且可鉯发现你的linux内核开发已经编译好而且放置于 /usr/src/kernels/linux-3.10.107/arch/x86/boot/bzImage 里面,这就是我们的linux内核开发文件最重要的就是它,我们等一下就会安装这个文件!然后就昰编译模块的部分make modules 进行完毕后,就等着安装了

安装模块前有个地方要特别强调。我们知道模块是放置到 /lib/modules/$(uname -r)/ 目录下那如果同一个版本(洳3.10.107)的模块被反复编译安装,会不会产生冲突呢新版linux内核开发第一次编译不会有这个问题!

重新编译一次,那么这两个版本一模一样时模块放置的目录也一样,此时就会产生冲突了!有两个解决方法:

方法1:先将旧的模块目录更名然后才安装linux内核开发模块到目标目录Φ去;

建议使用方法2,这样模块放置的目录名称就不会相同,这样也就能略过上述的目录同名问题

使用 make 命令安装模块到正确的目标目錄:

最终会在 /lib/modules/ 下建立起你这个linux内核开发的相关模块哦!接下来就是要准备linux内核开发的安装了。这个又与 grub2 有关

开始安装新linux内核开发与多重linux內核开发菜单(grub)

所以,我们可以同时保留旧版的linux内核开发并且新增新版的linux内核开发在我们的主机上面。

此外与 grub1 不一样,grub2 建议我们不偠直接修改配置文件而是通过让系统自动检测来处理grub.cfg 这个配置文件的内容。所以在处理linux内核开发文件时,可能就得要知道linux内核开发文件的命名规则比较好!


移动linux内核开发到 /boot 且保留旧linux内核开发文件

保留旧linux内核开发最大的好处就是可以确保系统能够顺利开机新linux内核开发编譯成功不代表就完全适用于目前的主机,可能有某些选项忘记选择了可能导致新linux内核开发无法顺利驱动整个主机系统,更糟糕的是可能主机无法成功开机

linux内核开发文件通常以 vmlinuz 为开头,后面跟上linux内核开发版本的文件格式

给新linux内核开发文件添加 X 权限


由于SATA磁盘支持的功能并沒有直接编译到linux内核开发去,所以要使用 initramfs 来加载才行!

使用如下方法来建立 initramfs记得要搭配正确的linux内核开发版本!


编辑开机选项(grub)

前面的攵件大致上都摆放妥当之后,同时得根据你的linux内核开发版本来处理文件名

默认较新版本的linux内核开发会放在最前面成为默认的的开机选项,第一个被发现的linux内核开发要为你刚刚编译好的linux内核开发文件才对!


重新以新linux内核开发开机、测试、修改

上述动作都成功后接下来就是偅新开机并选择新linux内核开发来启动系统啦!


额外(单一)linux内核开发模块的编译

我们现在知道linux内核开发所支持的功能当中,有直接编译到linux内核开发内部的有使用外挂模块的。外挂模块可以想象成就是驱动程序linux内核开发模块依据不同的版本,被分别放置到 /lib/modules/$(uname -r)/kernel/ 下硬件的驱动则昰放置于 /lib/modules/$(uname -r)/kernel/drivers/ 下。

如果我想要忘记编译某个驱动程序或者是想要使用新的驱动程序,那该怎么办

如果想要自行使用硬件开发商提供的模块來进行编译时,就需要使用到linux内核开发所提供的源文件当中的所谓的 头文件(header include file)来取得驱动模块所需的一些函数库或头的定义。

也就是說如果想要自行编译linux内核开发模块时,就得要拥有linux内核开发源代码

由于linux内核开发模块的编译其实与linux内核开发原本的源码有点关系,因此如果你需要重新编译模块时除了 make,gcc 等主要编译工具外还需要 kerner-devel 这个软件。

1如果我的默认linux内核开发忘记加入某个功能,而且该功能可鉯编译成为模块不过,默认linux内核开发却没有将该项功能编译成模块使得我们没法使用,这怎么办;

2如果Linux的linux内核开发源码并没有某个硬件的驱动程序(module),但硬件厂商提供给Linux使用的驱动程序源码那我又该如何将该项功能编进linux内核开发模块呢?

反正他们都需要linux内核开发提供的include表头文件与函数库

硬件开发商提供的额外模块

如果硬件厂商有提供驱动程序的话,直接下载源码重新编译,将它放置到linux内核开發模块该放置的地方后就能够使用了!

看一下鸟哥的一个例子:

需要提醒一点当自行编译模块时,若linux内核开发有更新(如利用自动更新嘚线上机制)时则必须要重新编译该模块一次,重复上面的步骤才行!因为这个模块仅针对目前的linux内核开发来编译

利用旧的linux内核开发源码进行编译

重新编译模块的话,先要进入源码目录 执行 make menuconfig,然后将 NTFS(栗子)的选项设定为模块(M)之后执行:

linux内核开发和linux内核开发模塊是分不开的,至于驱动程序模块在编译的时候更与linux内核开发的源码分不开。因此必须先了解到: linux内核开发、linux内核开发模块、驱动程序模块、linux内核开发源码与头文件的相关性,然后才有办法了解到为何编译驱动程序的时候老是需要找到linux内核开发的源码才能够顺利编译!嘫后才会知道为何linux内核开发更新之后,自己之前所编译的模块会失效

此外,与linux内核开发模块有关的还有那个常被使用的 modprobe 命令,以及開机的时候会读取到的模块定义文件 /etc/modprobe.conf 这些资料也必须要了解才行。

linux内核开发就是系统上面的一个文件而已这个文件包含了驱动主机各項硬件的检测程序与驱动模块;

驱动程序开发是属于硬件厂商的问题;

由于系统已经将linux内核开发编译的相当适合一般使用者,因此一般使鼡者基本不需要关系编译linux内核开发;

编译linux内核开发的一般目的:新功能的需求、原linux内核开发太过于臃肿与硬件搭配的稳定性以及其他需求;

编译linux内核开发前,最好先了解主机硬件和主机用途这样才便于选择linux内核开发功能;

编译前若想保持linux内核开发源码的干净,可使用 make mrproper 来清除临时文件等;

我们可以自行有硬件开发商官网下载驱动来自星编译linux内核开发模块;

8复制linux内核开发文件到 /boot/ 下;

下面这种方法无法删除洎行编译的linux内核开发,可以删除升级后多余的linux内核开发:

我要回帖

更多关于 linux内核开发 的文章

 

随机推荐