编写翻译Linux内核的详尽经过,Ubuntu新手也足以团结建设构造天性化核心

建立核心对很多人来说可能是个不能相信的事情,
其实建立个性化核心一点也不危险,
而且今天的Linux技术已经不再是不安全的事情了。

1、准备源码

1.写在前面

Linux操作系统包括四个部分:
(1)内核:内核是一个操作系统的核心。它负责为其他所有的程序以及服务提供运行环境,分配各种软硬件资源,管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。在操作系统中,内核的作用类似于人的大脑。
(2)Shell:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。
(3)文件系统:是文件存放在磁盘等存储设备上的组织方法。Linux系统能支持多种目前流行的文件系统,如EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。
(4)应用程序:例如:文本编辑器(vi、vim、gedit等)、编程语言、X
Window(图形界面)、办公套件、Internet工具和数据库等。
其中,
Linux的一个重要特点就是其源代码的公开性,任何人都能够在https://www.kernel.org/上得到任何版本的Linux内核源码。
灵跃桌面云在使用Windows操作系统中时,通常遇到这样的困扰:系统运行了一段时间之后,出现运行速度越来越慢、系统盘的数据越来越多、剩余容量变得越来越少的问题。但是,由于Windows系统不开源,我们无法知道出现这种情况的本质原因。而在Linux操作系统中,利用Linux内核的开源特性,可从内核源码层定位上述问题,从而对Linux系统进行定制、优化,以满足功能和性能上的需求。
接下来将以linux-3.10.1版本的内核为例,灵跃桌面云带领大家来详细了解下如何获取Linux内核源码,如何编译、安装一个属于自己的Linux内核。

个性化核心其实优点多多,
最主要的好处就是此核心是觉得针对你的电脑而编写的,
使用启动速度也会跟着加快好多, 方法其实就是把不要的MODULE
给去处,让核心更小。

最新的源码可以从kernel.org上获取,如当前最新版本为2.6.31:$ wget
linux-kernel/v2.6/linux-2.6.31.tar.bz2″>

2.编译安装环境

图片 1

image.png

注:在下述描述中,涉及在服务器Ubuntu
12.04操作系统环境上的所有操作,均以root身份登录并执行。

我在这里分享一下在Debian/Ubuntu
里简单制作核心的方法, 不过在这之前, 你必须确定你已经拥有这些软件

2、解压源码:

3.获取Linux-3.10.1内核

通过wget文件下载工具获取网址https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2中的Linux-3.10.1源码,并保存到系统中的/home/work/kernel/目录下(也可保存到其它目录下,但注意下面的所有操作请在此目录下进行),并解压。
首先安装wget和编译内核所需依赖包:
apt-get install wget gcc libncurese5-dev
获取Linux3-1.10源码的命令行操作如下:
(1)切换到/home/目录下
cd /home/
(2)创建work目录并切换到work目录下
mkdir work && cd work/
(3)创建kernel目录并切换到kernel目录下
mkdir kernel && cd kernel/
(4)通过wget获取linux-3.10.1内核源码包linux-3.10.1.tar.bz2
wget
https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2
(5)解压源码包linux-3.10.1.tar.bz2
tar –jxvf linux-3.10.1.tar.bz2 –C /home/work/kernel/
(6)解压后在当前目录下得到linux-3.10.1文件夹,如下图所示:

图片 2

image.png

注:如果Ubuntu
12.04操作系统因为某些原因(例如,未连接外网)无法通过wget获取linux-3.10.1.tar.bz2,可首先在Windows系统中通过https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.10.1.tar.bz2下载源码包,然后将其拷贝到Ubuntu
12.04系统中的/home/work/kernel/目录下。

apt-get install kernel-package  ncurses-dev fakeroot wget bzip2

$ tar xvf linux-2.6.31.tar.bz2 -C /usr/src/
TIP:当然,解压缩到/usr/src/中并不是必须的,你可以解压缩到任何位置。

4.编译安装Linux-3.10.1内核

首先切换到linux-3.10.1文件夹下:
cd linux-3.10.1
配置内核:
(1)保持源码干净
make mrproper
注:此操作会将历史编译过程中配置的内核功能配置文件清除掉,所以只有第一次执行内核编译前才进行此操作,其它情况若需要清除前一次编译过程的残留数据,只需用下面的命令:
make clean
此命令仅删除编译过程产生的中间文件和目标文件,而不会删除历史配置。
(2)设置内核功能选项
make menuconfig
执行上面的命令,可在字符界面中显示功能配置的图形界面,如下图:

图片 3

image.png

根据上图中功能提示配置需要的功能,灵悦桌面云在本次实验中采用的是默认的配置,通过键盘上的左右键选择<Save>保存配置,得到新内核的配置文件,如下图:

图片 4

image.png

使用键盘上的左右键选择<OK>按钮,通过键盘上的回车键确认保存配置。
(3)编译内核和模块
清除暂存的缓存:
make clean
编译内核:
make bzImage
或:
make bzImage –j4
注:其中-j4表示同时编译的任务数。如果操作系统中有4个CPU核心,可通过-j4加快编译的速度。此编译过程较长,请耐心等候。
编译内核模块:
make modules
(4)安装内核模块和内核
make modules_install
make install

