前段时间重新安装了 Ubuntu 22.04 LTS,安装后没有显示 GRUB 引导页面(默认自动跳过),直接使用默认内核启动,而我需要变更一下默认的内核版本,特此记录一下修改过程。

安装其他版本内核

  Ubuntu 中安装其他版本的内核非常简单,内核其实就是相当于一个软件(DEB 包),安装方式与其他软件并没有啥区别。首先,使用命令 uname -sr 就可以查看当前运行的内核版本。

  注意,这里说的是安装一个其他版本的内核,与更新当前 Ubuntu 的内核不同。如果是更新当前 Ubuntu 的内核,则是直接使用命令 sudo apt-cache search linux-image- 可以搜到针对当前 Ubuntu 版本的官方发布的不同版本的内核,然后使用 sudo apt-get install xxx 即可。

  https://kernel.ubuntu.com/~kernel-ppa/mainline/ 上提供的内核是由未经修改(默认情况下,Ubuntu 系统使用 Ubuntu 存储库提供的 Ubuntu 修改过的内核)的上游内核(upstream kernel)源代码制成,但使用了 Ubuntu 内核配置文件。 然后,将这些文件打包成 Ubuntu .deb 文件,以方便大家使用。

这些内核不受支持(不提供任何安全更新)

手动安装

  要安装新的 Ubuntu 的内核,首先打开 http://kernel.ubuntu.com/~kernel-ppa/mainline/,然后从列表中选择需要的版本。打开页面就会发现 Ubuntu 官方对该内核针对不同架构平台的构建(xxx/build)和测试(xxx/self-tests)情况,所以,务必注意不要选择错了架构(例如我这里是 amd64)。

  如上所示,内核并不是只有一个包,通常会有 linux-headers-*-generic_*linux-headers-*_alllinux-image-unsigned-*-generic_*linux-modules-*-generic_* 四个软件包(我们通常需要的就是名字中带有 generic 字样的包),必须都进行安装。

  1. 下载各个包

    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.19.17/amd64/linux-headers-5.19.17-051917-generic_5.19.17-051917.202210240939_amd64.deb
    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.19.17/amd64/linux-headers-5.19.17-051917_5.19.17-051917.202210240939_all.deb
    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.19.17/amd64/linux-image-unsigned-5.19.17-051917-generic_5.19.17-051917.202210240939_amd64.deb
    wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.19.17/amd64/linux-modules-5.19.17-051917-generic_5.19.17-051917.202210240939_amd64.deb
    
  2. 直接使用命令 sudo dpkg -i *.deb 安装下载的所有包即可

  如下所示,某些内核下面可能还会有一些与 generic 对应的 lowlatency 的包。lowlatency 是用于工业嵌入式系统的低延迟 Linux 内核。官方介绍:https://ubuntu.com/blog/industrial-embedded-systems-iii。

Mainline Kernel Installer

  相比手动安装,Ubuntu 下还有个第三方的带 GUI 的内核安装器:Mainline Kernel Installer,我们只需要点点鼠标,其会自动从 http://kernel.ubuntu.com/~kernel-ppa/mainline/ 下载内核的各个包,然后安装。

  1. 添加安装源 sudo add-apt-repository ppa:cappelikan/ppa -y
  2. 安装 sudo apt install mainline
  3. 从开始界面打开 Mainline Kernel Installer 选择要安装的内核即可

Mainline Kernel Installer 会自动过滤掉不支持当前架构平台的内核

修改默认版本内核

  在实际工作中,有时候我们需要在 Ubuntu 中添加多个不同版本的内核。所有已安装的可用内核可以在 /boot/grub/grub.cfg 这个文件中查看到。/boot/grub/grub.cfg 这里面就对应于 GRUB 引导页面中的各条目内核的启动参数。

命令行方式

  1. 首先打开 sudo nano /boot/grub/grub.cfg,从中选择要配置的内核参数。这个文件就是 GRUB 启动项的菜单描述文件!GRUB 在启动中会读取该文件,然后显示出来就是我们看到的 GRUB 引导界面。

      我这里没有安装其他内核,默认的是有 Linux 5.15.0-53-genericLinux 5.15.0-56-generic 这两个(以及这两个对应的 recovery mode 模式)。其中,我添加的蓝色和红色标号代表不同层级的菜单项的标号。

    不要试图直接编辑 /boot/grub/grub.cfg,这个文件会根据默认配置自动更新

  2. 编辑默认的 GRUB 配置文件:sudo nano /etc/default/grub,其中,默认的 GRUB_DEFAULT=0 就表示使用上面的第 0 个菜单项(也就是默认选中 Ubuntu 这条菜单),这里我以修改为 Linux 5.15.0-53-generic 为例。

      我们只需要将需要的内核对应的菜单添加到 GRUB_DEFAULT=0 这一项上即可。注意,修改的格式是需要包含菜单层级Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-53-generic 或者直接简写 1>2

    由于内容中包含了空格,因此必须使用双引号

  3. 保存后退出。然后执行 sudo update-grub,最后 sudo reboot 重启应该就可以会自动选择我们指定的内核了。

