ubuntu 12.04 内核裁剪内核有哪些方法

Ubuntu&删除旧内核方法
06.19.2010 · Posted in
首先查看电脑中存在的系统内核版本,在终端输入:
--get-selections|grep
如果出现1个以上的2.6.xx字样,说明系统中存在多个内核。那么,删掉无用的内核吧(当然也有人喜欢保留多个以备不时之需)。在删除其他内核之前要确认自己现在使用的版本,用命令查看:
落落的电脑出现以下信息:
luo-ubuntu 2.6.32-22-generic
#36-Ubuntu SMP Thu Jun 3 22:02:19 UTC
说明目前使用的是Linux
2.6.32-22版本的内核(目前也是Ubuntu中最近更新的),需要删除2.6.32-21,有2种方法:
第1种:使用命令行
apt-get remove linux-image-2.6.32-21-generic
apt-get remove linux-headers-2.6.32-21-generic
其中2.6.32-21是要删除的版本,如果要删除多个旧内核分别依次使用命令删除。
卸载后,在启动菜单里还有其选项,这样我们需要修改启动菜单,用命令打开menu.lst
sudo gedit
/boot/grub/menu.lst
然后找到不需要的菜单将其删除,另外还要注意修改default的值来改变默认启动项。
第2种:使用新立得软件管理(推荐)
System(系统)-Administation(管理)-Synaptic Package
Manager(新立得软件管理),搜索“2.6.32-21”(要删除的linux内核版本号),找到以下类似内容:
linux-headers-2.6.32-21
linux-headers-2.6.32-21-generic
linux-image-2.6.32-21-generic
选中右键 mark for complete removal(标记以便彻底删除),然后点击Apply(应用)。
OK,这样我们已经把Ubuntu中旧的Linux内核删除。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。博客访问: 176624
博文数量: 57
博客积分: 388
博客等级: 一等列兵
技术积分: 1026
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
本文参考了《Linux 2.6.19.x 内核编译配置选项简介》,谢谢原作者。还有和的作者,非常感谢你们。
2.6.28内核虚拟机里测试通过,开机进桌面的速度提高了大约一倍,编译出来的体积因为我要做内核开发,所以加入了内核调试信息等选项,最后是3mb左右。
make menuconfig 配置内核
cd /usr/src/linux-2.6.N
make menuconfig
注意:用源码编译的时候会在当前目录下产生很大的输出文件大约为2-3个G,编译前要看看当前位置空间是否够用,当然源码放在任何地方都行的 编译安装成功后 这个文件就可以全部删除掉。若不想更换源码文件的位置,可以指定编译输出文件的位置如:
make O=/home/name/build/kernel&&& make O=/home/name/build/kernel menuconfig
General setup选项Prompt for development and/or incomplete code/drivers选上Local version 加上自己的名字,如.saiSupport for paging of anonymous memory (swap) 使用交换分区或交换文件来做为虚拟内存,一定要选上System V IPC表示系统的进程间通信Inter Process Communication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来,也是必选的Auditing support去掉,用不着审计Control Group support 去掉Group Scheduling CPU组调度,桌面用户可以不选Namespaces全去掉Initial RAM和Optimize for size选上。Activatie markers激活标志,默认选上的,不知道是什么,我没改。Kprobes提供了内核编程时一种事务反射的机制,不做内核编程的就去掉,我是选上了。
Loadable module support选项默认的就可以,我要做内核开发,所以选上了Forced module unloading,以后可能有点用
Block layer选项 全部去掉,最后一个IO Schedulers是IO调度器 Anticipatory I/O scheduler 假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器) Deadline I/O scheduler 使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)CFQ I/O scheduler使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统Default I/O scheduler默认IO调度器我只留了CFQ I/O scheduler
5Processor type and features选项High Resolution Timer Suppor支持高频率时间发生器,大多数个人PC并没有这个必要,我去掉了Symmetric multi-processing support多核cpu就选上Enable MPS table是64位cpu的acpi支持,去掉Single-depth WCHAN output不知道是什么,默认选上我就没动Processor family处理器系列,请按照你实际使用的CPU选择,大部分情况选586Generic x86 support通用x86支持,如果你的CPU能够在上述"Processor family"中找到就别选,安全起见,我还是选了。HPET Timer Support替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以选上。Maximum number of CPUs支持的最大CPU数,每增加一个内核将增加8K体积,我填了2SMT (Hyperthreading) scheduler support支持Intel的超线程技术,最好选上Multi-core scheduler support针对多核CPU进行调度策略优化,多核就选上吧Enable X86 board specific fixups for reboot修正某些旧x86主板的重起bug,这种主板基本绝种,放心去掉/dev/cpu/microcode - Intel IA32 CPU microcode support可以放心去掉。/dev/cpu/*/msr - Model-specific register support在多cpu系统中让特权CPU访问x86的MSR寄存器,内核开发可能有用,不然你就去掉吧,反正我留下了。/dev/cpu/*/cpuid - CPU information support能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID),内核开发可能有用,不然你就去掉吧,反正我留下了。High Memory Support最高内存支持,一般来说没几个人的内存大于4G就选它吧。64 bit Memory and IO resources使用64位的内存和IO资源去掉Allocate 3rd-level pagetables from highmem3层页表去掉,除非你的内存很大很大。Math emulation数学协处理器仿真,486DX以上的cpu就不要选它了,我没选。Timer frequency内核时钟频率,桌面推荐"1000 HZ",服务器推荐"100 HZ"或"250 HZ"x86 PAT support使用PAT(Performance Acceleration Technology)性能加速技术属性来对页面级缓存控制进行设置,可选可不选。EFI runtime service support除非你的系统支持EFI(一种可代替传统BIOS的技术)否则不选,我没选。Enable seccomp to safely compute untrusted bytecode只有嵌入式系统可以不选,普通pc那就选上吧。kexec system call提供kexec系统调用,可以不必重启而切换到另一个内核,如果需要就选择,对大多数用户来说并不需要,去掉。Build a relocatable kernel可重定位内核,没必要,可选可不选
Power management options选项Power Management Debug Support 仅供调试使用,去掉其他保持默认
Bus options选项保持默认即可。
8Executable file formats选项Kernel support for ELF binaries和Kernel support for MISC binaries 选上
9Networking support选项Amateur& Radio support去掉。wireless如不要无线也去掉,我就去掉了。Networking options中如下:IP: multicasting 群组广播,似乎与网格计算有关,仅在使用MBONE的时候才需要,去掉。IP: advanced router 高级路由,如果想做一个路由器就选,不然去掉。IP: kernel level autoconfiguration 在内核启动时自动配置ip地址/路由表等,需要从网络启动的无盘工作站才需要这个东西,可选可不选,我去掉了。IP: TCP syncookie support 抵抗SYN flood攻击的好东西,要启用它必须同时启用/proc文件系统和"Sysctl support",然后在系统启动并挂载了/proc之后执行"echo 1 >/proc/sys/net/ipv4/tcp_syncookies"命令,我再虚拟机中用不着就去掉了。802.1d Ethernet Bridging 选上。剩下的默认都可以不改,视需要添加。
Device Drivers选项Connector - unified userspace
kernelspace linker 统一的用户空间和内核空间连接器,工作在netlink socket协议的顶层.不确定可以不选。Misc devices 杂项设备去掉。ATA/ATAPI/MFM/RLL support 通常是IDE硬盘和ATAPI光驱.纯SCSI系统且不使用这些接口可以不选。Macintosh device drivers去掉。Network device support中去掉Ethernet(10000 Mbit)和Networlk console logging support。Partition Types和Network File Systems我全去掉了,用不着。input device support中Event interface 去掉Joysticks 游戏杆驱动去掉Touchscreens 触摸屏驱动去掉Miscellaneous devices 其他杂项驱动,一般选个PC喇叭即可,我全去掉了
Character devices中Non-standard serial port support 非标准串口支持.这样的设备早就绝种了,去掉Serial drivers 我全部去掉了,你要用串口就添加。/dev/nvram support 直接存取主板上CMOS的接口,去掉。
HPET - High Precision Event Timer 高精度事件定时器 ,如果需要就选中,然后将下面的Allow mmap of HPET也选中,不需要就去掉吧I2C support I2C是Philips极力推动的微控制应用中使用的低速串行总线协议,可用于监控电压/风扇转速/温度等.SMBus(系统管理总线)是I2C的子集.除硬件传感器外"Video For Linux"也需要该模块的支持。。。。反正我去掉了。下面的多媒体设备,显卡设备,声卡选项没改,麻烦。HID里的调试选项去掉。剩下的不用改了,够精简了。
11Firmware选项,全部去掉
12File systems选项默认的选上了ext3,视你的文件系统添加。Dnotify去掉,老式的。Inotify留下,新式的。Quota support磁盘配额支持,限制某个用户或者某组用户的磁盘占用空间,Ext2/Ext3/Reiserfs都支持它,视你的需要选择,我没选Kernel automounter version 4 support这个默认,不用改。DOS/FAT/NT Filesystems中Default iocharset for FAT 默认字符集,中文需求改成cp936NTFS file system support选上。NTFS write support 选上。Network Fille Systems和Partition Types全去掉。Native Language Support 选上simplified chinese。
13Kernel hacking选项搞开发的后面有basic checks的选项最好都选上。另外Built-in kernel Debugger support(打上kdb补丁)和Complie the kernel with debug info驱动开发者必备,然后参考我的KDB一文将必要选项加上。
14Security options选项若有selinux,坚决去掉。其实为了追求效率我是全部都去掉了。。。。
Cryptographic options选项。默认选中了md5,sha,aes,des,可以不用改了。
16Virtualzation选项和Library routines选项默认即可,不用改了。
17 最后是安装,
一键命令 make all modules_install install
其中 make all& 包括& make& bzImage 和 make modules 两个命令
18 选择开机启动使用该内核
修改/etc/grub.conf 中 default值 如:我用的是2.6.30的内核 ,default=0
default=0timeout=0#splashimage=(hd0,0)/grub/splash.xpm.gzhiddenmenutitle Fedora (2.6.30)&&&&&&& root (hd0,0)&&&&&&& kernel /vmlinuz-2.6.30 ro root=UUID=e2f9313e-ec34-4a17-bc6d-89d34f44671e selinux=0 audit=0 nomodset console=ttyS0,115200&&&&&&& initrd /initrd-2.6.30.imgtitle Fedora (2.6.27.5-117.fc10.i686)&&&&&&& root (hd0,0)&&&&&&& kernel /vmlinuz-2.6.27.5-117.fc10.i686 ro root=UUID=e2f9313e-ec34-4a17-bc6d-89d34f44671e selinux=0 audit=0 nomodset console=ttyS0,115200&&&&&&& initrd /initrd-2.6.27.5-117.fc10.i686.img
注意: 不同系统使用内核是有要求的,高版本的系统使用低版本的内核时,在编译安装是都不会出现错误,但是启动时进不去系统。一般情况下编译内核要高于系统默认的内核版本。
阅读(3481) | 评论(0) | 转发(2) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
<div forimg="1"
style="font-family: A word-wrap: break- word-break: break- visibility: visible !imp zoom: 1 !imp filter: font-size: 12 line-height:"
>5.编译内核只需要运行 make就行了#make执行之前可以先运行make clean 清空生成的内核文件,或者编译中间有问题了,想重新编译,可以用这个先清空已经生成的内核文件我在ubuntu9.04 系统里面执行make 命令, 结果make一次花的编译时间应该在一个小时左右。这个make相当于,手工执行了一下两步:# make bzImage&# make modules (编译可加载模块)其中make bzImage 将在 /usr/src/ linux-2.6.25.7-widebrihgt/arch/i386/boot 目录下生成一个名字为bzImage的内核镜像文件。 make zImage 命令其实可以生成内核镜像的,bzImage 的区别就是它是压缩的。make modules 则是生产大量的 *.ko 内核文件,就是模块化的内核驱动等等吧,你不把它编译进去bzImage里面去的都会另外单独生成的一个ko文件了,以后需要的时候再由内核加载这个ko模块。6.安装内核(1)执行&make install&命令&&&&&&&&&我运行了这一步后,提示需要在GRUB menu.lst 配置文件中把 入口 点指向 /boot/vmlinuz-2.6.25.7widebright 文件。 应该是已经把上面一步生成的bzImage复制到系统的 /boot 目录去了, ls-l看一下 /boot 目录,可以已经把vmlinuz 文件链接到 vmlinuz-2.6.25.7widebright 文件 System.map文件链接到&& System.map-2.6.25.7widebright 文件,config 文件链接到 config-2.6.25.7widebright 文件。(2)没有看到模块的配置信息输出,所以我又执行了一下&make modules_install&命令,这个是安装模块的。这个会安装很多 ko文件,最后输出 DEPMOD 2.6.25.7widebright。不懂这个流程是什么样子的。不过在/lib/modules/ 目录下面生成了一个 2.6.25.7widebright的目录,下面 目录就是上面make modules生成的那些ko内核模块文件。(3) 我上面的编译过程好像没有生成initrd镜像文件,不知道怎么回事,只好手工来了。什么是initrd镜像请看最后附的那篇文章生成initrd镜像文件,redhat系统下面用new-kernel-pkg 命令应该就可以了,后面那篇文章说的mkinitrd命令不知道是什么系统。 ubuntu系统下面在网上搜索了一下,应该是用 mkinittramfs 命令来生成的。运行一下 "mkinitramfs -o initrd.img-2.6.25.7widebrihgt&& 2.6.25.7widebrihgt" ,将在当前目录下生成一个名字为 initrd.img-2.6.25.7widebrihgt大小7.1M左右的initrd 镜像文件。最后我把它移到 /boot/ 目录里面去——“cp initrd.img-2.6.25.7widebrihgt /boot/”注意:最后那个参数“2.6.25.7widebrihgt” 是version,指定 内核版本,就是/lib/modules/ 目录下相应的文件夹名字。这个一定要指定的,不然他默认使用的是正在运行的系统的版本,最后系统就不能引导成功。(4)检查一下 grub的配置文件cat /boot/grub/menu.lst , 看来make install 命令没有自动把新编译的内核的配置写到grub的配置文件里面。修改 timeout 属性 为 10,让等待的时间长一点,然后仿造原有的配置新建一项放在最前面,因为一开始的default 的值设置为0的,默认是第一项。增加的内容如下title&&& &&& Ubuntu 8.04, kernel 2.6.25-7-widebrightroot&&& &&& (hd0,0)kernel&&& &&& /boot/vmlinuz-2.6.25.7widebright root=UUID=a082d103-894e-443a-bf58-8b128c7e5dd1 ro quiet splash locale=zh_CNinitrd&&& &&& /boot/initrd.img-2.6.25.7widebrightquiet注意其中的 kernel 和initrd 都指向自己的镜像文件。 root的 UUID可能没个人都不一样的,可以参考GRUB的配置文件说明。做完上面步骤之后,重启系统,等到系统提示按 ESC 键的时候,可以选择和进入GRUB的菜单。可以看到自己的内核版本已经显示出来了。选择进入之后,一切正常。使用uname -a 命令查看,可以看到当前内核已经被更新了
阅读(1153)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_085069',
blogTitle:'Ubuntu下通用方法编译内核',
blogAbstract:'1. 下载内核源代码'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}删除ubuntu旧内核的方法
作者:佚名
字体:[ ] 来源:互联网 时间:04-03 23:26:56
这篇文章主要介绍了删除ubuntu旧内核的方法,需要的朋友可以参考下
ubuntu的内核经常升级,而老内核并不自动卸载.时间长了,就有一大堆内核垃圾,需要我们手动去清理. &先用uname -a 查看当前内核版本:代码如下:xzc@xzc-HP-ProBook-4446s:~$ uname -aLinux xzc-HP-ProBook-.0-46-generic #77-Ubuntu SMP Mon Mar 2 18:23:39 UTC
x86_64 x86_64 GNU/Linux
可见当前版本为3.13.0-46
&用dpkg --get-selections|grep linux看一下当前系统安装的内核版本:
代码如下:xzc@xzc-HP-ProBook-4446s:~$ dpkg --get-selections|grep linuxlibselinux1:amd64
installlinux-firmware
installlinux-generic
installlinux-headers-3.13.0-46
installlinux-headers-3.13.0-46-generic
installlinux-headers-generic
installlinux-image-3.13.0-46-generic
installlinux-image-extra-3.13.0-44-generic
deinstalllinux-image-extra-3.13.0-46-generic
installlinux-image-generic
installlinux-libc-dev:amd64
installlinux-signed-generic
installlinux-signed-image-3.13.0-44-generic
deinstalllinux-signed-image-3.13.0-46-generic
installlinux-signed-image-generic
installlinux-sound-base
installpptp-linux
installsyslinux
installsyslinux-common
installsyslinux-legacy
installutil-linux
其中linux-headers、linux-image、linux-signed开头的都是跟内核相关的.带有版本号的(如linux-image-extra-3.13.0-44-generic)才是可以删除的.注意不要删除当前使用的版本.后面的install表示已安装,deinstall表示曾经安装过,现在已被删除(已不占空间).
&sudo apt-get purge来删除
sudo apt-get purge linux-image-extra-3.13.0-44-genericsudo apt-get purge linux-signed-image-3.13.0-44-genericsudo apt-get purge linux-headers-3.13.0-44(这个好像会自动把linux-headers-3.13.0-46-generic删除,如果未删,则sudo apt-get purge linux-headers-3.13.0-46-generic)
注意不要使用sudo apt-get remove来删除,会出现linux-signed-image-3.13.0-44-generic deinstall.当然这时再运行purge也是可以删除的.
&使用sudo update-grub更新启动菜单
有网友用正则表达式写了一个脚本,没试过脚本效果怎么样:
代码如下:dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
大家感兴趣的内容
12345678910
最近更新的内容11597人阅读
driver kernell相关知识(8)
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:64946次
排名:千里之外
原创:16篇
(2)(5)(4)(2)(2)(3)(1)}

我要回帖

更多关于 ubuntu 12.04 内核 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信