1、linux内核下载地址 http://www.kernel.org/pub/linux/kernel/ 选择下载
bz2解压缩:tar -xjvf linux-2.6.18.tar.bz2
gz解压缩:tar zxvf linux-2.6.18.tar.gz
2、编译内核:
参考http://hi.baidu.com/cxrg2012/item/4df535d36eecbf41ddf9bee4 或者 http://blog.sina.com.cn/s/blog_7e49bf5e0100y4sr.html
简单来说:
make distclean
在内核源代码目录下
cp /boot/config-2.6.18-194.el5 ./.config
make menuconfig
make bzImage
make modules
make modules_install
mkinitrd initrd-2.6.29 2.6.29
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.29
cp initrd-2.6.29 /boot/
修改
/etc/grub.conf
3、遇到的问题
3.1 make:gcc:command not found
是因为系统没有安装gcc,centos可使用yum安装gcc
1
2
3
4
5
6
7
8
9
|
yum -y
install
gcc
yum -y
install
gcc
-c++
yum
install
make
-- 或者
yum groupinstall
"Development Tools"
-- 或者
yum
install
gcc
gcc
-c++ kernel-devel
|
scripts/kconfig/lxdialog/dialog.h:32:20: 错误:curses.h:没有那个文件或目录
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:97: 错误:expected specifier-qualifier-list before ‘chtype’
scripts/kconfig/lxdialog/dialog.h:187: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/dialog.h:193: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/dialog.h:195: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/dialog.h:196: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/dialog.h:197: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/dialog.h:198: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/dialog.h:200: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/checklist.c:31: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/checklist.c:59: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/checklist.c:95: 错误:expected ‘)’ before ‘*’ token
scripts/kconfig/lxdialog/checklist.c: 在函数 ‘dialog_checklist’ 中:
scripts/kconfig/lxdialog/checklist.c:116: 错误:‘WINDOW’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:116: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其
scripts/kconfig/lxdialog/checklist.c:116: 错误:所在的函数内只报告一次。)
scripts/kconfig/lxdialog/checklist.c:116: 错误:‘dialog’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:116: 错误:‘list’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:116: 警告:逗号表达式的左操作数不起作用
scripts/kconfig/lxdialog/checklist.c:129: 警告:隐式声明函数 ‘getmaxy’
scripts/kconfig/lxdialog/checklist.c:129: 错误:‘stdscr’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:130: 错误:‘KEY_MAX’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:131: 警告:隐式声明函数 ‘getmaxx’
scripts/kconfig/lxdialog/checklist.c:137: 错误:‘COLS’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:138: 错误:‘LINES’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:140: 警告:隐式声明函数 ‘draw_shadow’
scripts/kconfig/lxdialog/checklist.c:142: 警告:隐式声明函数 ‘newwin’
scripts/kconfig/lxdialog/checklist.c:143: 警告:隐式声明函数 ‘keypad’
scripts/kconfig/lxdialog/checklist.c:143: 错误:‘TRUE’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:145: 警告:隐式声明函数 ‘draw_box’
scripts/kconfig/lxdialog/checklist.c:146: 错误:‘struct dialog_color’ 没有名为 ‘atr’ 的成员
scripts/kconfig/lxdialog/checklist.c:146: 错误:‘struct dialog_color’ 没有名为 ‘atr’ 的成员
scripts/kconfig/lxdialog/checklist.c:147: 警告:隐式声明函数 ‘wattrset’
scripts/kconfig/lxdialog/checklist.c:147: 错误:‘struct dialog_color’ 没有名为 ‘atr’ 的成员
scripts/kconfig/lxdialog/checklist.c:148: 警告:隐式声明函数 ‘mvwaddch’
scripts/kconfig/lxdialog/checklist.c:150: 警告:隐式声明函数 ‘waddch’
scripts/kconfig/lxdialog/checklist.c:151: 错误:‘struct dialog_color’ 没有名为 ‘atr’ 的成员
scripts/kconfig/lxdialog/checklist.c:154: 警告:隐式声明函数 ‘print_title’
scripts/kconfig/lxdialog/checklist.c:156: 错误:‘struct dialog_color’ 没有名为 ‘atr’ 的成员
scripts/kconfig/lxdialog/checklist.c:157: 警告:隐式声明函数 ‘print_autowrap’
scripts/kconfig/lxdialog/checklist.c:164: 警告:隐式声明函数 ‘subwin’
scripts/kconfig/lxdialog/checklist.c:171: 错误:‘struct dialog_color’ 没有名为 ‘atr’ 的成员
scripts/kconfig/lxdialog/checklist.c:171: 错误:‘struct dialog_color’ 没有名为 ‘atr’ 的成员
scripts/kconfig/lxdialog/checklist.c:189: 警告:隐式声明函数 ‘print_item’
scripts/kconfig/lxdialog/checklist.c:192: 警告:隐式声明函数 ‘print_arrows’
scripts/kconfig/lxdialog/checklist.c:195: 警告:隐式声明函数 ‘print_buttons’
scripts/kconfig/lxdialog/checklist.c:197: 警告:隐式声明函数 ‘wnoutrefresh’
scripts/kconfig/lxdialog/checklist.c:199: 警告:隐式声明函数 ‘doupdate’
scripts/kconfig/lxdialog/checklist.c:202: 警告:隐式声明函数 ‘wgetch’
scripts/kconfig/lxdialog/checklist.c:210: 错误:‘KEY_UP’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:210: 错误:‘KEY_DOWN’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:220: 错误:‘FALSE’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:221: 警告:隐式声明函数 ‘scrollok’
scripts/kconfig/lxdialog/checklist.c:222: 警告:隐式声明函数 ‘wscrl’
scripts/kconfig/lxdialog/checklist.c:232: 警告:隐式声明函数 ‘wrefresh’
scripts/kconfig/lxdialog/checklist.c:293: 警告:隐式声明函数 ‘delwin’
scripts/kconfig/lxdialog/checklist.c:297: 错误:‘KEY_LEFT’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:298: 错误:‘KEY_RIGHT’ 未声明 (在此函数内第一次使用)
scripts/kconfig/lxdialog/checklist.c:310: 警告:隐式声明函数 ‘on_key_esc’
scripts/kconfig/lxdialog/checklist.c:312: 错误:‘KEY_RESIZE’ 未声明 (在此函数内第一次使用)
make[1]: *** [scripts/kconfig/lxdialog/checklist.o] 错误 1
make: *** [menuconfig] 错误 2
解决方法:
红帽或centos:安装ncurses-devel #yum install -y ncurses-devel
Ubuntu需要安装libncurses5-dev #apt-get install libcurses5-dev