Ubuntu手动更新内核终极教程
- 格式:doc
- 大小:739.50 KB
- 文档页数:9
Linux 内核修改与编译图文教程11、实验目的针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。
2、任务概述2.1 下载新内核/2.2 修改新内核系统调用添加新的系统调用函数,用来判断输入数据的奇偶性。
2.3 进行新内核编译通过修改新版内核后,进行加载编译。
最后通过编写测试程序进行测试3、实验步骤3.1 准备工作查看系统先前内核版本:(终端下)使用命令:uname -r23.2 下载最新内核我这里使用的内核版本是3.3 解压新版内核将新版内核复制到“/usr/src”目录下在终端下用命令:cd /usr/src进入到该文件目录解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令:bzip2 -d linux-2.6.36.tar.bz2tar -xvf linux-2.6.36.tar文件将解压到/usr/src/linux目录中3使用命令:ln -s linux-2.6.36 linux在终端下输入一下命令:sudo apt-get install build-essential kernel-package libncurses5-dev fakerootsudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt453.5 内核修改3.5.1添加新的系统调用在文件:usr/src/ linux /arch//x86/kernel/syscall_table_32.S 最后增加一个系统表项:.long sys_mycall3.5.2 添加系统调用号usr/src/linux/include/ asm-generic /unistd.h 中添加: #define _NR_mycall 245 #define NR_syscalls(343为先前在系统调用表中占用的位置,即为新添加的系统调用分配系统调用号为343)3.5.3添加系统调用的处理函数在usr/src/linux/kernel/sys.c中添加以下处理函数:3.6 清除从前编译内核时残留的.o 文件和不必要的关联(如果从前没有进行内核编译的话,则可以省略这一步)终端下切换至cd /usr/src/linux输入以下命令:63.7 asm、linux和scsi等链接是指向要升级的内核源代码# cd /usr/include/# rm -r asm linux scsi# ln -s /usr/src/linux/include/asm-generic asm# ln -s /usr/src/linux/include/linux linux# ln -s /usr/src/linux/include/scsi scsi73.8配置内核,修改相关参数3.8.1 如何配置内核参数?y:将该功能编译进内核。
Ubuntu编译安装Linux内核过程编译安装Linux内核是Ubuntu系统用户进行内核优化、定制和个性化的重要方式之一、本文将介绍Ubuntu编译安装Linux内核的过程,帮助用户完成编译安装。
## 1. 获取Linux内核源代码##2.安装必要的工具和依赖项在编译安装Linux内核之前,需要安装一些必要的工具和依赖项,以确保编译过程的顺利进行。
你可以通过以下命令来安装它们:```sudo apt updatesudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev```##3.解压源代码```tar -xf linux-x.x.x.tar.xz```##4.进入源代码目录进入解压后的源代码目录:```cd linux-x.x.x```##5.配置内核在继续编译之前,需要对内核进行配置。
你可以使用以下命令打开配置窗口:```make menuconfig```这个命令会打开一个文本界面的配置窗口,你可以在其中选择和配置不同的内核选项。
根据你的需求进行自定义配置。
##6.编译内核完成内核配置后,可以执行以下命令来开始编译内核:```make -j4```这个命令中的“-j4”表示使用4个线程进行编译。
你可以根据你的系统硬件配置自定义线程数量。
编译内核的时间会根据你的系统配置和编译选项的不同而有所不同。
请耐心等待编译过程完成。
##7.安装内核完成编译后,可以执行以下命令来安装编译得到的内核:```sudo make modules_install install```这个命令将编译得到的内核模块和内核文件安装到系统中。
安装完成后,你需要更新系统的引导加载程序(grub)以使用新的内核。
##8.更新引导加载程序执行以下命令来更新引导加载程序(grub):```sudo update-grub```这个命令会自动检测并添加新安装的内核到引导菜单中。
ubuntu12.04 升级内核实战ubuntu 12.04内核是linux 3.2.0-24,其实升级到最新版本3.3.4也没什么很大意义,主要是集成了一些新的驱动和一些普通用户用不到的功能,所以基本上本文纯属折腾,但不要随便升级当班设备啊!好了,不废话了,我们开始...........首先是准备条件:①、有一台装有ubuntu 12.04的机器②、先移步到/下载linux稳定版内核③、拥有root权限④、并将下载好的内核解压到/usr/src下,使用命令如下:#tar jxvf linux-3.3.4.tar.bz2这样你就可以得到一个名叫linux-3.3.4好,现在一切都准备好了,接下来就开始配置,编译,安装新内核吧!1,进入刚才的文件夹/usr/src/linux-3.3.4,输入命令:$ make mrproper该命令的功能在于清除当前目录下残留的.config和.o文件,这些文件一般是以前编译时未清理而残留的。
而对于第一次编译的代码来说,不存在这些残留文件,所以可以略过此步,但是如果该源代码以前被编译过,那么强烈建议执行此命令,否则后面可能会出现未知的问题。
2,配置编译选项作为操作系统的内核,其内容和功能必然非常繁杂,包括处理器调度,内存管理,文件系统管理,进程通讯以及设备管理等等,而对于不同的硬件,其配置选项也不相同,所以在编译源代码之前必须设置编译选项。
其实我觉得这一步是升级内核整个过程中最有技术含量的,因为要根据自己的需要正确选择yes or no需要对计算机方方面面的知识都有所了解。
但是这里的选项实在是太多了,大概有几百项之多,我以前曾尝试着一项一项的选,但是最后还是放弃了,因为有很多选项不是很明白。
既然这样,难道没有什么简便的方法么?当然有!那就是make menuconfig 或者make xconfig。
我使用的是make menuconfig,但是前提条件是要装ncurses。
ubuntu16.04升级内核的⽅法步骤⼀、环境在虚拟机上运⾏的ubuntu16.04 , 使⽤命令uname -r查看当前系统内核版本当前版本为4.15.0-45-generic要升级的内核为4.20.2⼆、准备需要的材料选择对应的⽂件,我的是amd64使⽤命令下载(也可以⽹页下载)wget https:///~kernel-ppa/mainline/v4.20.2/linux-headers-4.20.2-042002_4.20.2-042002.201901171620_all.debwget https:///~kernel-ppa/mainline/v4.20.2/linux-headers-4.20.2-042002-generic_4.20.2-042002.201901171620_amd64.debwget https:///~kernel-ppa/mainline/v4.20.2/linux-image-unsigned-4.20.2-042002-generic_4.20.2-042002.201901171620_amd64.deb wget https:///~kernel-ppa/mainline/v4.20.2/linux-modules-4.20.2-042002-generic_4.20.2-042002.201901171620_amd64.deb三、安装使⽤命令sudo dpkg -i *.deb安装完成后,重启ubuntu系统使⽤命令uname -r查看当前版本号内核升级成功。
四、遇到问题及解决⽅案在安装过程中出现使⽤命令打开该⽂件sudo vi /etc/apt/sources.list保存退出,更新源sudo apt-get update,接下来就可以安装 libssl1.1 了,在终端输⼊命令sudo apt-get install libssl1.1再次执⾏sudo dpkg -i *.deb就可安装成功。
Ubuntu手动更新内核终极教程说明:本人使用的是vmware9.0 + Ubuntu12.04+linux-3.2.35,如果怕出错最好使用这种组合。
(本教程大概半个小时能搞定)1、首先在vmware中新建一个虚拟机至此虚拟机创建完毕。
2、安装Ubuntu系统,安装过程略,可以参考我的另一份vmware安装ubuntu的文档。
3、安装好系统之后,进入系统打开ubuntu软件中心,在菜单中选择编辑然后选择软件源,接着就会打开一个软件源的配置对话框。
在下方的源下拉列表中选择other(其它),然后找到china(中国),在中国的镜像站点中选择,然后点击对话框的选择服务器按钮,关闭退出即可。
4、打开ubuntu终端,快捷键是“ctrl+alt+t”,输入sudo apt-get update更新软件仓库。
更新完之后再输入sudo apt-get upgrade升级系统,若有提示语言支持不完整可以根据提示安装缺省的语言包。
操作完成之后需要重启系统。
5、安装更新内核过程中需要的一些软件,输入以下命令即可sudo apt-get install build-essentialsudo apt-get install kernel-packagesudo apt-get install libncurses5-dev6、去下载需要的内核,本人下载的是linux-3.2.35。
7、打开终端,进入到下载的linux内核目录,执行tar -xvf linux-3.2.35.tar.bz2 -C /usr/src将内核解压到/usr/src目录。
8、在终端输入cd /usr/src/lnux-3.2.35进入解压后的内核文件夹9、执行sudo make localmodconfig 自动使用系统原有内核配置文件进行内核精简,快速可靠。
10、如果之前编译过内核,先执行以下命令清除以下编译的垃圾文件,头一次编译就不需要了。
ubuntu内核升级及卸载ubuntu下内核的升级与卸载很多用户一般都会选择Windows + Ubuntu的双系统。
用得时间久了,随着Ubuntu内核的不断升级,开机启动菜单会变得越来越臃肿。
下面简单介绍一下如何删除开机启动菜单多余的内核(旧版本),以及如何调整不同操作系统的启动顺序。
Ubuntu是由grub引导启动的。
每当Ubuntu升级到新的版本后,grub会自动调整开机启动菜单的顺序,把新的内核放在启动菜单的开始,同时也不会删除久的内核版本。
这样,当Ubuntu的升级次数一多,启动菜单中将变得非常臃肿。
而且那些旧版本的内核基本不会用,不如删除之。
解决方案如下:1.找出系统已经安装的内核版本,在终端里输入命令:dpkg --get-selections | grep linux-image然后会显示系统中已安装的内核,例如:linux-image-2.6.35-22-generic installlinux-image-2.6.38-10-generic installlinux-image-2.6.38-11-generic installlinux-image-2.6.38-8-generic installlinux-image-3.0.0-12-generic installlinux-image-generic install2.卸载旧的内核版本,在终端里输入命令:sudo apt-get remove linux-image-2.6.35-22-genericlinux-image-2.6.38-8-genericlinux-image-2.6.38-10-genericlinux-image-2.6.38-11-generic上面命令和含义是:dpkg --get-selections [ ...] 把已选中的软件包列表打印到标准输出;grep linux-image 匹配查找;uname -a 查看已安装的linux内核版。
Ubuntu16.04修改内核启动 写这篇⽂章⼀是为了对遇到同样问题的⼈提供⼀个参考,⼆来也是为了⾃⼰便于总结和查阅。
希望⼤神勿喷。
好了,废话不多说了,转⼊正题。
前⼏天给⾃⼰的电脑装了个Ubuntu16.04LTS,⾃⼰顺⼿就把⾥边的软件什么的升级了⼀下。
不知怎么地把内核升级到了4.8.0-26-generic,然后电脑就USB⽼出⽑病(在开机之前插上优盘的话可以读出优盘,开机后插上就没反应,但USB可以有电)。
⽿机也不能⽤了,喇叭也没声⾳。
⾃⼰也不懂怎么回事,就各种百度,Google。
⽹上好多⼈说是内核和硬件不兼容,⼀般把显卡驱动卸载了就好了。
我试了⼀下没有成功。
后来注意到开机的时候提⽰Failed to start Load Kernel Modules。
然后就转战内核⽅向。
grep menuentry /boot/grub/grub.cfg1.该命令显⽰内核的启动顺序,⽐如:zgw@zgw-ThinkPad:~$ grep menuentry /boot/grub/grub.cfgif [ x"${feature_menuentry_id}" = xy ]; thenmenuentry_id_option="--id"menuentry_id_option=""export menuentry_id_optionmenuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-5bce3795-da96-4c6f-bed2-67d37185a77d' {submenu 'Ubuntu ⾼级选项' $menuentry_id_option 'gnulinux-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {menuentry 'Ubuntu,Linux 4.8.0-26-lowlatency' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-lowlatency-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {menuentry 'Ubuntu, with Linux 4.8.0-26-lowlatency (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-lowlatency-init-upstart-5bce3795-da96-4c6f-bed2-67d37185a77d'menuentry 'Ubuntu, with Linux 4.8.0-26-lowlatency (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-lowlatency-recovery-5bce3795-da96-4c6f-bed2-67d37185a77d' menuentry 'Ubuntu,Linux 4.8.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-generic-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {menuentry 'Ubuntu, with Linux 4.8.0-26-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-generic-init-upstart-5bce3795-da96-4c6f-bed2-67d37185a77d' {menuentry 'Ubuntu, with Linux 4.8.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-45-generic-recovery-5bce3795-da96-4c6f-bed2-67d37185a77d' {menuentry 'Ubuntu,Linux 4.4.0-21-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-advanced-5bce3795-da96-4c6f-bed2-67d37185a77d' {menuentry 'Ubuntu, with Linux 4.4.0-21-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-init-upstart-5bce3795-da96-4c6f-bed2-67d37185a77d' {menuentry 'Ubuntu, with Linux 4.4.0-21-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.4.0-21-generic-recovery-5bce3795-da96-4c6f-bed2-67d37185a77d' { menuentry 'Memory test (memtest86+)' {menuentry 'Memory test (memtest86+, serial console 115200)' {2. 假设你要以4.4.0-21内核版本启动,则将⽂件/etc/default/grub中 GRUB_DEFAULT=0改为GRUB_DEFAULT=6或者改为GRUB_DEFAULT=”Ubuntu,Linux 4.4.0-21-generic“保存后3. 然后使⽤命令sudo update-grub4.重新启动后输⼊uname -r查看,内核即为想要的内核。
ubuntu16查看内核及新安装内核1.查看内核列表sudo dpkg --get-selections | grep linux-image2.查看当前使⽤的内核uname -r3.升级/安装内核tip:有些时候需要使⽤“sudo dpkg --get-selections -a”重新配置sudo apt-get install linux-image-4.4.0-14[56789]-generic注释:安装145-149存在的所有内核4.删除内核tip:删除当前版本重启会使⽤低⼀级的已安装内核,如果是最后⼀个内核版本删除之后重启会进⼊BIOS界⾯sudo apt-get remove linux-image-4.4.0-142-generic5. 切换内核1.⼿动重启系统,在开机进⼊grub引导界⾯,选择Advanced options for Ubuntu ,进⼊其⼦菜单,⼿动选择内核版本2.⼤部分服务器都是不在⾝边的,都是使⽤远程连接操作的,⽆法做到⼿动重启并桌⾯设置以上操作。
这时可以使⽤第⼆种⽅法。
(1)⾸先查看当前内核版本:uname -r(2)查看服务器启动内核的顺序grep menuentry /boot/grub/grub.cfg这就是ubuntu系统⽬前所拥有的内核版本与启动顺序,记住这个顺序,下⾯要⽤到。
(3)修改启动项终端运⾏命令:sudo vi /etc/default/grubGRUB_DEFAULT=x注释:x为数字,以指定启动列表中第x项为启动项,x从0开始计数GRUB_DEFAULT=”xxxx”注释:指出具体的启动项名称,例如GRUB_DEFAULT=”Ubuntu,with Linux 4.4.0-145-generic”GRUB_DEFAULT=saved注释:该项将使⽤grub-set-default和grub-reboot命令来配置默认启动项保存并退出(4)更新grubsudo update-grub(5)重启服务器sudo shutdown -r now。
Ubuntu手动更新内核终极教程
说明:本人使用的是vmware9.0 + Ubuntu12.04+linux-3.2.35,如果怕出错最好使用这种组合。
(本教程大概半个小时能搞定)
1、首先在vmware中新建一个虚拟机
至此虚拟机创建完毕。
2、安装Ubuntu系统,安装过程略,可以参考我的另一份vmware安装ubuntu的文档。
3、安装好系统之后,进入系统打开ubuntu软件中心,在菜单中选择编辑然后选择软件源,接着就会打开一个软件源的配置对话框。
在下方的源下拉列表中选择other(其它),然后找到china(中国),在中国的镜像站点中选择,然后点击对话框的选择服务器按钮,关闭退出即可。
4、打开ubuntu终端,快捷键是“ctrl+alt+t”,输入sudo apt-get update更新软件仓库。
更新完之后再输入sudo apt-get upgrade升级系统,若有提示语言支持不完整可以根据提示安装缺省的语言包。
操作完成之后需要重启系统。
5、安装更新内核过程中需要的一些软件,输入以下命令即可
sudo apt-get install build-essential
sudo apt-get install kernel-package
sudo apt-get install libncurses5-dev
6、去下载需要的内核,本人下载的是linux-3.2.35。
7、打开终端,进入到下载的linux内核目录,执行tar -xvf linux-3.2.35.tar.bz2 -C /usr/src将内核解压到/usr/src目录。
8、在终端输入cd /usr/src/lnux-3.2.35进入解压后的内核文件夹
9、执行sudo make localmodconfig 自动使用系统原有内核配置文件进行内核精简,快速可靠。
10、如果之前编译过内核,先执行以下命令清除以下编译的垃圾文件,头一次编译就不需要了。
sudo make mrproper
sudo make clean
11、输入sudo make -j4 使用双核加速编译linux内核(经过多台电脑测试发现整个编译加升级过程大概能在半小时内搞定,这也是本教程最大的特点,原因是因为前面利用了自动精简内核的特性了)
12、内核编译完之后,输入sudo make modules_install 安装内核模块。
13、之后再输入sudo make install 安装编译好的内核到系统。
14、输入sudo update-grub 自动配置grub引导文件,经过研究发现此步骤貌似可以省掉,如果不放心还是加上比较好。
15、至此所有的工作基本上算是都完成了,不过如果直接重启的话就无法看到系统启动菜单,选择哪一个内核进入系统了,所以要先手动修改一下grub配置文件。
方法如下:
sudo gedit /boot/grub/grub.cfg
主要修改以下内容
#BEGIN *************OS PROB
之间有两个timeout=0,把0改为10,-1的那个不要动。
#END ***************OS PROB
16、重启系统就可以看到新的启动菜单了,选择新内核就能进入系统了。