内核编译 菜鸟版教程
时间:2010-10-17 来源:lgj8514752
编译内核的方法貌似很多,网上的说法纷纷扬扬的,然后偶也试了好多次,只有通过以下的步骤(下面内容的原地址已丢失,因此没办法设成转载,在这给本文的原作者表示深深的歉意,希望作者能够给于理解),终于成功的在ubuntu下编译了一次内核,心情万分畅快,因此分享给大家,希望鸟鸟们能够一起进步,慢慢的步入内核的世界~~
第一步:准备工作 打开终端获得root权限:sudo su 然后安装编译内核时需要的工具: apt-get install build-essential kernel-package libncurses5-dev libqt3-headers build-essential (基本的编程库(gcc, make等)
kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具) libncurses5-dev (meke menuconfig要调用的) libqt3-headers (make xconfig要调用的) 其他工具在升级过程中可以按提示安装 第二步:下载内核源代码linux-2.6.34.tar.gz 请到www.kernel.org官网下载最新版本linux-2.6.34.tar.gz内核 假设下载在root目录,然后解压到/usr/src/linux-2.6.34目录里 cd /usr/src tar zxvf /root/linux-2.6.34.tar.gz 解压后会在/usr/src生成新文件夹linux-2.6.34 第三步:配置 把正在使用中的内核配置文件/usr/src/linux-headers-2.6.32-22-generic/.config 拷到/usr/src/linux-2.6.34目录下 cp /usr/src/linux-headers-2.6.32-22-generic/.config /usr/src/linux-2.6.34 执行: cd /usr/src/linux-2.6.34 make menuconfig 终端会弹出一个配置界面 注意主菜单最后有两项:load a kernel configuration... save a kernel configuration... 先选第一项load ....,意思是,利用当前的内核配置详单来设置将要编译的内核,然后选save这一项保存,最后退出配置界面。
第四步:开如编译安装新内核 执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行) 执行:sudo make (编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度) 然后:sudo make install 再:sudo make modules (编译模块) 再:sudo make modules_install (安装模块) 最后创建initrd文件: mkinitramfs -o /boot/initrd.img-2.6.34 第五步:更新配置GRUB引导列表 sudo gedit /boot/grub/grub.cfg 我的grub.cfg添加如下: menuentry 'Ubuntu 10.04,Linux 2.6.34' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 set root='(hd1,9)' search --no-floppy --fs-uuid --set 501d3a42-1d52-4438-99bf-e679da605867 linux /vmlinuz-2.6.34 root=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro quiet splash initrd /initrd.img-2.6.34 } #以下是原2.6.32内核启动项 menuentry 'Ubuntu,Linux 2.6.32-22-generic' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 set root='(hd1,9)' search --no-floppy --fs-uuid --set 501d3a42-1d52-4438-99bf-e679da605867 linux /vmlinuz-2.6.32-22-generic root=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro quiet splash initrd /initrd.img-2.6.32-22-generic } 到此为止,整个内核的编译就全部完成啦。 不过也许你重启系统时,虽然启动菜单中增加了新内核2.6.34的启动项,但极可能会启动失败,出现以下提示: warning:can't open directory /lib/modules/2.6.34/modules.dep,no such files or directory
此时不应气馁,玩LINUX要有敢食螃蟹的勇气和毅力,哈哈。静下心,选择从旧内核启动登录系统,然后执行以下命令(为了避免输入错误,最好复制下面的命令)修改后就能成功启动新内核了。
###################################### sudo su (保证获得root权限,否则会提示权限不够,不能成功完成任务哦) cd /boot cp initrd.img-2.6.34 initrd-2.6.34.old (先做一个备份以防万一,哈哈) depmod -a update-initramfs -k 2.6.34 -c cd /tmp gzip -dc /boot/initrd.img-2.6.34| cpio -id touch lib/modules/2.6.34/modules.dep find ./ | cpio -H newc -o > /boot/initrd.img-2.6.34.new gzip /boot/initrd.img-2.6.34.new cd /boot mv initrd.img-2.6.34.new.gz initrd.img-2.6.34
第一步:准备工作 打开终端获得root权限:sudo su 然后安装编译内核时需要的工具: apt-get install build-essential kernel-package libncurses5-dev libqt3-headers build-essential (基本的编程库(gcc, make等)
kernel-package (Debian 系统里生成 kernel-image 的一些配置文件和工具) libncurses5-dev (meke menuconfig要调用的) libqt3-headers (make xconfig要调用的) 其他工具在升级过程中可以按提示安装 第二步:下载内核源代码linux-2.6.34.tar.gz 请到www.kernel.org官网下载最新版本linux-2.6.34.tar.gz内核 假设下载在root目录,然后解压到/usr/src/linux-2.6.34目录里 cd /usr/src tar zxvf /root/linux-2.6.34.tar.gz 解压后会在/usr/src生成新文件夹linux-2.6.34 第三步:配置 把正在使用中的内核配置文件/usr/src/linux-headers-2.6.32-22-generic/.config 拷到/usr/src/linux-2.6.34目录下 cp /usr/src/linux-headers-2.6.32-22-generic/.config /usr/src/linux-2.6.34 执行: cd /usr/src/linux-2.6.34 make menuconfig 终端会弹出一个配置界面 注意主菜单最后有两项:load a kernel configuration... save a kernel configuration... 先选第一项load ....,意思是,利用当前的内核配置详单来设置将要编译的内核,然后选save这一项保存,最后退出配置界面。
第四步:开如编译安装新内核 执行:sudo make mrproper (清除以前曾经编译过的旧文件,如果你是第一次编译,可不执行) 执行:sudo make (编译,可以加-j4,如果你CPU是双核心,够牛的话,因为可以提高速度) 然后:sudo make install 再:sudo make modules (编译模块) 再:sudo make modules_install (安装模块) 最后创建initrd文件: mkinitramfs -o /boot/initrd.img-2.6.34 第五步:更新配置GRUB引导列表 sudo gedit /boot/grub/grub.cfg 我的grub.cfg添加如下: menuentry 'Ubuntu 10.04,Linux 2.6.34' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 set root='(hd1,9)' search --no-floppy --fs-uuid --set 501d3a42-1d52-4438-99bf-e679da605867 linux /vmlinuz-2.6.34 root=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro quiet splash initrd /initrd.img-2.6.34 } #以下是原2.6.32内核启动项 menuentry 'Ubuntu,Linux 2.6.32-22-generic' --class ubuntu --class gnu-linux --class gnu --class os { recordfail insmod ext2 set root='(hd1,9)' search --no-floppy --fs-uuid --set 501d3a42-1d52-4438-99bf-e679da605867 linux /vmlinuz-2.6.32-22-generic root=UUID=33883099-83a5-49f3-9c12-ee6a4d90da9e ro quiet splash initrd /initrd.img-2.6.32-22-generic } 到此为止,整个内核的编译就全部完成啦。 不过也许你重启系统时,虽然启动菜单中增加了新内核2.6.34的启动项,但极可能会启动失败,出现以下提示: warning:can't open directory /lib/modules/2.6.34/modules.dep,no such files or directory
此时不应气馁,玩LINUX要有敢食螃蟹的勇气和毅力,哈哈。静下心,选择从旧内核启动登录系统,然后执行以下命令(为了避免输入错误,最好复制下面的命令)修改后就能成功启动新内核了。
###################################### sudo su (保证获得root权限,否则会提示权限不够,不能成功完成任务哦) cd /boot cp initrd.img-2.6.34 initrd-2.6.34.old (先做一个备份以防万一,哈哈) depmod -a update-initramfs -k 2.6.34 -c cd /tmp gzip -dc /boot/initrd.img-2.6.34| cpio -id touch lib/modules/2.6.34/modules.dep find ./ | cpio -H newc -o > /boot/initrd.img-2.6.34.new gzip /boot/initrd.img-2.6.34.new cd /boot mv initrd.img-2.6.34.new.gz initrd.img-2.6.34
相关阅读 更多 +