linux 换内核 如何查看linux内核版本

ubuntu如何进行切换内核版本全教程

在Ubuntu 16.04 server环境下,遇到内核版本升级导致服务不兼容问题时,可通过切换内核版本来解决。以下是两种方法:

1.当服务器可物理访问时,开机后进入grub引导界面,选择"Advanced options for Ubuntu",然后选择一个低版本的内核启动,如4.15.0-54-generic,解决显卡驱动问题后再运行nvidia-smi。

2.对于远程服务器,操作步骤如下:

-查看当前内核版本和启动顺序,找到对应版本(如4.15.0-54-generic)的启动位置,通常在menuentry中。

-将GRUB_DEFAULT设置为正确的位置,如"1> 7"(注意空格)。

-保存并更新grub,重启服务器。

-重启后确认内核版本是否已更改,如果一切正常,nvidia-smi应该能正常运行。

然而,自动更新可能删除旧内核版本,导致无法找到匹配的驱动。只能切换到启动顺序中的内核,或通过apt-get安装缺失的版本(如`sudo apt-get install linux-image-4.15.0-55-generic`)。

需要注意的是,如果在操作过程中遇到版本缺失,可能需要手动安装对应版本的内核才能完成切换。参考以下链接:

- [ubuntu16.04.2修改内核启动顺序后重启机器未生效_minions_222的博客]()

- [NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.]()

编译运行Linux内核(切换Linux内核版本)

在操作系统的运行过程中,Linux内核扮演着核心角色,管理着系统资源、进程、内存、设备驱动、文件系统等关键部分,其性能和稳定性直接影响着整个系统的运行效率。因此,有时根据特定需求,用户会希望定制一个更适合自身系统的Linux内核版本。这需要用户掌握Linux内核的编译和配置技巧,以灵活调整内核的参数和功能。

在进行Linux内核版本切换前,选择合适的内核版本至关重要。例如,选择5.0.5版本,可以根据实际需求进行深入定制。在进行内核编译之前,需确保所有必要的依赖环境已安装。这些依赖包括开发工具、编译器、构建系统等,它们是内核构建的基础。此外,用户需要确保操作在具有写入权限的目录下进行,通常推荐将内核源码解压到/usr/src目录下,避免对系统文件造成潜在风险。

在开始编译过程之前,使用make menuconfig工具能够提供一个交互式的界面,让用户根据实际需要自定义内核的配置。此步骤允许用户对内核进行深入定制,涵盖安全设置、网络功能、硬件驱动、系统调优等多方面内容。尽管用户可能在菜单中看到复杂且难以理解的选项,但无需立即进行调整,只需选择退出即可继续下一步。

执行编译过程是实现内核定制的关键步骤。由于内核源码庞大,编译过程可能需要较长时间,特别是在没有充分利用多核CPU的情况下。用户可以使用make-j参数来加速编译,其中的数字表示可以并发执行的任务数,一般建议设置为CPU核心数的两倍。例如,对于拥有四核CPU的系统,可以使用make-j8来加速编译过程。

在完成编译并验证内核安装后,接下来的操作是更新grub配置文件,以确保系统在启动时能够正确加载新内核。用户需要访问/boot/grub目录,修改grub.cfg文件,调整timeout值以选择新内核,然后重启系统。在重启后,用户会看到一个选择界面,从中选择新内核即可完成切换过程。

通过上述步骤,用户不仅能够实现Linux内核版本的切换,还能根据自身需求进行定制化配置,进一步优化系统的性能和稳定性。这一过程不仅加深了用户对Linux内核的理解,也为系统的高效运行提供了强大支持。

详解对Linux内核进行升级的步骤

Linux的内核是系统的核心,所以升级内核是Linux系统管理员的一项基本技能,所以我就分享了系统运维实务上的一篇文章,当然我对源文件稍做了一些内容的增加,就是把遇到的问题及解决方案也加上了,希望对各位Linux系统管理员有所帮助!

1.下载内核

复制代码代码如下:cd/usr/src

wget linux/kernel/v2.6/linux-2.6.38.tar.gz">

tar zxvf linux-2.6.38.tar.gz

cd linux-2.6.38

2.下载热点内核标准配置文件

复制代码代码如下:wget

mv config.config

3.编译内核

复制代码代码如下:make menuconfig

选中Load an Alternate Configuration File,然后选择刚下载的。config

另外,要特别选中:

1)、通过make menuconfig选中以下对应的选项

复制代码代码如下:General setup–>

[*] enable deprecated sysfs features to support old userspace tools

2)、修改。config文件

修改。config文件中CONFIG_SYSFS_DEPRECATED_V2,将原本被注释掉的

复制代码代码如下:CONFIG_SYSFS_DEPRECATED_V2改成CONFIG_SYSFS_DEPRECATED_V2=y

注:修改这项是因为旧版的mkinitrd及其nash在内核没有CONFIG_SYSFS_DEPRECATED_V2参数时默认使用旧版sysfs路径格式,从而在新内核下无法正确访问/sys内的硬盘信息节点。

主要是解决"mount:could not find filesystem'/dev/root'"这样的错误

复制代码代码如下:make bzImage

make modules

make modules_install

make install

4.解压修改内核

复制代码代码如下:cp/boot/initrd-2.6.38.img/tmp

cd/tmp/

mkdir newinitrd

cd newinitrd/

zcat/initrd-2.6.38.img|cpio-i

rm-rf/tmp/initrd-2.6.38.img

vi init[/code]

找到这2行一样的,去掉1行

复制代码代码如下:echo"Loading dm-region-hash.ko module"

insmod/lib/dm-region-hash.ko

echo"Loading dm-region-hash.ko module"

insmod/lib/dm-region-hash.ko

这主要是解决:"insmod: error inserting'/lib/dm-region-hash.ko':-1 File exists"这样的错误

5.从新打包内核

复制代码代码如下:find.|cpio-c-o>/initrd

cd/

gzip-9 initrd> initrd-2.6.38img

rm-rf/boot/initrd-2.6.38.img

cp initrd-2.6.38.img/boot

rm-rf/cd/usr/src/linux-2.6.38.tar.gz

rm-rf/cd/usr/src/linux-2.6.38

6.设置从新内核启动

复制代码代码如下:vi/boot/grub/grub.conf

把default=1改为default=0

7.重新启动系统

复制代码代码如下:reboot

阅读剩余
THE END