linux内核用什么调试,什么是开发/调试Linux内核最有效和最优雅的方式
以下是有关如何构建和运行自定义内核的说明.
获取来源
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
链接
linux内核用什么调试,什么是开发/调试Linux内核最有效和最优雅的方式相关推荐
- Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核)
Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4.1.15版本内核) 文章目录 Linux移植:正点原子阿尔法IMX6ULL开发板Linux内核源码移植详细步骤(4 ...
- linux实时信号的优势,c/c++开发分享Linux和实时信号
我正在尝试编写在Linux中使用实时信号的简单程序. 但我遇到了奇怪的行为,首先是代码: #include #include #include #include #include"errha ...
- linux如何调试elf程序,开发一个Linux调试器就需要了解ELF和DWARF
到目前为止,可能你已经听到了关于调试信息或者关于除了解析代码以外的理解源代码的方法的DWARF的只言片语.今天,我们将介绍源代码级的调试信息的细节,以备在该系列的余下部分使用它. ELF和DWARF简 ...
- Linux包含一个名称是()的调试程序,开发一个 Linux 调试器(九):处理变量
变量是偷偷摸摸的.有时,它们会很高兴地呆在寄存器中,但是一转头就会跑到堆栈中.为了优化,编译器可能会完全将它们从窗口中抛出.无论变量在内存中的如何移动,我们都需要一些方法在调试器中跟踪和操作它们.这篇 ...
- a33 linux 硬解码_全志A33 lichee 开发板 Linux中断编程原理说明
开发平台 * 芯灵思SinlinxA33开发板 嵌入式linux 开发板交流 641395230 本节实验目标实现按键触发中断终端显示按键松开或按下 实验平台 芯灵思Sinlinx A33 开发板 s ...
- linux系统最好的c类语言开发软件,Linux下基于C 语言开发即时通信软件.doc
Linux下基于C 语言开发即时通信软件 Linux下基于C++语言开发即时通信软件 关键词:聊天软件 文字聊天 Linux平台 C/S架构ICE中间件 Linux-based instant mes ...
- vscode android调试,使用VsCode开发调试React Native笔记
Prerequisites: Android SDK Emulator/adb等环境先准备好 Steps: 启动simulator C:\AndroidSDK\Android\sdk\tools> ...
- linux 串口 loopback,友善NanoPC T2 4418开发板Linux下串口回环测试 -申嵌
注意事项:friendlycore系统下 UART3 对应的设备文件名是 /dev/ttyAMA3 实验目的:实现串口回环测试,即:自己给自己发数据,然后自己接收到自己发送的内容. 实验内容: 1. ...
- T2080 U-BOOT与OS内核移植 准备篇(一)——开发调试环境简介
T2080 U-BOOT与OS内核移植 准备篇(一)--开发调试环境简介 1.本项目选择的工具 2.几个常用工具简介 2.1 Trace32 2.2 Code Warrior 2.3 QorIQ Li ...
最新文章
- yii2快速導出phpexcel
- 进程通信学习笔记(记录上锁)
- 【LeetCode】004 Median of Two Sorted Arrays 两个排序数组合并后的中位数
- java卸载_java快速入门篇之windows-MySQL-5.6安装与卸载
- 安卓逆向_13 --- AndroidStudio + Smalidea 动态调试 smali 代码【APK可调试】、gradle 配置
- 中英文对照 —— 游戏
- FD.io VPP:CentOS7下构建自己的VPP RPM包
- 亿图图示edraw max mac版
- Chrome一直在更新的几个广告拦截插件
- GitHub 爬虫项目
- Matlab图像分割(U-Net)
- 深度神经网络之Keras(三)——正则化、超参数调优和学习方向
- EF Core codefirst数据迁移操作
- tomcat介绍和TCP传输文件的实现
- 【网络互联技术】(三) 网络互联基础。
- Java如何使用new来创建对象
- AAC音频格式分析与解码
- docker运行centos镜像 安装python3.9环境
- 《Occlusion Aware Facial Expression RecognitionUsing CNN With Attention Mechanism》论文阅读(2019TIP)
- 牛客第三场 F	 Popping Balloons —— 思维 + 搞题
热门文章
- vSphere可用性之三准备实验环境
- 黄聪:C# MP3操作类,能播放指定的mp3文件,或播放嵌入的资源中的Mp3文件
- 局域网共享的解决方法
- 如何给上传控件上色【HOW TO SET CSS FOR THE CONTROL OF FILEUPLOAD】
- 一位海外华人的质问:谁在误导中国人艳羡美国?
- 小程序无限层级路由方案
- mybatis脱离项目逆向生成映射文件
- 技术工坊|解密区块链DApp的代码逻辑,从请求到数据存储都要经历什么?(上海)...
- mac环境下myeclipse上配置tomcat
- MySqli 连接失败 MySQL connection not working: 2002 No such file or directory