ubuntu 编译内核

转载 2012年03月31日 15:21:53

第一步 安装必要的工具

首先要安装必要的包。 
包有: libncurses5-dev ( menuconfig 需要的)和 essential 
sudo apt-get install build-essential kernel-package(内核打包deb的可以不用装手动安装) 
sudo apt-get install make
sudo apt-get install gcc
另外,查看系统是否有这样的两个命令 
mkinitramfs mkisofs
这两个工具在编译内核时用来生成 *.img 文件的。如果没有就需安装。

第二步 下载内核

到 www.kernel.org 下载新内核到 /usr/src 
我下载的是 linux-2.6.30.tar.gz

解压 linux-2.6.30.tar.gz 到 linux-2.6.30
cd /usr/src

sudo tar zxvf linux-2.6.30.tar

cd linux-2.6.30/


第四步 开始编译

以下所有的工作都在 /usr/src/linux-2.6.30 下完成 
sudo make menuconfig // 用 menuconfig 的话还需要 Ncurses ,或者用 
sudo make xconfig

 

sudo make menuconfig // 一般是用 menuconfig

配置完以后保存(系统中保存的一份内核配置文件是在 /usr/src/linux-2.6.30 下名为 .config, 你也可以自己在别的地方另存一份)

不会配置,就选用默认配置可能也能用(就是make menuconfig 后直接退出) 
sudo make dep     // 也许系统会提示现在不必要进行 make dep ,那就下一步 2.6.30 的我编译就没有使用过。 
sudo make clean // 清除旧数据 ,新解压的内核源码就不需要这一步了

sudo make –j4    // -jn 参数指要衍生的作业数,一般每个处理器2个作业,所以,双核可以选择-j4 
sudo make bzImage // 编译内核,将保存到 /usr/src/linux-2.6.30/arch/i386/boot/ 下 
sudo make modules // 编译模块 
sudo make modules_install // 安装模块  把编译好的模块安装到系统的/lib/modules下 

sudo mkinitramfs -o /boot/initrd-2.6.30.img  2.6.30 #根据安装好的模块做镜像后面的参数号是指你的版本号,也就是modules下你安装的文件夹名 

此时可能提示找不到这样的一个文件夹“ /lib/firmware/2.6.30 ”,你需要手工创建一个这样的文件夹。

sudo mkdir /lib/firmware/2.6.30
sudo make install // 安装内核

#以上的几个步骤不能乱来要搞清楚各个步骤的实质内容   编译(包括内核和模块)->安装模块->做模块镜像->安装内核顺序不能乱


经过以上几步,内核就编译安装好了。然后就是修改grub,能够引导我们自己的新内核。如果对grub如何修改不是很了解,请看另一篇我转载的文章 《ubuntu9.10之grub.cfg详解》我就是添加了


menuentry “Ubuntu, Linux 2.6.30″ {
insmod ext2
set root=(hd0,8)
search –no-floppy –fs-uuid –set f255285a-5ad4-4eb8-93f5-4f767190d3b3
linux /boot/vmlinuz-2.6.30    root=UUID=f255285a-5ad4-4eb8-93f5-4f767190d3b3 ro quite splash
initrd /boot/initrd.img-2.6.30
}

 

修改完grub重启后出现了出现

warning:can't open directory /lib/modules/2.6.30-rc8-bfs311t5250,no such directory,估计没有配置好内核。

后来根据如下命令启发,修改后成功新内核。

######################################

cd /boot
cp initrd.img-2.6.29.4 initrd-2.6.29.4.old (Just making a backup)
depmod -a
update-initramfs -k 2.6.29.4 -c
cd /tmp
gzip -dc /boot/initrd.img-2.6.29.4| cpio -id
touch lib/modules/2.6.29.4/modules.dep
find ./ | cpio -H newc -o > /boot/initrd.img-2.6.29.4.new
gzip /boot/initrd.img-2.6.29.4.new
cd /boot
mv initrd.img-2.6.29.4.new.gz initrd.img-2.6.29.4

######################################


补充:
make 包括 内核部件和模块部件一起编译
make bzImage 只编译内核#可以在menuconfig后就使用 只编译内核 但是接着要编译 模块不能省
make modules 只编译模块
make modules_install 把编译好的内核安装到/lib/modules/X.x.x下面 XX是你自己定义的版本号
sudo mkinitramfs -o /boot/initrd-2.6.24.img 2.6.24就对 /lib/modules/XX。X下面的模块库进行的一个镜像快照当内核需要没有被编入内核的模块是会去initrd.img找如果启动过程中需要的部 分都在内核中。就不会访问该文件!

