10斤白酒泡多少枸杞:編譯 Linux 核心成 rpm 套件

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 23:51:59

本文主要讨论如何编译 Linux 核心成 RPM 套件 (*.rpm)。如果想把 Linux 编译成 dpkg 套件 (*.deb)或用原始工具编译,可以参看相关文章。

目录

[隐藏]
  • 1 为何要编译核心
  • 2 Linux 核心 RPM 套件
  • 3 预备编译需要的工具
  • 4 建立用户编译环境
    • 4.1 sudo
    • 4.2 建立 rpmbuild 目录
  • 5 取得 Linux 核心源码
    • 5.1 Fedora RPM
  • 6 核实 Linux 核心源码 (可省略)
  • 7 解开核心源码压缩档
    • 7.1 解开 GNU Zip了(*.tar.gz) 的压缩档
    • 7.2 解开 BZip2 了(*.tar.bz2) 的压缩档
    • 7.3 建立连结
    • 7.4 用Patch档案
  • 8 设定编译选项
    • 8.1 make config - 文字模式
    • 8.2 make menuconfig - 文字选单模式
    • 8.3 make xconfig - 图像模式 (Qt/Tcl)
    • 8.4 make gconfig - 图像模式 (GTK+)
    • 8.5 make oldconfig - 只选择新编译选项
    • 8.6 设定编译选项提示
      • 8.6.1 一般要留意的选项
      • 8.6.2 设定桌面计算机(Desktop)要留意的选项
      • 8.6.3 设定笔记簿型计算机 (Laptop/Notebook) 要留意的选项
      • 8.6.4 设定服务器 (Server) 要留意的选项
  • 9 编译核心
  • 10 安装新核心
    • 10.1 搬动有关档案
    • 10.2 设定开机管理程序
      • 10.2.1 设定 GRUB
      • 10.2.2 设定 lilo
  • 11 失败后的处理方法
  • 12 参考资料
  • 13 请参看
  • 14 外部连结
[编辑]

为何要编译核心

  • 支援新的硬件设备
  • 支援新的功能
  • 修正旧版本的一些问题或安全漏洞
  • 优化核心,降低系统资源需求
[编辑]

Linux 核心 RPM 套件

如果您的系统是使用 RPM 套件管理系统 (包括 CentOS、Fedora、Mandriva、Redhat 及 SuSE),那麽您值得考虑使用把 Linux 核心包成 RPM 套件。成为 RPM 套件,可以享有其他包成 RPM 套件软件的优点,在安装、管理和更新方面都较为方便。尤其当您要维护大量近似硬件配备及运行 RPM 的 GNU/Linux 系统时,核心 RPM 套件的长处就更易看到。

[编辑]

预备编译需要的工具

要编译 Linux 核心,一般需要以下工具

  • GNU Tar (tar) - 解开源码压缩档
  • GNU Zip (gzip) 或 BZip2 (bzip2)- 解开源码压缩档(*.gz 或 *.bz2)
  • GNU C Compiler (gcc) - 编译核心
  • GNU C++ Compiler (g++ 或 gcc-c++) - 编译 make xconfig 使用的 Qt 窗口时需要
  • GNU Make - 管理编译
  • NCurses (libncurses5-dev 或 ncurses-devel) - make menuconfig 时用作绘划文字窗口的程序库
  • Qt 3 (qt-devel 或 qt3-devel) - make xconfig 时用作 Qt 窗口的程序库
  • GTK+ (gtk+-devel) - make gconfig 时用作 GTK+ 窗口的程序库
  • Glade (libglade2-devel) - 要编译 make gconfig 时的 GTK+ 窗口时需要

打算使用文字窗口接口 (make menuconfig) 设定编译选项的朋友可以打安装所需的套件:

su -c 'yum install rpm-build rpmdevtools unifdef gcc ncurses-devel'

打算使用 QT GUI 接口 (make xconfig) 设定编译选项的朋友可以打安装所需的套件:

su -c 'yum install rpm-build rpmdevtools unifdef gcc gcc-c++ qt-devel'

