[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编译内核所用的脚本
securityLinux安全模块
sound语音子系统
usr早期用户空间代码(所谓的initramfs)
tools在Linux开发中有用的工具
virt虚拟化基础结构
要在Linux虚拟机上为PXA270处理器下载编译适当的u-boot(统一 Bootloader),您需要按照以下步骤操作: 1. **获取最新源码**: - 首先,访问u-boot项目官方GitHub页面 (https://github.com/u-boot/u-boot) 或者其维护的Git仓库。 - 搜索PXA270相关的分支或tag,通常它会有针对该平台的特定分支。 2. **克隆u-boot仓库**: ``` git clone https://github.com/u-boot/u-boot.git ``` 3. **切换到目标分支或tag**: ``` cd u-boot git checkout -b pxa270-support branch_name_or_tag ``` 替换`branch_name_or_tag`为对应的PXA270支持分支。 4. **配置编译选项**: 进入`conf`目录,编辑`config.mk`文件,确保已启用对PXA270的支持,并设置其他必要的编译选项。 5. **准备交叉编译环境**: 如果您的系统上没有预置适合PXA270的交叉编译工具链,可能需要安装。例如,对于ARM工具链,可以参考Arm官方文档安装。 6. **构建u-boot**: ``` make CROSS_COMPILE=arm-none-linux-gnueabi- BOARD=pxa27x_defconfig ``` 这行命令会生成配置好的Makefile,然后开始编译。 7. **编译和校验**: ``` make all make img ``` 完成编译后,可能会有一个`.bin`或`.img`文件作为u-boot固件。 8. **裁剪和定制**: 如果需要进一步定制,可以根据实际需求裁剪掉不必要的模块或者添加自定义功能。查看`Documentation/process`目录下的文档,了解如何裁剪。 9. **验证u-boot**: 最好在板载硬件上运行bootloader来验证,如果条件允许,也可以使用模拟器或QEMU等工具测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值