grub-customizer

  Ubuntu 中有一个名为 grub-customizer 的带 GUI 的 GRUB 编辑器,不喜欢使用命令行的可以直接安装这个工具。使用也比较简单直接,简单说一下如何安装,就不过多介绍使用方法了。

  1. Ubuntu 20.04 版本可以直接使用命令 sudo apt install grub-customizer 来安装
  2. Ubuntu 22.04 中由于一个 BUG,官方没有提供该工具,因此需要从第三方安装源进行安装:
    sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    sudo apt update
    sudo apt install grub-customizer
    

开启 GRUB 引导页面

  在默认情况下,如果系统只有一个版本的 Ubuntu(或者说只有一个操作系统),GRUB 引导页面是不会显示的。如果需要打开 GRUB 引导页面就需要编辑 Ubuntu 中的 GRUB 配置文件(不喜欢命令行的也可以直接使用上面说的 grub-customizer)。

  1. 编辑默认的 GRUB 配置文件:sudo nano /etc/default/grub

    1. GRUB_TIMEOUT_STYLE=hidden 这一行前加个 # 注释掉或者改为 GRUB_TIMEOUT_STYLE=menu
    2. 修改 GRUB_TIMEOUT=0,添加一个合适的启动超时时间,单位是秒。超时时间内如果无操作,则自动启动。
  2. 保存后退出。然后执行 sudo update-grub,最后 sudo reboot 重启应该就可以看到 GRUB 引导界面了。

  如果只有一个内核,开启 GRUB 引导页面貌似也没啥意义,还额外增加了启动时间。通常,我们在安装了不同内核时才需要开启。当然,在某些情况下,安装内核后,相关工具可能自动就给我开启了!

远程桌面

  Ubuntu 22.04 自带了微软搞的 RDP(Remote Desktop Protocol),并且是默认的远程桌面,因此,我们可以直接使用 Windows 的远程桌面进行连接。同时也带了 VNC 远程桌面,再也不用手动安装各种 VNC 服务端了。

  Ubuntu 22.04 中的这套远程桌面其实就来自于最新的 GNOME 中的 gnome-remote-desktopgnome-remote-desktop 还有个配套的命令行工具 grdctl,通过 grdctl 可以直接在 SSH 中来修改上面 GUI 中的配置。

处理锁屏断开问题

  上面这些都不是重点,重点是默认的远程桌面在自动息屏(屏幕变黑)或者手动执行 Lock 锁屏之后就会断开连接,然而,如果把 Ubuntu 22.04 的息屏直接关闭,屏幕就会一直亮着(容易被领导窥屏),再也不会锁屏了(手动锁屏还是会断开远程桌面)。

  Ubuntu 使用的是 GNOME 桌面,GNOME 提供了很多插件,最终,我在 GNOME 插件中发现了 Allow Locked Remote Desktop 这个插件,完美解决了上面的问题。在 Ubuntu 下,GNOME 插件有个带 GUI 的管理程序,通过管理程序可以方便安装卸载各种插件:sudo apt install gnome-shell-extension-manager gnome-shell-extensions

处理重启无法连接问题

  还有一种情况,当我们重启电脑后,远程桌面是无法链接的,因为默认用户没有启用自动登录,导致没有可用的账户来进行远程链接。然而,并不是开了自动登录就可以用的,因为权限问题,自动登录后不允许远程操作,这和常用的 Windows 还是有很大差别的。

  解决方法就是将修改 Ubuntu 中的秘钥链:Ubuntu 提供了 Passwords and Keys 这个 GUI 程序,打开后修改 Login 的密码为空(直接在 Login 上鼠标右键,输入原密码,新密码留空,确定即可)。以后即使重启电脑,也会自动登录并可以进行远程桌面链接了(与 Windows 体验一模一样)。

参考

  1. https://linuxhint.com/install-linux-kernel-ubuntu/
  2. https://linuxhint.com/install-upgrade-latest-kernel-ubuntu-22-04/
  3. https://codechacha.com/ja/ubuntu-update-kerenl/

