[Linux] Linux内核编译安装过程,及Linux源码目录结构

从源代码编译和安装Linux kernel 2.6内核,及Linux源码目录结构

环境

主机:MacBook Pro (Retina, 13-inch, Early 2015) 10.14.3

虚拟机软件:VMware fusion 11

虚拟机里安装:Ubuntu 10.04

内核版本:Linux Kernel 2.6.32.1

备注

1、为什么选择 2.6.32.1 版本?

大多数书籍讲的是2.6版本,便于学习。我尝试编译2.6.11版本,遇到一些编译错误不能解决,最后选择和Ubuntu相近的版本。

2、为什么使用Ubuntu 10.04版本?

Ubuntu10.04使用的是3.6.32.38-generic版本,比较接近学习的内核版本,编译环境接近,省去很多配置编译环境的麻烦,我尝试过Ubuntu14.04和Ubuntu18.04来编译,在编译或者安装中遇到一些问题,没能解决。

3、为什么要使用虚拟机?

虚拟机可以快照,遇到无法进入系统时可以快速恢复,记得在很重要的步骤前进行快照,比如更新grub时。

步骤

1、下载Ubuntu历史版本(http://old-releases.ubuntu.com/releases/10.04.0/),选择下载64-bit PC(AMD64)desktop CD,并安装进虚拟机。

2、下载Linux Kernel (https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/),保存并且解压到 Ubuntu 中,我保存在桌面上。

3、配置编译选项

编译前必须先配置编译选项,内核提供了很多功能,可以编译决定哪些功能编译进内核。建议你使用cp命令复制现有的配置文件。

$ cd linux-2.6.32.1
$ cp -v /boot/config-$(uname -r) .config

## 验证和更新配置 ##
$ make oldconfig

4、编译

$ make

或者通过 -j 指定核心数,加快编译速度,我在虚拟机分配了两个核心。

## 使用2个核心 ##
$ make -j 2
## 使用 nproc 命令获取核心数 ##
$ make -j $(nproc)

5、安装内核模块

$ sudo make modules_install

6、安装内核

$ sudo make install

7、更新grub,更新前用虚拟机先快照一下,可能会重启进不了系统。

## 没有这步会导致重启黑屏 ##
$ sudo update-initramfs -c -k 2.6.32.1

$ sudo update-grub

8、重启,重启前可以执行第9步看一下当前内核版本。

# reboot

9、验证内核是否安装成功

$ uname -a

参考:

https://www.cyberciti.biz/tips/compiling-linux-kernel-26.html

http://manpages.ubuntu.com/manpages/cosmic/en/man8/live-update-initramfs.8.html

Linux源码目录结构

目录 描述
arch 特定体系结构的源码
block 块设备I/O层
crypto 加密API
Documentation 内核源码文档
drivers 设备驱动程序
firmware 使用某些驱动程序而需要的设备固件VFS和各种文件系统
include 内核头文件
init 内核引导和初始化
ipc 进程间通信代码
kernel 像调度程序这样的核心子系统
lib 通用内核函数
mm 内存管理子系统和VM
net 网络子系统
samples 示例,示范代码
scripts 编译内核所用的脚本
security Linux安全模块
sound 语音子系统
usr 早期用户空间代码(所谓的initramfs)
tools 在Linux开发中有用的工具
virt 虚拟化基础结构

你可能感兴趣的:(linux/ubuntu,Linux,内核,编译,源码,2.6)