至此,linux-3.10.1内核已编译完成,接下来灵跃桌面云将为大家描述如何修改Ubuntu
12.04操作系统的默认启动项,使得系统重启后进入新编译的linux-3.10.1内核。

然后

3、检查源码该步不是必须):

5.配置开机启动项

(1)更新启动项列表,如下图:
update-grub2

图片 5

image.png

从上图中可查看系统中所有的内核列表,并可得知新编译的linux-3.10.1位于列表中第一个位置。
(2)修改默认启动菜单的配置文件/etc/default/grub
vim /etc/default/grub

图片 6

image.png

如图,GTUB_DEFAULT的值决定了系统启动时从内核列表的第几个内核启动。若GTUB_DEFAULT=0,则表示从第一个内核启动。由于新编译的linux-3.10.1内核位于第一个位置,因此,将GTUB_DEFAULT的值修改为0。
保存后,重启系统,可查看最新的启动菜单,如下图:
reboot

图片 7

image.png

系统默认从最新编译的“Ubuntu, with Linux 3.10.1”内核启动。
注:如果想从老版本的内核启动,可通过上下键选择“Previous Linux
versions”进入老版本的内核列表进行选择某一个老版本的内核。
(3)查看最新编译的内核
进入系统之后,通过下面的命令可查看当前系统中的内核版本,如下图:
uname -a

图片 8

image.png

如果能够看到“Linux Ubuntu
3.10.1”,表示linux-3.10.1的内核已经编译、安装成功。
本文转载于
灵跃云 :
原文链接

1) 到 kernel.org 下载最新的KERNEL

$ cd /usr/src/linux-2.6.31

$ wget

$ make mrproper

2)解压

TIP:该步的作用是检查源码是否有.o文件和依赖问题,从全新的源码编译时不需要这一步。配合make
clean主要清除.o文件)使用更好,make mrproper主要清除环境变量及配置文件

$ tar -jxvf linux-2.6.30.tar.gz2

4、编译内核

3)进入目录

默认情况下,编译输出的文件是放在源码目录里的,可以通过O=output/dir参数来指定输出文件的位置字母O,不是数字0)。很多第一次编译内核的人都会碰到一个问题,/usr所在分区的空间不够,此时,这个参数就很有用。

$ cd linux-2.6.30

源码提供了很多配置方式,推荐使用menuconfig:进入/usr/src/linux-2.6.31,已经进入则略过:$
cd /usr/src/linux-2.6.31

4)设定核心

创建/build/kernel menuconfig文件夹:$ mkdir -p
/home/你的用户名/build/kernel menuconfig

$ make menuconfig

使用menuconfig配置:$ make O=/home/你的用户名/build/kernel menuconfig

5) 完成后, 进行编辑和打包

对于第一次编译内核的人,不推荐直接从内核默认配置开始,推荐使用发行版自带的配置文件,通常/boot下会有config-2.6.xx的文件。选择Load
an Alternate Configuration
File,然后输入/boot下那个config文件的名字,载入即可。第一次编译最好还是不要随便修改配置了,如果失败的话,会留下心理阴影的:-)在配置里随便看看,如果有什么懂的也可以根据自己的需求改改,不明白的地方就不要动了吧。完了之后别忘了save,保存的时候文件名就填.config。

$ fakeroot make-kpkg –initrd –append-to-version=-mykernel kernel_image
kernel_headers

接下来就开始正式编译了。编译时间可能会有些长,为了避免终端意外关闭,可以使用screen,具体用法这里就不谈了。

6) 你将发现 有两个新的  .deb 文件, 把他们都安装

$ make O=/home/name/build/kernel

7)建立 GRUB

为了加快编译的速度,可以使用-j参数,开启多线程。比如双核的cpu可以这样编译

$ update-grub

$ make -j4 O=/home/name/build/kernel

重启 电脑后, 选择新核心进入系统, 要是失败,读读ERROR, 重启,
选择旧核心, 在重复 4) 步骤, 检查哪里出错。

一般-jn的n为核数的两倍即可

图片 9

5、安装内核

$ sudo make O=/home/name/build/kernel modules_install install

6、生成initrd

$ sudo mkinitramfs -o /boot/initrd-img.2.6.31
2.6.31关于mkinitramfs的其他参数,请参考man
mkinitramfs,关于initrd的作用,请自己google搜索。我近期也会写一篇文章剖析一下initrd。

7、修改引导

使用grub的话,可以直接使用:

$ sudo update-grub

来更新引导文件,当然也可以自己编辑/boot/grub/menu.lst或者/boot/grub/grub.cfg文件。

8、重启

重启之后可以通过以下命令确认你当前使用的是不是刚编译的内核:

$ uname -a

最新的源码可以从kernel.org上获取,如当前最新版本为2.6.31:$ wget
linux-kernel/v2.6/linux-2.6.31.tar.bz2″…

相关文章