Fedora 9 或以上的使用者要改打:

su -c 'yum install rpm-build rpmdevtools unifdef gcc gcc-c++ qt3-devel'

打算使用 GTK+ 接口 (make gconfig) 设定编译选项的朋友可以打安装所需的套件:

su -c 'yum install rpm-build rpmdevtools unifdef gcc gtk+devel libglade2-devel'


[编辑]

建立用户编译环境

[编辑]

sudo

visudo,加入以下一行:

jrandom     ALL=(ALL) ALL
[编辑]

建立 rpmbuild 目录

您需要有以下目录:

  • SPECS
  • SOURCES
  • BUILD
  • RPM
  • SRPM
cd ~cp -a /usr/src/redhat rpmbuildecho '%_topdir %(echo $HOME)/rpmbuild' >> .rpmmacros

或者执行 fedora-rpmdevtools 套件中的 fedora-buildrpmtree:

fedora-buildrpmtree
[编辑]

取得 Linux 核心源码

要编译 Linux,首先当然是要最得 Linux 的源码(source code)。最新的 Linux 官方源码是可以从 Kernel.org 或其映射站取得,而最新 2.6.x 版本一般放在 /pub/linux/kernel/v2.6/ 中。

Kernel.org 中的 Linux 源码是正式由 Linux 核心开发团发布的。因为很多 distribution 或个别开发者都会在官方 Linux 上加入一些改动成为新版本,所以我们又称未被修改的 Kernel.org 官方版本为 Vanilla kernel (Vanilla 在英文的意思是平平无奇、很普通的意思) 。

当然,您亦可以使用 distribution 所提供的 Linux 源码。

[编辑]

Fedora RPM

Fedora 的核心源码被包在 kernel 源码 RPM (*.src.rpm) 中。Fedora 9 的核心源码 RPM 被放在http://download.fedora.redhat.com/pub/fedora/linux/releases/10/Fedora/source/SRPMS/kernel-2.6.27.5-117.fc10.src.rpm 。其他 Fedora 版本的核心源码分别在:

  • Fedora 10: http://download.fedora.redhat.com/pub/fedora/linux/releases/10/Fedora/source/SRPMS/kernel-2.6.27.5-117.fc10.src.rpm
  • Fedora 9: http://download.fedora.redhat.com/pub/fedora/linux/releases/9/Fedora/source/SRPMS/kernel-2.6.25-14.fc9.src.rpm
  • Fedora 8: http://download.fedora.redhat.com/pub/fedora/linux/releases/8/Fedora/source/SRPMS/kernel-2.6.23.1-42.fc8.src.rpm
  • Fedora 7: http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Fedora/source/SRPMS/kernel-2.6.21-1.3194.fc7.src.rpm
  • Fedora Core 6: http://download.fedora.redhat.com/pub/fedora/linux/core/6/source/SRPMS/kernel-2.6.18-1.2798.fc6.src.rpm
  • Fedora Core 5: http://download.fedora.redhat.com/pub/fedora/linux/core/5/source/SRPMS/kernel-2.6.15-1.2054_FC5.src.rpm

下载后,可以用命令"rpm -ivh kernel-*.src.rpm"安装。例如:

wget http://download.fedora.redhat.com/pub/fedora/linux/releases/10/Fedora/source/SRPMS/kernel-2.6.27.5-117.fc10.src.rpmrpm -ihv kernel-2.6.27.5-117.fc10.src.rpm

安装源码 RPM,您可能会看到以下警告讯息:

warning: user brewbuilder does not exist - using rootwarning: group brewbuilder does not exist - using root

您可以不理会它们。

[编辑]

核实 Linux 核心源码 (可省略)

要确保您下载的 Linux 核心源码没有被人恶意植入有问题的程序码,每个 tarball 都有一个 *.sign 记录了相关程序码的数码签署,可以让您用 GNUPG 之类的软件核实源码的真伪。

先确定您拥有 Kernel.org 的数码公钥,您可以到 Kernel.org 或由金钥服务器 wwwkeys.pgp.net下载:

