当前位置:首页 » 编程软件 » linux内核编译重新编译

linux内核编译重新编译

发布时间: 2022-03-12 12:46:50

‘壹’ 如何重新编译linux内核

  1. 因为一般电脑安装的系统都是Windows,而整个编译过程都需要在Linux环境下实现,所以最好是在虚拟机里安装Linux系统来完成这一过程。我使用的虚拟机是VMware-workstation-full-v7.1.4。

  2. 然后,我们需要下载一个较高版本的Linux系统的镜像文件,安装在虚拟机上,作为编译环境。我使用的是ubuntu-11.04-desktop-i386。之所以选择较高版本,是因为它的界面比较方便用户操作。

  3. 然后下载一个Linux内核源代码文件,将它保存到虚拟机上新安装的系统中去。并解压到/usr/src目录。我使用的是linux-2.6.36,下载低版本的原因是,小巧轻便,易于编译。

    解压命令如下:

    bzip2 -d linux-2.6.36.tar.bz2

    tar -xvf linux-2.6.36.ta

  4. 修改/usr/src/linux-2.6.36/kernel/sys.c文件,在文件末尾增加一个系统调用函数。自行编写一个简单的程序即可,只为测试用。

  5. 修改/usr/src/linux-2.6.36/arch/x86/kernel/syscall_table_32.S,为新添加的程序配置系统调用号。

  6. 在/usr/src/linux-2.6.36/arch/x86/include/asm/unistd_32.h中配置系统调用表。

  7. 下面就是最重要的内核编译与安装:

    首先配置编译信息,使其生成适合当前机器的Makefile,输入make oldconf ig。

    接着还要输入make menuconfig,在字符界面下进行必要的细微的修改。

    然后要经过四步编译过程(直接输入命令即可):

    (1)make bzImage

    将内核编译为压缩映像,存储源码根目录下的“System.map”文件中。

    (2)make moles

    编译各个模块。

    (3)sudo make moles_install

    安装模块

    (4)sudo make install

    安装内核

    第(2)(3)步等待时间较长,可能需要数个小时,请耐心等待。

    无报错的话重启进入GRUB界面,就可以看到新编译的内核了。

  8. 按回车键进入我们编译的目标内核中,用关键词搜索查看新增加的系统调用“my call”是否已在内核中:

  9. 编写测试程序,调用新添加的系统调用:

  10. 测试成功,说明系统调用添加成功,进而说明内核编译成功!

    以上的办法你可以试一下,希望对你有所帮助。

‘贰’ Linux内核重新编译安装后,分区会不会改变

不会, 内核跟系统是2个概念, 编译安装内核不是重装系统 所以不会对分区造成任何影响

内核编译好只是一个内核文件和相应的内核驱动, 内核文件放在 /boot下面用以启动系统, 内核驱动一般放在 /lib/kernel 下面

‘叁’ 如何重新编译修改后的Linux内核源代码

Perl code?

make menuconfig
make all
make install
make moles_install
make firmware_install

‘肆’ 重新编译Linux内核

不放以前的系统里放什么地方?另一台计算机里?之后你这个机器启动时自己跑到那台计算机上要数据启动完后,在自己跑回来?
initrd 是内核启动的一个虚拟的磁盘。作用是在 Linux 内核启动时,不直接进入硬盘上的 root 分区,而是进入内存里面的虚拟的 root 分区。
这个用意是当内核不能直接读取硬盘时(比如用了内核没有自带的驱动的硬盘、分区。或者 root 分区在网络上)。那么就可以用 initrd 里面的驱动来过渡进入正确的 root ,或者干脆就停在 initrd 模拟的内存盘里面。

PS:我编译内核都是 make xconfig ; make ; make moles_install ; make install
前3个不解释,最好一个其实就是吧编译好的内核复制到 /boot 里面。并且根据这个目录里面的某些特点。进行一些操作。

‘伍’ 关于重新编译Linux内核的问题

问题1,下载最新内核只需要有网络,能上网就行。你在哪个系统下载都可以。但是编译需要在Linux里面编译,这样方便。

问题2,编译的过程很简单,配置,然后就是make,再然后就是安装。
但是,我想说的是,计算机的各种外网设备的驱动也是需要配置安装的。更换内核后所有其他的东西都需要相应的更新。工程量浩大。

‘陆’ linux 重新编译kernel后不能正常启动

从提示信息看,你的Linux系统使用LVM(逻辑卷管理),所以你编译内核应该将lvm编译进去,否则就找不到文件系统了。

‘柒’ 什么情况下Linux内核不重新编译

只要你代码或配置有改动,都要重新编译的,只是如果代码写成块模式的,不用整个代码都重新编译,
编译器
会自动编译改动了的代码。

‘捌’ 怎么重新编译linux服务器内核

make
config首先配置内核,生成内核配置文件,如果是服务器上的,建议使用编辑好的内核配置文件,自己在服务器上配置比较麻烦;
make再根据生成的配置文件进行编译;
找到新的内核就可以使用

‘玖’ linux为什么要重新编译内核

.config 是配置编译内核的最初步骤,你要编译驱动程序,就必须要了解这个,多上网查下资料 然后重新编译 Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。 新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译Linux内核。 通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。 为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑: (1)自己定制编译的内核运行更快(具有更少的代码) (2)系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中) (3)不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 (4) 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 编译内核时三个重要文件

‘拾’ linux只想部分修改内核应该怎么办,是不是要重新编译

如果只是修改内核的模块内容,则可以不需要重新编译,因为即使重新编译非模块部分还是原来的一样。只需要改完后make moles 在make moles_install。这个过程中make moles会重新编译内核的模块,install则会把模块放到/lib/moles/内核名 的文件夹里去,并且接下来运行depmod,重新生虫*.dep文件,系统靠这个文件加载模块。如果修改的是非模块部分的话,那么就一定要重新编译了。

热点内容
pythonsae 发布:2025-05-10 21:59:30 浏览:964
rdp算法 发布:2025-05-10 21:46:40 浏览:917
c语言求素数的方法 发布:2025-05-10 21:46:39 浏览:764
战地5配置最低怎么设置 发布:2025-05-10 21:44:12 浏览:674
microsoftsql2012 发布:2025-05-10 21:43:33 浏览:428
电脑买个游戏服务器 发布:2025-05-10 21:25:15 浏览:241
机柜存储空间 发布:2025-05-10 21:25:07 浏览:267
安卓手机如何修改首屏 发布:2025-05-10 21:17:59 浏览:959
缓存关联替换 发布:2025-05-10 20:56:34 浏览:618
开源项目源码 发布:2025-05-10 20:56:24 浏览:36