文章目录

  • 前言
  • 一、下载更新选择内核
  • 二、摸索到解决
    • 1.噩梦伊始
    • 2.噩梦降临
    • 3.梦醒时分
    • 4.设置引导界面以显示引导界面(多内核共存,重点)
  • 总结
  • Reference

前言

嗯,延续惯例,介绍背景+吐槽。
如有缘看到此文,并有可以参考的地方,请看完全文再进行,否则后果自负。

背景:
实验室能供我瞎造的linux系统是装的Ubuntu18.04,内核5.4.0-73-generic,然而吧,这RealSense SDK2.0只支持4.4、4. 8、4.10、4.13、4.15及4.16。
诶,还能咋滴,开始csdn查:“Ubuntu18.04怎么降内核?”
很快啊,按着教程装了个4.15.0-135-generic的,但是不知道怎么切换内核,想着反正也不要5.4版本的,就按着教程rm掉呗(嗯,我就是个憨憨),最后系统只剩一个4.15的内核,可以,reboot
结果,检测不到网卡和无线的驱动,人傻,又开始csdn:“Ubuntu系统无法联网”,然而搞了半天,按着各种方法都没有什么用,要么是虚拟机的,要么是刚安装完后找不到网络的,最后当然是选择重下内核,替代。其实整个的思想就是重新下载内核,删除不需要的内核。

因为走了很多弯路,故记录过程,留给以后的自己和像我一样碰到此情此景不知所措的小小白,各位dalao不喜勿喷。


设备信息:
操作环境:Ubuntu18.04
内核信息:初始:5.4.0-73-generic;终版:4.15.0-041500-generic+5.4.0-050400-generic


一、下载更新选择内核

step1:编辑/etc/apt/sources.list文件,在最后一行加入

deb http://security.ubuntu.com/ubuntu trusty-security main

step2:更新sudo apt-get update

step3:下载自己所想要的内核

sudo apt-get install linux-image-4.15.0-135-generic

我此时下载安装的是linux-image-4.15.0-135-generic

step4:查看是否安装成功

dpkg --get-selections| grep linux-image-4.15.0-135-generic

step5:编辑vim /etc/default/grub文件,找到GRUB_DEFAULT=0
将它修改为

GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 4.15.0-135-generic"

优先选择这个登陆。

step6:更新一下 Grub 引导

sudo update-grub

step7:重启系统

sudo reboot

不出意外,重启后就是新的内核了,可以使用命令:uname -r查看当前的内核。


二、摸索到解决

1.噩梦伊始

然而吧,我就是启动不起来,于是乎我查找第二篇教程,这篇教程也可以说是对一个新手噩梦的开始,因为我启动不起来,所以按着第二个教程一步步操作,删除了原内核,只在系统中留一个内核,结果自闭。
不是教程作者的锅哈,只不过对于小白来说不是很友好,但作者没有引导读者从Grub选择内核的角度登陆,我就觉得不是很合理。
过程记录如下:

step1:在更新Grub 引导

sudo update-grub

可以看到此时系统的内核核心文件(这是我现在的系统信息,之前没截图)

教程教我的是,把高版本的文件核心文件删去,即
step2(这一步是否执行,自己斟酌):

sudo rm -rf /boot/vmlinuz-5.4.0-73-generic
sudo rm -rf /boot/initrd.img-5.4.0-73-generic

注:查过很多帖子有许多开发者表明,不会轻易使用rm命令,后果难保。

step3:删除系统中多余的内核软件包,把不需要的删掉
先看看安装了什么内核:sudo dpkg --get-selections |grep linux

(此处无图,忘了截图…)

内核后标明install的就是此时系统中存在的软件包,有的内核后面是deinstall,那些也可以直接删除:

sudo dpkg -P linux-headers-5.4.0-73-generic //dpkg安装的内核仍然用dpkg删除,具体删除内容自己参考自己系统的文件情况sudo apt autoremove linux-headers-5.4.0-73-generic //apt安装的内核用apt删除,具体删除内容自己参考自己系统的文件情况sudo apt purge linux-headers-5.4.0-73-generic //同上

step4:最后更新一下Grub:sudo update-grub

小结:再次更新Grub 引导就只剩上文安装好的4.15.0-135-generic内核,然后重启,确实是4.15.0-135-generic内核了,因为系统里只有一个内核。
而,这个新内核却无任何的网卡驱动,连我外置的无线模块都识别不到,更别提原本就有的有线网卡了。如果我没有把原来的内核rm和卸载的话,我就可以切换到另一个内核进行一些处理。