$ gpg --keyserver wwwkeys.pgp.net --recv-keys 0x517D0F0Egpg: requesting key 517D0F0E from hkp server wwwkeys.pgp.netgpg: key 517D0F0E: "Linux Kernel Archives Verification Key " 34 new signaturesgpg: no ultimately trusted keys foundgpg: Total number processed: 1gpg:         new signatures: 34$

使用 GNUPG 核实源码:

$ gpg --verify linux-2.6.36.tar.bz2.sign linux-2.6.36.tar.bz2gpg: Signature made Thu 15 Dec 2005 02:13:27 PM HKT using DSA key ID 517D0F0Egpg: Good signature from "Linux Kernel Archives Verification Key "

如果您得到以上结果,即表示您下载的源码正确无误。但如果您得到以下结果,您下载的源码可能已被人更动过了。

Could not find a valid trust path to the key.  Let's see whether wecan assign some missing owner trust values.No path leading to one of our keys found. gpg: WARNING: This key is not certified with a trusted signature!gpg:          There is no indication that the signature belongs to the owner.


[编辑]

解开核心源码压缩档

[编辑]

解开 GNU Zip了(*.tar.gz) 的压缩档

如果您是下载了GNU Zip 的 Linux 核心源码压缩档(档案伸廷名称为*.tar.gz),可以用指令 "tar zxvf linux-版本编号.tar.gz"解压:

tar zxvf linux-2.6.36.tar.gz
[编辑]

解开 BZip2 了(*.tar.bz2) 的压缩档

如果您是下载了 BZip2 了的 Linux 核心源码压缩档(档案伸廷名称为*.tar.bz2),可以用指令 "tar jxvf linux-版本编号.tar.bz2"解压:

tar jxvf linux-2.6.36.tar.bz2
[编辑]

建立连结

ln -s linux-2.6.36 /usr/src/linux
[编辑]

用Patch档案

如果您有前一个版本的Linux核心源码并下载了GNU Zip了的现在版本patch档案(档名为patch-*.gz),可以使用工具patch把前一个版本的Linux核心源码转变成现在版本:

cd linux-2.6.18gzip -cd ../patch-2.6.17.gz | patch -p1 --dry-rungzip -cd ../patch-2.6.17.gz | patch -p1

如果您有前一个版本的Linux核心源码并下载了BZip2了的现在版本patch档案(档名为patch-*.bz2),可以使用工具patch把前一个版本的Linux核心源码转变成现在版本:

cd linux-2.6.18bzip2 -cd ../patch-2.6.17.bz2 | patch -p1 --dry-runbzip2 -cd ../patch-2.6.17.bz2 | patch -p1


cd ~/rpmbuild/SOURCES/wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.18.2.bz2


[编辑]

设定编译选项

编译 Linux 核心其中一个最重要的步骤就是选择您的新核心需要那些功能,那些功能要编译成可加载模组(Loadable Modules),甚至那些功能不需要编入核心中。当然,越少功能可以令新核心大小越少,耗癈资源越少。但如果编译功能太少,常需要新功能时,就需要再重新编译核心。所以设定编译选项亦成为编译核心中最困难和最耗时的步骤。

Linux 提供了多个方法去让您设定编译选项:

  • make config - 文字模式遂行回答
  • make menuconfig - 全萤幕文字模式选单选择选项
  • make xconfig - X Window 图形接口 (Qt 或 Tcl/Tk) 选择选项
  • make gconfig - X Window 图形接口 (GTK+) 选择选项
  • make oldconfig - 文字模式只遂行回答新选项
[编辑]

make config - 文字模式

make config 是最原始的设定方法,早在 Linux 0.x 时就出现了。当您打入 make config,系统就会在文字模式下会逐一问您每一个编译选项:

