`
mineral
  • 浏览: 287459 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mini HowTO:Compile the Linux Kernel (2.6.*)

阅读更多

Requirements
Well, in order to compile your Linux Kernel, you need at least the following: (already included and updated on most distros)

  1. GNU C (2.91)
  2. GNU make (ver 3.78 )
  3. binutils (2.12)
  4. util-linux (2.10o)
  5. module-init-tools(0.9.10)
  6. e2fsprogs(1.29)
  7. jfsutils(1.1.3)
  8. reiserfsprogs(3.6.3) (If you user REISER)
  9. xfsprogs(2.1.0)
  10. pcmcia-cs(3.1.21) (If you have a laptop or use PCCard)
  11. quota-tools(3.09)
  12. PPP(2.4.0)
  13. isdn4k-utils(3.1pre1) (If you connect via ISDN)
  14. nfs-utils (1.0.5)
  15. procps(3.1.13)
  16. oprofile(0.5.3)


Hardware
Therefore, the next step is to determine your current hardware, using a terminal move to your home directory (or wherever you wish to save hardware data) and type:

$ lspci > hardware.log

Then we need to have information about our CPU, again, type:

$ cat /proc/cpuinfo > cpuinfo.log

You'll have 2 files now, hardware.log and cpuinfo.log... what for? In order to respond correctly (no, it's not a test, just a cfg file !) some kernel configuration questions in order to tune your machine correctly, this info will come in handy specially when configuring NIC, soundcard, built-in components, etc...

Download kernel source...
We have a bifurcation here and all depends the road you'll take, you candownload a source from your distribution (already packed with all distro hacks,specific hardware support, etc...) or download a "pristine" kernel (community developed, large hardware support, experimental code, etc...). I'll prefer a pristine rathen than a distro pack, if you wish stability and support from your distro then take that way and please READ your distro kernel docs.
Staying with "pristine"? Well, the best place to download the kernel source is athttp://www.kenel.org, but please be generous and use a mirror near you, mirrors shown at http://www.kenel.org/mirrors. Choose a 2.6.x "tar.bz2" tarball and wait (it should not take more than 15 min using a 512 DSL internetconnection).

Extract kernel tarball
Uncompress the tarball as follows:

$ tar jxvf linux-2.6.x.tar.bz2

Replace the "x" with the version you're using. This will generate a directory "linux-2.6.x", get inside and ... let the party begins !

Configure the Linux Kernel
Having a bad day? Try to get a Paracetamol caplet or something because this step is a headache, takes lots of time (30 min at least) in order to configure properly your kernel... one keyword: PATIENCE !

To start configuring, inside the "linux-2.6.x" directory type the following at your terminal:

$ make mrproper
$ make xconfig

 

 

The first command will "prepare" some configuration files in order to compile correctly, in the past I received comments of kernel failure, this step seems to correct most of it. The next step will prepare and show your a graphical kernel configuration interface using qt (most of RH-based systems already includes qt), if you receive an error, please refer to your system updater (urpmi, apt, yast, yum ...) and download "qt" and "qt-devel" or any that refers to qt compilers, execution libraries, widgets and source code.
An alternative is to use "menuconfig" in the case you find difficult to get "qt" libraries and source, you can use it by changing "xconfig" with "menuconfig", like this:

$ make menuconfig

This command will need ncurses, but don't worry, most of Linux distros has them already (it is considered as an terminal developing standard to use ncurses ! That's why...)

If everythings smooth a window (or a blue menu inside your terminal) will appear you're ready to start configuring your kernel, open with the editor of your choice the 2 files we saved, remember? (hardware.log and cpuinfo.log) or print it if you wish.

I can't guide you here step-by-step but I can, at least, give to you important tips to follow, please take note:

  1. How to answer? Simply click over the checkbox, it will show 3 different ways, checked, dotted and empty. "checked" means a positive answer, dotted means "to compile/install" as a module and "empty" means a negative answer.
  2. Follow reccomendations at the brief help below, there is a textbox which explains every option, most of times they give tips like "say N if unsure", if you don't really know what you're doing, then follow this brief tips.
  3. EXPERIMENTAL OR STABILITY? An eternal question, depends on you and you'll answer this at "Code Maturity Options"
  4. Proccesor and RAM, please do not lie about your processor information ! (this is "cpuinfo.log" intended for), if you're using a HyperThread processor mark positive any SMP option, choose the max processor information up to 4 (or more if you intend or have more processors). If you have 1GB of RAM or more, please check memory support at "4 GB" if you have more than 4 GB then choose support for 10 GB and so on.
  5. Be systematic! Disable any feature you don't really need ! Any feature that you mark as positive will increase the kernel size resulting on a slow or even buggy kernel ! So please be systematic on choosing features
  6. Bus options: Most modern computers won't have MCA or ISA, you can disable this options safely.
  7. Filesystems: Allow at least ext2, ext3 and reiserFS to be supported by the kernel !!! If you miss this step, the fresh compiled kernel will crash for sure !
  8. Cryptography and loopback device: Allow loopback devices and Cryptography, it's a good idea to create encrypted loopback devices if you want to keep information safe, at least allow Twofish, Blowfish and AES algorhytms to be included.
  9. Be safe ! Check twice your kernel configuration (I told you this will take some time)


Compile the Linux Kernel 
The final showdown ! Now, after configuring and saving your kernel, type the following at the terminal:

$ make

That's it? Nothing else? No. For "pristine" Linux source tarballs, using the "make" command will build everything you need, using a powerful Intel or AMD processor and a simple configuration will take 10 minutes, this may vary from 7 minutes to 45 minutes or more (old Intel machines). So go and grab a lunch, take a nap or go walk for a while.
When you came back, look at the terminal, if no errors around then... HORAAY !

Install the Linux Kernel Modules
First of all, get root rights and type the following at your terminal:

# make modules_install

This command will install automagically every module you choose, it won't take long, so please wait, after booting with this freshly-baked linux kernel, you can load them as usual.

Prepare your bzImage
This is simple, what you are going to do is to copy 2 files, "System.map" and "bzImage", follow this steps at your terminal (with root right's of course !):

# cp arch/i386/boot/bzImage /boot/bzImage-<version>
# cp System.map /boot/System.map-<version>
# ln -s /boot/System.map-<version> /boot/System.map

<version> refers to the version you downloaded and compiled, this MUST match with this three given instructions.

Create initrd image
Some systems requires this instruction in order to boot the kernel, no problem, just look at "/lib/modules" for the "<version>" you just downloaded and compiled, take this data and do the following inside the "/boot" directory:

# mkinitrd /boot/initrd-<version>.img <version>

If success, nothing will returned, at any errors please read the output and figure it out the correct version you're compiling and installing.

Prepare GRUB and reboot
Finally, prepare "GRUB" for our new kernel image ! first of all, make a backup of /boot/grub/menu.lst and edit this file appending the following matching your new kernel image:

title My Distro (<version>)
title Test Kernel (<version>)
root (hd0,0)
kernel /boot/bzImage-<version> ro root=LABEL=/
initrd /boot/initrd-<version>.img


Please be sure about your HD device, one useful tip is to look and use the configuration from your distro root hd kernel. Be sure about every file path (bzImage and initrd), if everything's OK, then save and... reboot !

Take notes about any event or case
After rebooting, choose "Test Kernel" or any name you input here and check any errors you could have, when you arrive to runlevel 5, run the graphic server, interact with your computer, etc... This information will guide you to any misconfigured kernel parameter or missing module to load, I can't help much around here but If you got a functional system you'll notice that this recent kernel is way more fast than the distro ones... and the confidency that you compiled and tuned it, congratulations ! My job ends here !

Postamble
Thanks for reading ! I hope this would come in handy, before sending any questions or comments, try to read a complete Howto, they include for sure more FAQ's and troubleshooting, this is just an "Starting" guide, I'll appreciate any suggestions, corrections, addings or anything CONSTRUCTIVE. Well, again... Thank's for reading !!!

Reference
http://www.digitalhermit.com/linux/K...ild-HOWTO.html

 

 

 

 

总结:

 

#tar jxvf linux-2.6.16.bz2 
#cd linux-2.6.16
#make xconfig 或者 make menuconfig
#make
#make modules_install install

 

 

 

 

分享到:
评论

相关推荐

    Android代码-仿微信图片选择

    compile 'me.iwf.photopicker:PhotoPicker:0.9.12@aar' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:recyclerview-v7:23.4.0' compile '...

    nis-utils-1.4.1

    * src/nislog/Makefile.am: Don't compile and install nislog 2001-04-23 Thorsten Kukuk &lt;kukuk@suse.de&gt; * release version 1.4 * src/nispasswd/npd_upd_pwd.c: Include time.h. (npd_upd_pwd): Add ...

    Android代码-WsManager

    WsManager A library that simplifies the use of OkHttp ...How to use Instantiate a WsManager object: OkHttpClient okHttpClient = new OkHttpClient().newBuilder() .pingInterval(15, TimeUnit.SECONDS)

    How_to_Compile_Linux_kernel_2.6

    目前的Linux内核版本是2.6.x,本文讲述如何编译当前的内核,喜欢编译内核的人可以以之为参考一试。内容相对比较新,是英文的。

    Android代码-Android_Slide_To_Close

    // Gradle高版本这里可以使用implementation代替compile // x.x.x代表上方表格中对应模块最新版本 compile 'com.youngfeng.android:snake:x.x.x' annotationProcessor '...

    Android代码-Interessant

    compile 'io.reactivex:rxandroid:1.2.1' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' compile 'com.trello:rxlifecycle:0.7.0' c

    Android代码-一个封装的SuperAdapter

    You won't need to write ViewHolder, createView, setTag, getTag, and confuse how to setOnItemClickListener to RecyclerView, etc. The only thing you really need to do is that implement a method onBind...

    steps-to-compile-linux-kernel.rar_linux

    linux内核的编译步骤。适用于linux的学习

    compile_Linux_kernel.rar_compile linux kernel_linux 2.2.5_编译内核_进

    内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性...本文将以RedHat Linux 6.0(kernel 2.2.5)为操作系统平台,介绍在Linux上进行内核编译的方法。

    Android代码-阅读平台项目

    compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile 'com.android.support:design:23.4.0' compile '...

    Android代码-Android-Next

    compile 'com.mcxiaoke.next:core:1.5.0' // task 异步任务库,格式:jar和aar compile 'com.mcxiaoke.next:task:1.5.0' // http HTTP组件, 格式:jar和aar compile 'com.mcxiaoke.next:http:1.5.0' // 函数操作...

    Android代码-一个万能自定义UI性能高效的日历控件

    CalenderView An elegant CalendarView on Android platform. Freely draw UI with ...How to use? English Doc 中文使用文档 proguard-rules -keepclasseswithmembers class * { public (android.content.Context);

    arm 交叉编译工具 compile-4.3.2.tar.gz 分包压缩后第一包

    下载交叉编译工具 compile4.3.2.tar.gzaa 和 compile4.3.2.tar.gzab 放到linux上 同一目录下,使用解压命令: cat compile4.3.2.tar.gza* | tar xz 解压命令进行解压,生成完整的交叉编译工具。

    LZX格式解压缩源代码

    /* encourage overruns in the buffers to make things as fast as possible. */ /* All the time is taken up in crc_calc() and decrunch() so they are */ /* pretty damn optimized. Don't try to understand ...

    modutils 2.4.27 compile-pass kernel-2.6

    embedded linux kernel 2.6 update tool compile-pass under gcc @ redhat

    DORK TOOL PACK_Dorktool_

    Windows DLLs)*.dll*.so*.so.**.dylib# Executables*.exe*.out*.app*.i*86*.x86_64*.hex# Debug files*.dSYM/*.su*.idb*.pdb# Kernel Module Compile Results*.mod**.cmd.tmp_versions/modules.orderModule....

    Cython封装Callback函数 示例

    Cython封装Callback函数文章 示例 http://blog.csdn.net/i2cbus/article/details/18415333

    elasticsearch-head-compile-after.tar.gz+node-v8.1.2-linux-x64.ta

    elasticsearch-head-compile-after.tar.gz+node-v8.1.2-linux-x64.ta

    Android代码-Android app新手引导

    compile 'com.yuyh.easyguideview:library:1.2.2' 基本使用 // 须在View绘制完成之后调用,否则可能无法准确显示 // offsetX:正数代表从屏幕左侧往右偏移距离,负数表示从屏幕右侧往左偏移距离。Constant.CENTER ...

Global site tag (gtag.js) - Google Analytics