ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Ubuntu内核更改

2021-01-02 15:30:39  阅读:241  来源: 互联网

标签:4.15 更改 generic Ubuntu -- 内核 install linux


本文章主要是解决在 Ubuntu 上安装驱动时由于内核版本不匹配而导致失败的问题,解决方案分下面 3 步:增加目标内核更换当前内核删除多余内核,这三个步骤不一定都要执行,具体看下面的描述;

1 Ubuntu 增加内核

搜索目前存在的内核版本。使用命令:

apt-cache  search linux|grep linux-image

安装的话,需要注意,安装内核需要安装image和header,不能只安装其中一个,比如我现在安装一个 linux-image-4.8.0-58-generic,就必须还要安装一个 linux-headers-4.8.0-58-generic
安装命令:

sudo apt-get install linux-image-4.15.0-101-generic 
sudo apt-get install linux-headers-4.15.0-101-generic 
sudo apt-get install linux-modules-4.15.0-101-generic
sudo apt-get install linux-modules-extra-4.15.0-101-generic # 如果不装会影响一些驱动
# 这些文件名的查询都可以用上面的命令列出来,如:apt-cache  search linux|grep linux-modules-extra

或者先把对应包下载下来离线安装,下载参考这里

查看内核安装信息:

dpkg --get-selections | grep linux

2 Ubuntu 更换默认启动内核

系统中存在多个内核时,需要更改启动项来选择默认启动内核;

2.1 找到当前系统中存在的内核名称

grep menuentry /boot/grub/grub.cfg

我的显示如下,这里面只有一个内核 Ubuntu,Linux 4.15.0-101-generic(显示信息里可以找到),本来有多个,但其他内核在实验过程中已经被删除了;

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-4ad703eb-1550-4b99-b406-2b36bf791123' {
submenu 'Ubuntu 高级选项' $menuentry_id_option 'gnulinux-advanced-4ad703eb-1550-4b99-b406-2b36bf791123' {
	menuentry 'Ubuntu,Linux 4.15.0-101-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-101-generic-advanced-4ad703eb-1550-4b99-b406-2b36bf791123' {
	menuentry 'Ubuntu, with Linux 4.15.0-101-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-101-generic-init-upstart-4ad703eb-1550-4b99-b406-2b36bf791123' {
	menuentry 'Ubuntu, with Linux 4.15.0-101-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-101-generic-recovery-4ad703eb-1550-4b99-b406-2b36bf791123' {
menuentry 'Memory test (memtest86+)' {
menuentry 'Memory test (memtest86+, serial console 115200)' {
menuentry 'Windows Vista (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-2E62F26F62F23B63' {

2.2 修改 grub 启动项配置

sudo vim /etc/default/grub

修改 GRUB_DEFAULT 项为 Ubuntu,Linux 4.15.0-101-generic(从上一步中找到):

GRUB_DEFAULT="Ubuntu,Linux 4.15.0-101-generic"

2.3 更新 grub 并重启

sudo update-grub
sudo reboot

注意:重启后默认启动内核可能没有改变,需要在开机时的高级选项中选择需要启动的内核,进入系统后输入:sudo apt-get update,然后再重启,如果不行再采用下面的把办法把其他内核删除;

3 Ubuntu 删除多余内核

(在删除内核之前要先进入自己的目标内核,删的时候也不要删错了!)
参考这里

3.1 查看当前内核

uname -a

3.2 查看所有内核

dpkg --get-selections | grep linux

显示:

console-setup-linux                     install
libselinux1:amd64                       install
libselinux1:i386                        install
linux-base                              install
linux-firmware                          install
linux-generic-hwe-16.04                 install
linux-headers-4.15.0-42                 install
linux-headers-4.15.0-39                 install
linux-headers-4.15.0-39-generic         install
linux-headers-4.15.0-42-generic         install
linux-headers-generic-hwe-16.04         install
linux-image-4.15.0-39-generic           install
linux-image-4.15.0-42-generic           install
linux-image-generic-hwe-16.04           install
linux-libc-dev:amd64                    install
linux-libc-dev:i386                     install
linux-modules-4.15.0-39-generic         install
linux-modules-4.15.0-42-generic         install
linux-modules-extra-4.15.0-39-generic   install
linux-modules-extra-4.15.0-42-generic   install
linux-sound-base                        install
pptp-linux                              install
syslinux                                install
syslinux-common                         install
syslinux-legacy                         install
util-linux                              install

3.3 移除冗余内核

所有 39 版本的对我来说都是多余的,进行删除:

sudo apt-get remove	linux-headers-4.15.0-39
sudo apt-get remove	linux-headers-4.15.0-39-generic
sudo apt-get remove	linux-image-4.15.0-39-generic
sudo apt-get remove	linux-modules-4.15.0-39-generic
sudo apt-get remove	linux-modules-extra-4.15.0-39-generic

# 可以使用purge连配置文件里一起彻底删除,清理内核列表
# sudo apt-get purge	linux-headers-4.15.0-39
# sudo apt-get purge	linux-headers-4.15.0-39-generic
# sudo apt-get purge	linux-image-4.15.0-39-generic
# sudo apt-get purge	linux-modules-4.15.0-39-generic
# sudo apt-get purge	linux-modules-extra-4.15.0-39-generic

移除后重新检查:

rew $ dpkg --get-selections | grep linux
console-setup-linux                     install
libselinux1:amd64                       install
libselinux1:i386                        install
linux-base                              install
linux-firmware                          install
linux-generic-hwe-16.04                 install
linux-headers-4.15.0-42                 install
linux-headers-4.15.0-42-generic         install
linux-headers-generic-hwe-16.04         install
linux-image-4.15.0-39-generic           deinstall
linux-image-4.15.0-42-generic           install
linux-image-generic-hwe-16.04           install
linux-libc-dev:amd64                    install
linux-libc-dev:i386                     install
linux-modules-4.15.0-39-generic         deinstall
linux-modules-4.15.0-42-generic         install
linux-modules-extra-4.15.0-39-generic   deinstall
linux-modules-extra-4.15.0-42-generic   install
linux-sound-base                        install
pptp-linux                              install
syslinux                                install
syslinux-common                         install
syslinux-legacy                         install
util-linux                              install

状态为 deinstall 表示已经卸载,如果不想显示 deinstall 这些项,并删除它们在 /lib/modual/ 下面还有这些内核的配置信息,可以采用下面的命令完全删除,如果还在就手动删:

sudo dpkg -P linux-image-4.15.0-39-generic  # 其他内核名称可以用 tab 键自动补全来查看

3.4 更新系统引导

删除内核后需要更新grub移除失效的启动项

sudo update-grub  #根据情况选择grub/grub2

标签:4.15,更改,generic,Ubuntu,--,内核,install,linux
来源: https://blog.csdn.net/qq_33236581/article/details/112098491

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有