$ make configscripts/kconfig/conf arch/i386/Kconfig** Linux Kernel Configuration*** Code maturity level options*Prompt for development and/or incomplete code/drivers (EXPERIMENTAL) [Y/n/?]** General setup*Local version - append to kernel release (LOCALVERSION) []Automatically append version information to the version string (LOCALVERSION_AUTO) [Y/n/?] Support for paging of anonymous memory (swap) (SWAP) [Y/n/?]System V IPC (SYSVIPC) [Y/n/?]POSIX Message Queues (POSIX_MQUEUE) [Y/n/?]BSD Process Accounting (BSD_PROCESS_ACCT) [N/y/?]Export task/process statistics through netlink (EXPERIMENTAL) (TASKSTATS) [N/y/?]Auditing support (AUDIT) [N/y/?]Kernel .config support (IKCONFIG) [Y/n/?]  Enable access to .config through /proc/config.gz (IKCONFIG_PROC) [Y/n/?]Kernel->user space relay support (formerly relayfs) (RELAY) [N/y/?]Initramfs source file(s) (INITRAMFS_SOURCE) []Optimize for size (Look out for broken compilers!) (CC_OPTIMIZE_FOR_SIZE) [Y/n/?] n** Configure standard kernel features (for small systems)*Configure standard kernel features (for small systems) (EMBEDDED) [N/y/?]

一般编译选项容许您选择 (用大阶字母显示表示为缺省选项):

  • y (Yes) - 启用该功能或选项,并且编译入 Linux 核心中。
  • n (No) - 关闭该功能或选项,并且不编译入 Linux 核心或成为模组。
  • m (Module) - 将该功能或选项编译成模组,需要时才加载系统。
  •   (Help) - 取得该功能或选项的说明。

这种方法的好处是设定时不需要额外的程序库,坏处是当您发觉选错选项时,您只可以按 Ctrl-C 中断设定,重新回答每个问题,非常麻烦。现时编译 Linux 有三千七百多个选项,make config 显然不一个聪明的选择。如果您没有 NCurses 之类程序库,直接用文字编辑器编辑档案 .config 可能会比 make config 更方便。

[编辑]

make menuconfig - 文字选单模式

make menuconfig 使用 NCurses 程序库在文字模式绘出选单让您选择编译选项。您可以用上下箭咀键在各选项间穿梭,随意调校任何选项,在操控上是最方便的。

同样您可以按 y/n/m 选择将该功能或选项开启/关闭/编成模组。当您看到 “*” 就表示该功能被开启了,空格为关闭,“M” 为编译成模组。您可以按空间键 (Space bar) 在各状态中切换。选项如用角括号 (“< >”) 括住表示选项可以设为 y/n/m 其中一个状态,方括号 (“[ ]”) 则表示选项只可以设为 y/n 两个状态,花括号 (“{ }”) 则表示选项只可以设为 m/n 两个状态。

[编辑]

make xconfig - 图像模式 (Qt/Tcl)

make xconfig 顾名思意就是让您在 X Window 环境下选择编译选项。Linux 2.2 时使用 Tcl/Tk,2.4 开始转用 Qt,GTK+ 则用下面的 gconfig 来启动。当然选择编译选项,您需要有相关的图形工具箱的程序库。其操控反而不及 menuconfig 方便。

Qt 版面提供三种显示方式:

  • Split - 以三个窗格显示。左窗格以树状展示各选项分类,右上窗格以树状展示分类中的各选项,右下窗格显示选项的详细描述。
  • Single - 在单一窗格选择了选项分类后,就会以上下两个窗格显示。上窗格以树状展示分类中的各选项,下窗格显示选项的详细描述。
  • Fullview - 以上下两个窗格显示。上窗格以树状展示所有选项,下窗格显示选项的详细描述。
Split View Single View Full View

「?」表示启用,空间表示关闭,圆点(「.」)表示编译成模组。

旧 Tcl 版面 (2.2.x 或以前):

[编辑]

make gconfig - 图像模式 (GTK+)

make gconfig 让您在 X Window 环境下用 GTK+ 接口选择编译选项。当然选择编译选项,您需要有 GTK+ 图形工具箱的程序库。