所以指出上述做法有弊端,故在升级和降级应保留多个内核,用引导的方式决定每次进入哪个内核,提高容错率。

2.噩梦降临

由于没有网络,所以csdn中任何在系统中apt install的我通通做不了。
什么ifconfig后的eth0…也跟我没关系,只能尝试着做一些完全不需要网络的尝试,如:service NetworkManager stop、start、restart之类的,毕竟也不知道是什么问题。
后面冷静下来思考是不是驱动问题,想重新下驱动,但是没有找到单独下驱动的方法,一般的帖子写的都是“刚安装完Ubuntu系统却无法联网”,这种直接在映像文件中的找到bcmwl-kernel-source_xxxxxx_amd64.deb包重新安装一次即可(这里推荐一个比较好的帖子[4]),但是我不是原来映像文件中的内核,而且删了原来内核的核心文件,嗯,原地爆炸。
我连usb共享手机网络都试了,结果也还是连不上网,卡住…

3.梦醒时分

嗯,想办法重新下新的内核覆盖,然后就成了呗。

内核下载网址([3]博主提供):
https://kernel.ubuntu.com/~kernel-ppa/mainline/

step1:我直接在能联网的Windows系统中,登入网站,在网站中下载自己想要的版本,以5.4.0为例,
64位电脑,则找到Build for amd64 …,如果是其他芯片就找到对应项目:

下载图中不包含lowlatency的所有安装包,4.17之后的版本有module的包,所以一共下载4个包;而4.17之前的没有,一共下载3个包。

注:linux的内核除了generic(通用)类型外还有至少3种:lowlatency(低延时)、preempt(抢占式)和realtime(实时),该网站好像就只有generic和lowlatency,一般选择generic。

step2:用U盘拷贝到Ubuntu系统中(没网嘛,有什么办法),用命令行sudo dpkg -i 安装刚刚下载的包:

// 可以依次安装
sudo dpkg -i linux-headers-5.4.0-050400.201911242031_all.deb
sudo dpkg -i linux-headers-5.4.0-050400-generic_5.4.0-050400.201911242031_amd64.deb
sudo dpkg -i linux-image-unsigned-5.4.0-050400-generic_5.4.0-050400.201911242031_amd64.deb
sudo dpkg -i linux-modules-5.4.0-050400-generic_5.4.0-050400.201911242031_amd64.deb//也可以把他们放在一个文件夹下一块安装
sudo dpkg -i linux*//如果安装过程报错,执行一下命令修复
sudo apt-get -f install//如果无法修复,则需要依次安装每个包,查看缺少了什么依赖。然后手动安装上去。

step3:更新Grub引导并重启

sudo update-grub
sudo reboot

重新开机后查看内核uname -a,应该可以看到默认使用的是最新版本的内核。

4.设置引导界面以显示引导界面(多内核共存,重点)

先打开/etc/default/grub文件


如图所示,将GRUB_DEFAULT=0,将GRUB_TIMEOUT_STYLE=hidden注释掉,然后GRUB_TIMEOUT=10(选择时间只有10s,你可以根据自己的想法设置长或者短一点),最后将GRUB_CMDLINE_LINUX_DEFAULT="text"

就可以在启动Ubuntu系统的时候,选择不同的内核系统进行,实现多内核共存


总结

作为小白,除了经验不足、学识浅薄之外,最主要的问题是还是遇事没办法冷静分析,一上来就想着打开csdn对话框,然后如果找不到答案就重装系统,这都是不可取的。

这篇文章中走的很多弯路其实都是因为不愿思考、不善思考,问题并不难解决。
希望往后的自己可以多思考、冷静分析、提高做事情的效率。


Reference

[1]. https://www.cnblogs.com/minseo/p/13065321.html
[2]. https://blog.csdn.net/qq_32590631/article/details/114868606
[3]. https://blog.csdn.net/surtol/article/details/102497572
[4]. https://blog.csdn.net/ifmvo/article/details/54023628

