`
- 浏览:
96843 次
- 性别:
- 来自:
杭州
-
- 编译内核:
- 在编译内核之前,必须配置它;
- 配置的选项以CONFIG_FEATURE形式表示,如对称多处理器(SMP)的配置选项为:CONFIG_SMP=y/n;y表示启用,n表示不起作用;
- make config:该工具会挨个遍历所有配置项,要求用户选择yes,no或是module;
- make menuconfig:基于X11的图形工具;
- make xconfig:基于gtk+图形工具;
- make gconfig:
- make defconfig:创建一个默认配置;
- 配置文件存放在代码树根目录的.config文件中,可以直接修改或用它来配置新的代码树,此时需要验证和更新配置:make oldconfig;
- 配置好后,就可以用make命令来编译它了;
- 编译时,会在内核代码树的根目录下创建一个System.map文件;这是一份符号对照表,用以将内核符号和它们的起始地址对应起来。调试的时候,如果把内存地址翻译成容易理解的函数名以及变量名会很有用;
- 安装内核:
- 如何安装和体系结构以及启动引导工具有关;如在使用grub的x86的系统上,把arch/i386/boot/bzImage拷贝到/boot目录下,使用vmlinuz-version来命令它,并编译/boot/grub/grub.cfg文件(ubuntu 10.04),为新内核建立一个新的启动项;
- 内核开发的特点:
- 内核编程时不能访问C库:主要原因是速度和大小的问题;不过,大部分常用的C库函数在内核中都已经得到了实现;如操作字符串的函数组就位于lib/string.c文件中,只要包含<linux/string.h>头文件,就可以使用它们;
- 内核编程时必须使用GNU C:内核开发者总是要用到gcc提供的许多语言扩展部分(gcc是多种GNU编译器的集合,它包含了的C编译器即可以编译内核,也可以编译Linux系统上用C写的其他代码);最让人感兴趣的C语言扩展是:
- 内联函数:GNU的C编译器支持内联函数;在内核中,为了类型安全的原因,优先使用内联函数而不是宏;
- 内联汇编:gcc编译器支持在C函数中嵌入汇编语句;
- 分支声明:对于条件选择语句,gcc内建了一条指令用于优化;在一个条件经常出现或只有很少才会出现时,编译器可以根据这条指令对分支条件进行优化;内核把这条指令封装成宏:如likely()和unlikely();
- 没有内存保护机制:在内核中,不应该去做内存非法的地址访问,引用空指针等,否则内核会死掉;另外,内核中内存都不分页;
- 不要轻易在内核中使用浮点数:
- 容积小而固定的栈;
- 考虑同步和并发;
- Linux是抢占多任务操作系统:内核的进程调度程序对进程进行调度,内核必须对这些任务同步;
- Linux内核支持多处理器系统:多个处理器运行的代码很可能会同时访问共享的同一个资源;
- 中断是异常的,因此中断处理程序有可能访问同一资源;
- Linux内核可以被抢占,因此几段代码可能同时访问相同的资源;
- 可移植性的重要性;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
kernel-lt-doc-4.4.213-1.el7.elrepo.noarch.rpm kernel-lt-headers-4.4.213-1.el7.elrepo.x86_64.rpm kernel-lt-tools-libs-devel-4.4.213-1.el7.elrepo.x86_64.rpm kernel-lt-tools-libs-4.4.213-1.el7.elrepo.x86...
kernel-3.10.0-327.el7.x86_64.rpm kernel-debug-3.10.0-327.el7.x86_64.rpm kernel-debug-devel-3.10.0-327.el7.x86_64.rpm kernel-devel-3.10.0-327.el7.x86_64.rpm kernel-headers-3.10.0-327.el7.x86_64.rpm ...
kernel-ml-doc-5.5.5-1.el7.elrepo.noarch.rpm kernel-ml-headers-5.5.5-1.el7.elrepo.x86_64.rpm kernel-ml-tools-libs-devel-5.5.5-1.el7.elrepo.x86_64.rpm kernel-ml-tools-libs-5.5.5-1.el7.elrepo.x86_64.rpm ...
kernel-ml-doc-5.11.2-1.el7.elrepo.noarch.rpm kernel-ml-headers-5.11.2-1.el7.elrepo.x86_64.rpm kernel-ml-tools-libs-devel-5.11.2-1.el7.elrepo.x86_64.rpm kernel-ml-tools-libs-5.11.2-1.el7.elrepo.x86_64....
3&limit=1&srodzaj=3&dl=40&search=kernel-devel 上面分享下载地址自己找也行,分享这个不是为了赚积分。 1、升级方式rpm安装 rpm -ivh kernel-3.18.21-16.el6.x86_64.rpm --nodeps kernel-devel-3.18.21-16.el6.x86...
内含: kernel-ml-aufs-devel-3.10.5-3.el6.x86_64.rpm kernel-ml-aufs-3.10.5-3.el6.x86_64.rpm
redhat7.2中的kernel-devel-3.10.0-327.el7.x86_64.rpm&&kernel;-headers-3.10.0-327.4.5.el7.x86_64.rpm直接yum安装,以便安装NVIDIA驱动
kernel-lt-4.4.190-1.el7.elrepo.x86_64.rpm kernel-lt-devel-4.4.190-1.el7.elrepo.x86_64.rpm kernel-lt-headers-4.4.190-1.el7.elrepo.x86_64.rp kernel-lt-doc-4.4.190-1.el7.elrepo.noarch.rpm kernel-lt-tools...
kernel-ml-aufs-3.10.5-3.el6.x86_64.rpm kernel-ml-aufs-devel-3.10.5-3.el6.x86_64.rpm
在centos8上可以使用的版本,可以通过rpm命令安装,解决部分依赖内核版本...rpm -ivh kernel-devel-4.18.0-193.el8.x86_64.rpm 如果安装失败,可以先卸载本地的高版本,再来安装此版本: yum remove -y kernel-devel.
首先,执行 yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r);若执行得不到对应版本uname -r原代码文件,去官网...
文件内包含:kernel-ml-4.19.12-1.el7.elrepo.x86_64.rpm kernel-ml-devel-4.19....共两个文件,文件可以从 http://193.49.22.109/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-4.19.12-1.el7.elrepo.x86_64.rpm、...
kernel-devel-3.10.0-1160.el7.x86_64.rpm centos7的对应内核开发工具,装显卡驱动会用到
Kernel-Pandora-GKI-Beta10.zip
centos7.7 kernel-headers-3.10.0-1062.el7.x86_64包
axis2-kernel-1.3.jar axis2-kernel-1.3.jar
centos7.7 对应的kernel-3.10.0-1062.el7.x86_64.rpm 内核 ---------------------------------------
-rw-r--r-- 1 50609176 Dec 28 07:14 kernel-3.10.0-957.27.2.el7.x86_64.rpm -rw-r--r-- 1 17602244 Dec 28 07:13 kernel-devel-3.10.0-957.27.2.el7.x86_64.rpm -rw-r--r-- 1 8417516 Dec 28 07:14 kernel-headers...
kernel-headers-3.10.0-957.el7.x86_64.rpm kernel-devel-3.10.0-957