GTK+ 版面和 Qt 版面一样提供三种显示方式:

  • Split - 以三个窗格显示。左窗格以树状展示各选项分类,右上窗格以树状展示分类中的各选项,右下窗格显示选项的详细描述。
  • Single - 在单一窗格选择了选项分类后,就会以上下两个窗格显示。上窗格以树状展示分类中的各选项,下窗格显示选项的详细描述。
  • Fullview - 以上下两个窗格显示。上窗格以树状展示所有选项,下窗格显示选项的详细描述
Split View Single View Full View

「?」表示启用,空间表示关闭,减号(「-」)表示编译成模组。

[编辑]

make oldconfig - 只选择新编译选项

make oldconfig 操作方式和 make config 一样,也是文字模式下遂个选项问您,但他只会问新的选项。如果您曾编译早一两版的 Linux,oldconfig 可以大大减低您设定的时间,亦让您清楚知道新版 Linux 有什么新功能。

使用则,您必需要取得以往编译时的编译选项 (即档案 .config) 或 distribution 官方编译选项。习惯上各核心的编译设定档会保存在目录 /boot 中一些名为 “config-核心版本” 的档案中,您可以直接复制至您的核心源码目录中:

cp /boot/config-`uname -r` .config

搞定后打「make oldconfig」设定新编译选项:

make oldconfig
[编辑]

设定编译选项提示

[编辑]

一般要留意的选项

  • Processor type and features
    • Symmetric multi-processing support (SMP) - 如果您的计算机有多过一个微处理器或多核心(Dual/Quad Core),请开启这选项。
    • Processor family - 选择适合您的微处理器家族,您可以看看档案 /proc/cpuinfo 查阅您现时的微处理器型号。
      • 386 (M386) - Intel 80386 系列及 AMD, Cyrix 的兼容微处理器。
      • 486 (M486) - Intel 80486 系列及 AMD, Cyrix, IBM 的兼容微处理器。
      • 586/K5/5x86/6x86/6x86MX (M586) - 非 Intel 的 586/686 微处理器,包括AMD K5、Cyrix 5x86, 6x86 及 6x86MX。
      • Pentium-Classic (M586TSC) - 原始 Intel Pentium
      • Pentium-MMX (M586MMX) - 支援 MMX 图形及多媒体扩充指令的 Intel Pentium
      • Pentium-Pro (M686) - Intel Pentium Pro
      • Pentium-II/Celeron(pre-Coppermine) (MPENTIUMII) - Intel Pentium II 及 pre-Coppermine Celeron
      • Pentium-III/Celeron(Coppermine)/Pentium-III Xeon (MPENTIUMIII) - Intel Pentium III、Coppermine Celeron 及 Intel Pentium-III Xeon
      • Pentium M (MPENTIUMM) - Intel Pentium III Mobile (不是 Pentium 4 Mobile)
      • Pentium-4/Celeron(P4-Based)/Pentium-4 M/Xeon (MPENTIUM4) - Intel Pentium 4,包括 Celeron 、 Xeon 及 Mobile
      • K6/K6-II/K6-III (MK6) - AMD K6 系列
      • Athlon/Duron/K7 (MK7) - AMD Athlon K7 系列
      • Opteron/Athlon64/Hammer/K8 (MK8) - AMD Opteron 或 Athlon64 Hammer 系列
      • Crusoe (MCRUSOE) - Transmeta Crusoe
      • Efficeon (MEFFICEON) - Transmeta Efficeon
      • Winchip-C6 (MWINCHIPC6) - IDT Winchip C6
      • Winchip-2 (MWINCHIP2) - IDT Winchip-2
      • Winchip-2A/Winchip-3 (MWINCHIP3D) - IDT Winchip-2A 或 3
      • GeodeGX1 (MGEODEGX1) - Geode GX1 (Cyrix MediaGX)
      • GeodeGX/LX (MGEODE_LX) - AMD Geode GX 或 LX
      • CyrixIII/VIA-C3 (MCYRIXIII) - Cyrix III 或 C3
      • VIA C3 (Nehemiah) (MVIAC3_2) - VIC C3 "Nehemiah"
    • Maximum number of CPUs (2-255) - 填入您计算机的 CPU 数量。例如 Duo Core 填「2」。CPU 最大数量每多一就会令 Linux 核心大约八千左右字节。
    • High Memory Support - 如果您的计算机不会拥有 1GB 或以上的内存,请选off。如内存大小界符1GB 和 4GB 之间,选 4GB。如果多于 4GB,请选 64GB。
  • Device Drivers -> ATA/ATAPI/MFM/RLL support -> Include IDE/ATA-2 DISK support (BLK_DEV_IDEDISK) - 建议开启。不开启这选项,您就使用不到 IDE 硬盘,连开动 Linux 都不能。(当然,用 SCSI 硬盘的朋友可以不开启这选项。)
  • Device Drive -> Block Devices -> Low Performance USB Block Driver (BLK_DEV_UB) - 建议关闭。不要开启这选项或编译成为模组。这选项会开启效能较低的USB驱动器(ub)。[1] [2] (2.6.9 或以后)

