Linux源码研习,项目实战
![d11c8d58d321eab92dd21aaad380270e.png](https://img-blog.csdnimg.cn/img_convert/d11c8d58d321eab92dd21aaad380270e.png)
项目自主实战:自己实现的网卡上面测试c1000k案例。
项目一:Linux内核编译
准备编译工具make, gcc,
$ sudo apt-get install make
$ sudo apt-get installbuild-essential
在www.kernel.org上面,下载对应的Linux内核代码。
先解压tar.xz
$ xz –d linux-4.4.16.tar.xz
$ tar xvf linux-4.4.16.tar
![6c8152b8823ce7f117e927fa1a53cdbf.png](https://img-blog.csdnimg.cn/img_convert/6c8152b8823ce7f117e927fa1a53cdbf.png)
$ cp /boot/config-xxx./.config
![07c8ad2782332189a67fab72490326a0.png](https://img-blog.csdnimg.cn/img_convert/07c8ad2782332189a67fab72490326a0.png)
$ make menuconfig
![cbe2fae0e526cf998e8d05299cc1483a.png](https://img-blog.csdnimg.cn/img_convert/cbe2fae0e526cf998e8d05299cc1483a.png)
选择 save ,直接退出。
保存退出以后,可以开始编译内核。
$ make –j4
注:-j4 代表的是4个线程, 编译过程中cpu与内存参数
![83eb3eb457efb6fbfb9d154f72dacb09.png](https://img-blog.csdnimg.cn/img_convert/83eb3eb457efb6fbfb9d154f72dacb09.png)
$ sudo su
![9bc636571875b5960104d7cdfa66e5b0.png](https://img-blog.csdnimg.cn/img_convert/9bc636571875b5960104d7cdfa66e5b0.png)
# make modules_install
![99840f6c7ed8789ae741f93e1ac26ebf.png](https://img-blog.csdnimg.cn/img_convert/99840f6c7ed8789ae741f93e1ac26ebf.png)
![ddb30bd5b4fbe6934d6b02940daf7eae.png](https://img-blog.csdnimg.cn/img_convert/ddb30bd5b4fbe6934d6b02940daf7eae.png)
# make bzImage
![454c66016c61730a9876990a68e0f2c3.png](https://img-blog.csdnimg.cn/img_convert/454c66016c61730a9876990a68e0f2c3.png)
安装新编译的内核
$ cp arch/x86/boot/bzImage/boot/vmlinuz-4.4.16
$ cp .config/boot/config-4.4.16
$ cd /lib/modules/4.4.16/
$ update-initramfs –c –k4.4.16
$ update-grub
错误解决方案:
![571e0b22616d93a8cea9ea7a0e3a3d4a.png](https://img-blog.csdnimg.cn/img_convert/571e0b22616d93a8cea9ea7a0e3a3d4a.png)
安装ncurses字符终端处理库, 不然在make menuconfig的时候,会提示报错。
$ sudo apt-get install libncurses5-dev libncursesw5-dev
![e3e0ebe78dd9e08100f5b1fa983358e3.png](https://img-blog.csdnimg.cn/img_convert/e3e0ebe78dd9e08100f5b1fa983358e3.png)
安装ssl开发库
$ sudo apt-getinstall libssl-dev