内核安装过程中,实际做了三件事:
1.安装modules到/lib/modules下面。
2.复制内核vmlinuz和模块镜像initrd.img到/boot/下
3.在/下面创建vmlinux和initrd两个链接。是方便没法指明路径的引导程序直接到/目录下找到/boot/的启动文件!(grub可以设定路径,不用做链接也可以)
4.在grub里面加入新内核的引导路径!
完!

 

 

出现这个错误了

Re: FATAL: modprobe: Could not load /lib/modules/.../module.deb

删掉了之前生成的/boot/initrd.img-2.6.28,执行


#cd /usr/src/linux

#update-initramfs –c –k 2.6.28

这样,重新在/boot下创建initrd.img-2.6.28,
sudo update-grub
重启后,进入了新内核,内核编译升级成功。
在Ubuntuserver9.10下测试成功

ubuntu12.04编译内核流程

经过四天的尝试,终于将ubunt12.04的3.
  • sunziguang
  • sunziguang
  • 2014年05月25日 22:45
  • 742

Ubuntu16.04内核编译流程

0、为了偷懒,还是先切换到root权限吧,否则很多命令需要sudo... 1、uname –r 查看本机内核版本。 2、apt-cache search Linux-source (执行这条命令系...
  • yk150915
  • yk150915
  • 2017年03月24日 17:15
  • 3534

Ubuntu下的内核编译(打造最精确的编译步骤)

1、apt-get 代码:  apt-cache search linux-source 或者在http://www.kernel.org/下载内核源码 执行用这条命令系统会提示你安装适合你...
  • xumin330774233
  • xumin330774233
  • 2014年10月22日 10:27
  • 14245

虚拟机里Ubuntu编译内核方法

我们要想了解Linux操作系统,首先要学会编译其内核。Ubuntu编译内核的教程网上有很多,但大多是双系统或者单独的Linux系统,虚拟机环境中的Ubuntu编译内核方法还是有些不同,且网上教程大多都...
  • wh8_2011
  • wh8_2011
  • 2017年04月09日 19:43
  • 516

在ubuntu16.04LTS下编译linux内核

要编译linux首先要下载好linux源代码文件 点此进入linux内核源代码官网:https://www.kernel.org/ 你可以选择最新的版本进行下载,截至本文,linux内核版本已经到...
  • foolishcsdn
  • foolishcsdn
  • 2016年12月10日 15:48
  • 4115

ubuntu16.04让内核编译一次过的方法

用linux对于某些人来说最麻烦的就是环境搭建了,而环境搭建得检测标准,个人认为是能不能把最新的kernel编译通过。如果连kernel都编译不通过,环境搭建一定有问题。 下面用ubuntu16.04...
  • u010629326
  • u010629326
  • 2017年07月09日 23:39
  • 565

Ubuntu 14.04 LTS 编译内核(3.19到4.15)详细过程

编译内核问题大汇总
  • wm64195135
  • wm64195135
  • 2016年03月16日 17:14
  • 3001

手动编译ubuntu内核并升级内核

内核编译:(部分摘录自http://forum.ubuntu.org.cn/viewtopic.php?t=134404) 1.到http://www.kernel.org下载需要编译的内核源码文件...
  • cupidove
  • cupidove
  • 2016年12月15日 16:17
  • 2609

ubuntu1404 编译新内核

1、kernel配置 这里就不想自己一个一个地配了,故直接将当前Ubuntu 14.04.1 LTS的kernel配置copy过来用。 先cd到欲编译的kernel source code的根目录l...
  • u010796610
  • u010796610
  • 2016年04月14日 09:40
  • 243

Ubuntu 12.04.1 内核编译整个过程(内核2.6.32.70)

Ubuntu 12.04.1 内核编译整个过程(内核2.6.32.70)目录: Ubuntu 12041 内核编译整个过程内核263270 准备工作 内核263270 版本下载 解压文件夹 开始进行编...
  • Paulhappy
  • Paulhappy
  • 2016年02月29日 01:46
  • 1342
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ubuntu 编译内核
举报原因:
原因补充:

(最多只允许输入30个字)