如果您使用 nVidia 显示咭,请关闭下列选项:

  • Graphics Support -> nVidia Riva support (FB_RIVA)
  • Kernel Hacking -> Use 4Kb for kernel stacks instead of 8Kb (4KSTACKS)
  • Processor Type and Features -> Local APIC support on uniprocessors (X86_UP_APIC)
并请参考 Andrew's Debian-nVidia HOWTO 加入有关 patch 才编译。 [编辑]

设定桌面计算机(Desktop)要留意的选项

  • Preemption Model
    • Preemption (Low-Latency Desktop) (PREEMPT) - 开启这选项可以令多媒体播放更流畅,是桌面计算机必用的选项。
    • Preempt The Big Kernel Lock (PREEMPT_BKL) - 建议开启。
    • Timer frequency (CONFIG_HZ_250 或者 CONFIG_HZ_1000) - 对桌面计算机来说,选 250Hz 而可以令多媒体播放很流畅,但如果您对这方便要求高,可以考虑使用 1000Hz,但留意电量较高。
  • Block Layer -> IO Schedulers - 建议使用 CFQ I/O 排程器。这是决定使用硬盘存取排程器。在桌面平代方面,CFQ 的表现较平均。
[编辑]

设定笔记簿型计算机 (Laptop/Notebook) 要留意的选项

  • 留意上面设定桌面计算机 (Desktop) 要留意的选项
    • Timer frequency (CONFIG_HZ_250) - 对笔记簿型计算机来说,选 250Hz 而可以令多媒体播放很流畅,而 1000Hz 会令电池寿命大大缩短。
[编辑]

设定服务器 (Server) 要留意的选项

  • Preemption Model
    • Preemptible Kernel (PREEMPT) - 建议关闭。开启这选项可以令多媒体播放更流畅,但如果您是用来作服务器之用,这选项可能会降低系统效能,请把此选项关掉。
    • No Forced Preemption (Server) (PREEMPT_NONE) - 建议选用。
    • Preempt The Big Kernel Lock (PREEMPT_BKL) - 建议关闭。
    • Timer frequency (CONFIG_HZ_100) - 建议使用 100Hz。
  • Block Layer
    • Support for Large Block Devices (LBD) - 如要存取超过 2TB 大小的储存设备(如硬盘、RAID或硬盘映像档等),就需要开启选项。
    • Support for Large Single Files (LSF) - 如要处理超过 2TB 大小的档案,就需要开启选项。
    • IO Schedulers - 决定使用硬盘存取排程器。如果您的服务器是用来跑数据库 (Database),请使用deadline 排程器。
[编辑]

编译核心

xkcd #303: Compiling[1]

先打 “make dep” 建立相依性表。(编译 Linux 2.6.x 或以上的版本可以略过)

如果您之前曾在同一个源码目录编译过核心,当中产生的旧核心和 .o 等遗留物可能会影响新编译出来的核心不是按最新选择的编译选项编译。此时,您需要打 “make clean” 清理源码目录。当然,如核心源码是刚解柝出来,就无需要打此命令。

打 “make bzImage” 编译核心。留意当中的 “I” 为英文字母 i 的大写。编译完成后,会把编译好的新核心放在 arch/平台/boot/bzImage (以 Intel x86 为例,会放在 arch/x86/boot/bzImage)。

