编译出你的第一个内核
来源:互联网 发布:seo入门教程 编辑:程序博客网 时间:2024/04/30 14:09
第一次总是让人激动的,但是也常常伴随着恐惧和害怕。我相信有不少小白希
望学习内核,但是常常连第一步都没有开始,就直接栽倒在了出发的地方。
这篇文章献给那些向往成为内核大牛的小白们,希望我能帮你们破除进入内核世界的第一道障碍。
准备环境
编译内核之前有一些基本的条件
- 有一台可以联网的机器(或者虚拟机)
- 安装了linux系统
- 怎么着也得会一点基本的命令操作
除此之外对linux系统还要求一些软件包的安装(可能不全,在编译过程中遇到提示可以使用google搜索是缺了哪个包)
- git 一个软件版本管理工具,我们用它来获得内核源码
- gcc 编译器
- make 编译工具
- libncurse-dev 一个图形库
- openssl-dev 加密库
嗯,差不多了,开始动手吧。
获取内核
感谢Linus,感谢git,自从有了git,获取内核代码变得异常的方便,而且时刻都可以是最新的。
在终端输入以下命令即可:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
没有安装git软件的请重复上一个步骤
基本配置
和大部分开源软件类似,linux kernel也是要配置之后才能够编译的。配置方法有好几种,我比较偏爱的是 make menuconfig。
cd linuxmake menuconfig
执行完,你可以看到如下的配置界面。
知道为啥我喜欢用这个了吧,因为这有个图形界面。虽然有好多看不懂,但是毕竟有些你是能猜出个大概意思的。
这次只是用来编译第一个内核,所以不需要什么配置,直接按右箭头,走到Exit退出保存即可。
可能会遇到的问题
在执行make menuconfig的时候,可能会遇到一些提示说某些包没有安装导致执行失败。大家不要慌,究其原因是因为配置的过程实际上是内核先编译了一个用户态的配置工具,这个过程就需要依赖的软件包有: make, gcc, ld 和图形库libncurse-dev。不用紧张,按照提示,缺什么软件就安装什么软件就好了。
开始编译
配置完了之后就可以编译了。
很简单,运行如下命令
make -j8
如果编译成功,你就会看到目录下有一个文件叫vmlinux。
恭喜~
安装内核
也是so easy
make modules_installmake install
注意: 这两步需要有管理员权限。
另外需要注意的是,安装后有些版本可能要调整引导程序的配置。比如在ubuntu上,配置文件在/etc/default/grub, /boot/grub/grub.cfg。否则有时候下一次重启还是使用旧的内核。
重启机器
执行如下命令
reboot
好了,等下次机器起来,那就是一个崭新的世界了。
- 编译出你的第一个内核
- 编译你的第一个程序
- 0.6编译你的第一个程序
- 内核编译第一个错误
- Ubuntu下编译的第一个内核模块
- 编译Ubuntu10.04的第一个内核模块
- 编写属于你的第一个Linux内核模块
- 编写属于你的第一个Linux内核模块
- 编写属于你的第一个Linux内核模块
- 编译你的第一个Sac程序——HelloWorld!
- ubuntu下编译第一个内核模块
- 编译第一个内核模块helloworld
- 第一个内核模块程序编译
- 内核模块学习--编译自己的第一个内核模块hello_module
- 码出你的第一个Django app——Django官方教程(一)
- 黑客内核:编写属于你的第一个Linux内核模块
- ubuntu 编译内核时出的错误
- 编译内核出的一些问题
- 文件系统
- 从Ibatis过度到Mybatis---比较Mybaits较与Ibatis有哪些方面的改进
- 371. Sum of Two Integers
- Git 代码版本管理的基本使用命令和步骤
- Codeforces Gym 100342D Problem D. Dinner Problem Dp+高精度
- 编译出你的第一个内核
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志——转载
- vim列模式
- mac 安装docker (kinematic)
- 【JSP 标签】格式化日期
- 数据结构 (计算机存储、组织数据方式)
- <table>标签,制作表格
- in 和 inner join 的区别 join using 和join on 的区别
- Servlet