导航:首页 > 操作系统 > linux怎么编译内核

linux怎么编译内核

发布时间:2025-01-10 12:07:14

㈠ 谈一谈关于linux内核编译详解原理

前言:启动盘制作旨在解决内核编译可能导致的系统崩溃问题。内核编译不当时,系统可能无法正常启动,表现为左上角闪烁的标识。启动盘能从外部设备引导系统启动,从而进行系统恢复。

1. 编译前准备:需要一个大于8G的USB启动盘,格式化为ext3、ext4或VFAT。下载一个镜像文件,假设为ubuntu-16.04-64.iso。准备一台装有Linux系统的主机,最好装有Centos或Ubuntu,并具有root权限。

2. 安装引导程序:根据自己的U盘分区(通过lsblk -l查看),为ubuntu-16.04-64.iso和USB存储设备创建挂载点。

3. 创建临时挂载点:为镜像和U盘创建挂载点。

4. 挂载ubuntu-16.04-64.iso:使用-loop选项,使镜像像设备块一样工作,此时挂载点可以看成插入了U盘,其中包含待烧录的系统。

5. 挂载USB存储设备:将USB挂载到指定路径。

6. 复制isolinux文件到U盘:从镜像中复制isolinux文件到U盘。

7. 复制isolinux.cfg:复制镜像中的isolinux.cfg到U盘。

8. 卸载镜像和U盘挂载点:完成复制后,卸载镜像和挂载点。

9. 重启系统,插入USB启动盘,尝试从U盘启动系统。

10. 下载、配置并构建内核:下载内核,检查U盘空间,安装编译所需软件,解压内核包,配置内核,编译内核。

11. 安装内核:安装驱动程序,执行安装命令,复制内核到/boot目录,初始化RAM盘,复制System.map,创建符号链接,重启系统。

12. 测试和调试内核:使用Netconsole配置调试用控制台,更改启动时内核选项,更新grub,初始化Netconsole模块,配置Netconsole选项,设置接受方设置,监控内核崩溃信息。

㈡ 如何编译Linux内核

一、编译环境

ubuntu 5.10,要编译的内核源码版本2.6.12 二、下载并解压源代码 首先从linux内核的官网www.kernel.org把源代码下载下来。为了和后面实验要求符合,我们要下载使用O(1)调度器的源码。因此这里下载了2.6.12版本源码。下载 下linux-2.6.12.tar.bz2,将下载源码放入/usr/src/目录下。如下图所示: 解压该源码: 三、构建编译环境 现在我们得到的只是源代码,只是许许多多的文本文件,要想使这些文件成为可以运行的程序,需要使用编译器进行编译以及链接。编译器有很多,但在里linux下一般都使用gnu的开源编译器套件,这里包括gcc等,现在我们安装基本的编译器套件,如图所示: 四、安装ncurses库 这里使用Ubuntu系统,因为系统自带的ncurses库在支持make menuconfig的时候会出错,所以,依然要安装ncurses库,这里我们从源码安装。首先去ncurses官网http://ftp.gnu.org/pub/gnu/ncurses/ 上下载源码。这里我们下载5.9版本,并通过简单的安装方式.configure 和make、make install方式安装。如下图所示: 五、配置内核 一切准备工作做完,现在我们就可以配置内核了,这里我们使用make menuconfig方式。如下图: 在使用make menuconfig这个命令后,会出现如下的字符界面,我们就可以在这个界面上对内核进行配置。但是如果这不是你第一次配置这个内核,那么请先运行:make mrproper来清除以前的配置,回到默认配置,然后再运行:make menuconfig.
在这里,我们以对cpu支持的配置为例,其余的选项就不一一详述,首先查看本机的cpu类型,如下图:

在这里我们可以看到,我的电脑的cpu是AMD Athlon的,因此我们在cpu选项里面选用AMD,如下图所示:

在这里需要注意的是:
A、 cpu的设置在linux内核编译过程中,不是必需的,即使保持默认的386选项(我们刚才把它改成了AMD),内核也能正常运行,只不过运行慢一些而已。
B、 一般容易出问题的地方在于Device Driver的设置。我在一开始就遇到了在内核编译完,通过grub引导系统过程中报 “ALERT! /dev/sda1 does not exist . Dropping to a shell!”的错误。这是因为硬盘驱动没有配置好而造成的。运行lspci命令,查看到下面这行:

由此确定,需要配置SCSI、PCI-X、Fusion-MPT驱动,需要在响应的驱动选项里将[M]设置为[*],因为硬盘驱动是在系统开机的时候加载,所以不能以模块形式加载。

把这几个驱动内部的选项全部改为[*]:

六、编译内核

对内核的配置完成之后,现在就可以开始编译内核了,只需要一个简单的make命令即可,之后我们就只能慢慢等,直到编译完成,在我的电脑上,大概用了25分钟。下图是运行make后的部分输出。

七、安装内核
编译完成之后,我们需要安装内核,主要分为如下几步:
1)、安装模块

安装模块,对于内核来说,每一个内核版本有自己的模块目录,默认在/lib/moles/内核版本号这个目录下,make moles_install会创建对应的目录,并把对应的模块文件拷贝过去。注意,这一步必须要在编译过内核再做。

2)、拷贝bzImage文件

bzImage文件是内核映像文件,是启动内核所必需的,我们应当把它拷贝到/boot目录下。在这里,我为自己新建了一个目录,我们把它拷贝过去,并且按照一般内核映像文件的命名方式为它改名为vmlinuz-2.6.12。

3)、制作initrd文件
initrd文件命名为initrd.img-2.6.12

4)、修改grub启动项
要能引导起我们的新系统,需要更改grub配置,增加启动选项。ubuntu 5.10的grub版本比较低,配置文件为/boot/grub/menu.lst,高版本的grub可能在/boot/grub/grub.cfg里。在原有启动项基础上,添加我们自己的启动项,并把它设为默认启动项,配置如下:

5)重启
不出意外的话,我们的内核已经正常加载了,运行uname -a,会发现,内核版本已经是2.6.12了。

阅读全文

与linux怎么编译内核相关的资料

热点内容
编译后的函数和原始函数如何对应 浏览:620
阐述邮件加密解密过程 浏览:400
敲沙子声控解压 浏览:53
计算机教室用什么服务器 浏览:800
华为畅享9怎么设置短信加密 浏览:285
中国现代编译器 浏览:850
如何得到app专栏 浏览:453
魔兽世界日本服务器什么职业多 浏览:729
表格加密怎么设置只读模式打开 浏览:883
哪个app可以不用花呗分期 浏览:860
SSL是对称加密吗 浏览:46
捷途app钥匙怎么用 浏览:960
享省油app怎么在加油站使用 浏览:250
crc算法的实现c语言 浏览:187
风光摄影pdf 浏览:938
头部按摩器可以缓解压力吗 浏览:652
格式工厂压缩图片大小 浏览:892
程序员的黑科技视频 浏览:297
加密字段表格显示 浏览:404
pdf打印缺字 浏览:517