打 “make modules” 编译核心模组。

您亦可以使用命令 “make help” 查询其他 make 项目。

make bzImage modules
[编辑]

安装新核心

[编辑]

搬动有关档案

打 "make modules_install" 将核心模组安装至目录 /lib/modules 中。

make modules_install

您会在目录 arch/i386/boot 中找到个叫 bzImage 或 zImage 的档案,那就是您编辑出来的新核心了。为方便管理,您需要把它移动至目录 /boot中,并改名为 "vmlinuz-核心版本"。为保存编译选项方便日后参考,您也应该把 .config 复制至 /boot 及改名为 "config-核心版本"。例如(假设核心版本为 2.6.36):

cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.36cp .config /boot/config-2.6.36
[编辑]

设定开机管理程序

如果您是透过 rpm 命令安装新的 Linux 核心套件,系统会自动帮您设定开机管理程序。

不过您亦以按下指示检查开机管理程序的设定是否有问题。

[编辑]

设定 GRUB

设定 GRUB 前请先输入命令 df 查出目录 / 和 /boot 所在的分割区名称,例如:

$ df档案系统           1K-区段      已用     可用     已用% 挂载点/dev/sda5         14535584   7275752  6527272  53% /udev               1033204        60  1033144   1% /devdevshm             1033204       184  1033020   1% /dev/shm/dev/sda2            43256     24819    18437  57% /boot

如上例中,目录 / 的分割区名称就是 /dev/sda5。

修改 GRUB 的设定档 /boot/grub/menu.lst 加上启动新 Linux 核心的项目,以下是 Ubuntu/Debian 的例子:

## ## End Default Options ##title           New Linux (2.6.36)root            (hd0,4)kernel          /boot/vmlinuz-2.6.36 root=UUID=a3b3df6a-a4b7-4395-8278-45c23e45ca53 ro quiet splash locale=zh_TWquiettitleUbuntu 8.04, kernel 2.6.24-19-genericroot(hd0,4)kernel/boot/vmlinuz-2.6.24-19-generic  root=UUID=a3b3df6a-a4b7-4395-8278-45c23e45ca53 ro quiet splash locale=zh_TWinitrd/boot/initrd.img-2.6.24-19-genericquiet

以下是 Fedora/CentOS 的例子:

splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle New Linux (2.6.36)      root (hd0,0)      kernel /vmlinuz-2.6.36 ro root=/dev/VolGroup00/LogVol100 rhgb quiettitle Fedora (2.6.26.10-86.fc9.i686)      root (hd0,0)      kernel /vmlinuz-2.6.25.10-86.fc9.i686 ro root=/dev/VolGroup00/LogVol100 rhgb quiet      initrd /initrd-2.6.25.10-86.fc9.i686.img

简单来说,把现有的项目设定复制一次,改一改标题 (title) 和核心名称 (kernel) 就可以了。

[编辑]

设定 lilo

设定好设定档案 /etc/lilo.conf:

boot=/dev/hdaroot=/dev/hda5install=/boot/boot.bmap=/boot/mapvga=normaldelay=100image=/boot/vmlinuz-2.6.36    label=Linux    read-onlyimage=/boot/vmlinuz-2.6.8    label=LinuxOld    read-onlyother=/dev/hda1    label=WinXP    table=/dev/hda

打「lilo」把 LILO 和设定写入指定的 MBR 或 VBR。

 lilo
[编辑]

失败后的处理方法

[编辑]

参考资料

  1. ↑ xkcd (2007) Compiling. xkcd, #303. Retrieved at Nov 4, 2010 from: http://xkcd.com/303/
[编辑]

请参看

  • 使用其他方法编译 Linux 核心 - 包括直接编译和编译成 dpkg 套件 (*.deb)
[编辑]

外部连结

  • HowtoForge: How To Compile A Kernel - The fedora Way
  • Enterpris Networking Planet - Linux: Custom Kernels with Debian and Fedora
  • CentOS Wiki: How To Custom Kernel