Linux 之十七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面相关推荐

  1. Linux操作系统Ubuntu 22.04配置Visual Studio Code与C++代码开发环境的方法

      本文介绍在Linux Ubuntu操作系统下,配置Visual Studio Code软件与C++ 代码开发环境的方法.   在文章虚拟机VMware Workstation Pro中配置Linu ...

  2. linux nginx 配置端口访问,Linux入门教程:ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点,ubuntunginxNginx 使用异步...

    Linux入门教程:ubuntu 16.04配置nginx服务器实现一个IP一个端口多个站点,ubuntunginxNginx 使用异步 特点: Nginx 可以部署在网络上使用 FastCGI,脚本 ...

  3. VMware Ubuntu 22.04 配置静态IP

    一.首先要配置网卡上面的网络信息,如果直接配置Ubuntu,可能会出现连不上网的情况. 1.在设置中找到 更改适配器选项 2. 找到VMnet8 ,右击属性 3. 找到IPv4,点击属性. 5.配置 ...

  4. ubuntu 12.04 配置内核崩溃自动重启及转存

    默认ubuntu12.04没有配置内核崩溃自动重启及转存,造成发生内核崩溃的时候,没有core dump文件去分析,并且卡死在内核崩溃界面,为了方便查找内核崩溃原因,需要将内核崩溃自动重启配置及内核转 ...

  5. 如何在Ubuntu 20.04 上安装 Xrdp 服务器(远程桌面)

    本文最先发布在: https://www.itcoder.tech/posts/how-to-install-xrdp-on-ubuntu-20-04/ Xrdp 是一个微软远程桌面协议(RDP)的开 ...

  6. Ubuntu 22.04 dektop 开启root并自动登录桌面

    1.设置root密码 sudo passwd root 2.解锁root sudo passwd -u root 3.允许root登录 sudo nano /etc/gdm3/custom.conf ...

  7. Ubuntu 12.04 LTS 下安装文件传输远程桌面共享软件Teamviewer

    TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制,桌面共享和文件传输的简单且快速的解决方案.为了连接到另一台计算机,只需要在两台计算机上同时运行TeamViewer即可,而不需要 ...

  8. 嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)

    嵌入式 Linux入门 环境篇第二课,正好换了新电脑,更新 Ubuntu 虚拟机的安装, 体验一下 Ubuntu 22.04 ...... by 矜辰所致 前言 因为以前的电脑虚拟机环境我都配置好了, ...

  9. Ubuntu 22.04操作系统下常用软件备忘

    时间过得真快,不知不觉间Ubuntu的桌面版本已经到了22.04.本文记录我在Ubuntu 22.04下使用的部分软件,一方面供刚开始使用Ubuntu系统的朋友们参考,另外就是方便自己以后重装系统.下 ...

最新文章

  1. 【机器学习入门】(13) 实战:心脏病预测,补充: ROC曲线、精确率--召回率曲线,附python完整代码和数据集
  2. 论文笔记——PRUNING FILTERS FOR EFFICIENT CONVNETS
  3. 中原银行数字化营销体系建设实践
  4. 《“笨办法”学Python(第3版)》——习题3 数字和数学计算
  5. SAP S/4HANA product search generated SQL statement的生产原理介绍
  6. popup a new windows
  7. VMware Fusion8下CentOS7.1 安装vmtools报错kernel header path
  8. 由于两家重要零件厂商的疫情,iPhone 13备货可能受影响
  9. 计算机能实现哪些人类智力活动,人工智能是电脑科学的一个重要分支,它的近期目标是什么?...
  10. jsp的九大内置对象和作用域
  11. 【架构】分布式架构介绍及实现(简略)
  12. umd文件结构深度解剖
  13. N63043-郝子轩-第一周
  14. Win10自动更新永久关闭Windows update medic service拒绝访问
  15. FOP(PDF与JAVA)
  16. 解决 java poi 导出Excel 无法打开问题
  17. python 获取屏幕颜色_Python3 获取手机屏幕指定坐标点的 RGBA 和 16 进制颜色
  18. 机器学习之-数学基本函数(幂函数)
  19. 绿幕抠图直接成像_我在PPT做抠图 - 教程分享 - 锐普PPT论坛 - Powered by Discuz!
  20. java for 一秒钟可以循环多少次

热门文章

  1. STM32F103初学研究整理笔记-基础知识理论
  2. python爬虫——豆瓣小组,查询某用户在小组中发布的所有帖子
  3. Java中ASC码与字符互相转换
  4. 报错Can‘t resolve ‘crypto‘ in ‘E:\test\jwt-demo-master\frontend\node_modules\jwa‘
  5. 后台管理框架 :花裤衩 / vue-admin-template
  6. Kaggle比赛模型融合方法
  7. SAP的一些术语表,中英对照
  8. 网络摄像头海思开发板_海思HI3518EV、200wifi摄像头完美解决方案
  9. php 位深度,支撑位和阻力位的分析:究竟哪些位置可以形成阻力位和支撑位? 深度教程(图解)...
  10. 2023牛客寒假算法基础集训营1