linux内核用什么调试,什么是开发/调试Linux内核最有效和最优雅的方式
发布日期:2021-06-24 12:27:23 浏览次数:2 分类:技术文章

本文共 1858 字,大约阅读时间需要 6 分钟。

以下是有关如何构建和运行自定义内核的说明.

获取来源

Linus Torvalds的树是[1].

它在[2]上被标记为“主线”.

要克隆它,请使用[1]中的信息:

$git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

现在转到linux / dir并在master分支上结帐(我们需要使用最新的

改变作为发展的起点):

$cd linux

$git checkout master

在实际开发之前不要忘记更新您的分支:

$git pull --rebase

建造

我的机器上的内核版本:

$uname -r

3.16.0-4-amd64

要从我的机器上运行的系统获取配置:

$cp /boot/config-`uname -r` ./.config

要更新我的配置(使用默认答案),我使用了下一个命令:

$make olddefconfig

要禁用(不构建)当前系统中未加载的模块:

$make localmodconfig

要使用默认答案回答所有问题,我只需单击Enter直到完成

(实际上只有两次).

接下来我做了:

$make menuconfig

并选择了下一个配置选项:

CONFIG_LOCALVERSION_AUTO=y

CONFIG_LOCALVERSION="-joe"

设置ccache和构建环境:

$ccache -C

$ccache -M 4G

$export CC="ccache gcc"

构建内核(使用ccache):

$reset

$make -j4

$make -j4 modules

构建的内核映像是:

arch/x86_64/boot/bzImage

安装

为内核安装模块:

$sudo make modules_install

安装新内核:

$sudo make install

已安装的模块位于/ lib / modules / * – joe / kernel /.

安装的内核文件位于/ boot / * joe *:

- config-*joe*

- initrd.img-*joe*

- System.map-*joe*

- vmlinuz-*joe*

update-grub作为make install脚本的一部分运行,因此无需运行它

手动.

注意:modules_install必须在安装之前运行,因为使用模块填充initramfs映像需要安装规则.

检查/boot/initrd.img-*joe*文件的大小:它必须是> = 15 MiB

(如果它更小,很可能模块不在那里).

启动自定义内核

通常你的自定义内核应该比你的发行版内核更大,

所以默认情况下应该运行自定义内核.如果不是,请进一步阅读.

重启,转到GRUB,选择下一个条目:

-> Advanced options for Debian GNU/Linux

-> Debian GNU/Linux, with Linux 4.0.0-rc7-joe-00061-g3259b12

默认情况下使您的发行版内核加载

由于视频可能无法在您的自定义内核中运行(视频驱动程序必须是

为此重建),您可能希望GRUB默认加载make distro内核.

为此,只需编辑/ etc / default / grub文件:

$sudo vim /etc/default/grub

并改变线

GRUB_DEFAULT=0

GRUB_DEFAULT="1>3"

其中“1> 3”表示:

– 转到GRUB的第二行,输入

– 并使用第4行启动.

这次运行之后:

$sudo update-grub

注意:不要编辑/boot/grub/grub.cfg文件,因为它是自动生成的,并且会

每次update-grub命令后都要替换.

删除自定义内核

如果您不再需要自定义内核,则可能需要将其删除.

要删除已安装的内核,请执行下一步

>删除安装到/ boot的所有文件:

$sudo rm -f *joe*

>删除所有安装的模块:

$sudo rm -rf /lib/modules/*joe*

>更新GRUB:

$sudo update-grub

清理内置的内核

如果您不需要进行增量构建,而是希望进行干净构建

(例如,您将结帐到另一个版本),您可能想要清理您的内置版本

文件首先:

$make -j4 distclean

链接

转载地址:https://blog.csdn.net/weixin_32697149/article/details/116636658 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux实现时间服务器视频,linux实现时间同步有哪几种方法
下一篇:linux一个网卡绑定多个端口,RedHat实现多网卡绑定

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月09日 11时43分18秒