【学习番外篇2】Ubuntu系统降内核无法联网+双内核切换相关推荐

  1. 动手学深度学习番外篇 01.为什么from d2l import torch as d2l

    动手学深度学习番外篇 01.为什么from d2l import torch as d2l 在跟着网站动手学深度学习学习的时候,发现代码开头中经常要运行这样一句话 from d2l import to ...

  2. python学习 番外篇之模块

    番外篇:模块 模块概念 1.什么是模块 2.为何要用模块 模块的使用 首次导入模块发生的事情 不要一行导入多个模块 为导入的模块起别名,简化代码 直接从模块导入名称 一次导入模块所有名称,只适合少数情 ...

  3. 【学习番外篇】Firefly ROC-RK3328-CC刷Ubuntu18.04+VNC

    文章目录 前言 一.准备工作 二.烧录系统 1.下载对应的烧写工具 2.启动系统 三.连接Windows和远程管理可视化桌面 1.连接putty 2.在putty下联网 3.重点!!!安装桌面环境及V ...

  4. lua 去除小数点有效数字后面的0_【物联网学习番外篇】Lua脚本编程扫盲

    在后面的物联网教程中,我们很快就会接触到Lua这个脚本语言,那么本篇内容结合后续的一些需要的开发点,针对Lua零基础的读者写一篇入门扫盲文章. 01 Lua 介 绍 Lua是一个小巧的脚本语言,其目标 ...

  5. swft入门学习番外篇-创建项目

    创建一个简单地项目文件,需要一下几个步骤 1.File->New->Project;  新建一个新的项目 2.Application->Single View Application ...

  6. 【大数据学习番外篇之爬虫3】爬美女照片

    为什么猪会说谎?因为它们不想被揭穿是猪! 1. 为什么小鸟总是歌唱?因为它们不会说话! 2. 为什么光头强不喜欢去博物馆?因为里面都是古人的头发! 3. 为什么鱼不喜欢唱歌?因为它们会唱跳不动! 4. ...

  7. 神经网络学习小记录-番外篇——常见问题汇总

    神经网络学习小记录-番外篇--常见问题汇总 前言 问题汇总 1.下载问题 a.代码下载 b. 权值下载 c. 数据集下载 2.环境配置问题 a.20系列所用的环境 b.30系列显卡环境配置 c.CPU ...

  8. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    转载自:https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇 给深度学习入门者的Python快速教程 - ...

  9. 系统工程(SE)学习笔记(番外篇之一)——Capella使用体会兼谈SE工具

    系统工程(SE)学习笔记(番外篇之一)--Capella使用体会兼谈SE工具 零.Capella简介 壹. Capella的优势 贰.Capella的缺点 叁. 生态环境 肆. 总结 说到SE,就不能 ...

  10. 教你从0到1搭建秒杀系统-Canal快速入门(番外篇)

    Canal用途很广,并且上手非常简单,小伙伴们在平时完成公司的需求时,很有可能会用到.本篇介绍一下数据库中间件Canal的使用. 很多时候为了缩短调用延时,我们会对部分接口数据加入了缓存.一旦这些数据 ...

最新文章

  1. python中使用squarify包可视化treemap图:treemap将分层数据显示为一组嵌套矩形,每一组都用一个矩形表示,该矩形的面积与其值成正比、自定义设置每一个数据格的颜色
  2. linux 内核函数 copy_from_user和copy_to_user 介绍
  3. python爬虫成果_Python爬虫(小练习)
  4. java hibernate错误org/dom4j/DocumentException、org/jboss/logging/BasicLogger、org/apache/lucene/index...
  5. t检验自由度的意义_T检验、F检验和统计学意义
  6. 从头写个http client(java)
  7. ML大杂烩:**常见机器学习算法公式梳理
  8. python如何导入numpy简书_如何使用python3.x成功导入numpy?
  9. JWT token信息保存
  10. http 阮一峰_互联网协议入门(二)
  11. python中result的用法_Python中qutip用法示例详解
  12. Java语言程序设计(一)选择题
  13. phoenixframework自动化测试平台webUI代码示例
  14. 手机自动化测试:Appium源码分析之跟踪代码分析七
  15. Redis相关面试题总结
  16. 关于navicat premium数据库激活一直不成功的解决方法(亲测有效)
  17. win10更改登录密码
  18. 一个四维混沌吸引子曲线(matlab完整代码)
  19. Android获取缓存大小和清除缓存功能实现
  20. 【学会了学会了】Flink官网翻译——Flink集群部署概览

热门文章

  1. php升级版本后关于Mbstring、OpenSSL等一些扩展都无法开启的状况
  2. 如何远程管理服务器详解
  3. 20221118-Latex如何编辑流程图
  4. 全球著名平面设计BeforeAfter视频教程合集中文字幕
  5. 【Net】TCP四大机制
  6. 『docker笔记』Centos7离线安装docker[补充CentOS开机自启动脚本/Linux用户组group]
  7. 江苏计算机应用基础自考时间,江苏省2019年4月自考科目考试时间表已出,请看!...
  8. 5G随身wifi如何选择?简单分类一下
  9. 18_数组的定义和访问
  10. JavaScript实现商品图片随鼠标动态全图放大