Linux 之七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面、包后缀(-dev、-dbg等)、Ubuntu 阶段更新

这篇具有很好参考价值的文章主要介绍了Linux 之七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面、包后缀(-dev、-dbg等)、Ubuntu 阶段更新。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

安装其他版本内核

  Ubuntu 中安装其他版本的内核非常简单,内核其实就是相当于一个软件(DEB 包),安装方式与其他软件并没有啥区别。首先,使用命令 uname -sr 就可以查看当前运行的内核版本。
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
  注意,这里说的是安装一个其他版本的内核,与更新当前 Ubuntu 的内核不同。如果是更新当前 Ubuntu 的内核,则是直接使用命令 sudo apt-cache search linux-image- 可以搜到针对当前 Ubuntu 版本的官方发布的不同版本的内核,然后使用 sudo apt-get install xxx 即可。
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
  默认情况下,Ubuntu 系统使用 Ubuntu 存储库提供的 Ubuntu 修改过的内核。出于测试、验证等原因,Ubuntu 也提供了各个版本的构建好的 Mainline 内核。而这里我们主要是讲从 https://kernel.ubuntu.com/~kernel-ppa/mainline/ 安装其他版本的 Mainline 内核。

Ubuntu 内核与主线并不完全相同,https://people.canonical.com/~kernel/info/kernel-version-map.html 给出了对应关系

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

  1. 这些内核不受支持,不提供任何安全更新
  2. 如果使用了选定的专有或树外模块(例如 bcmwl、fglrx、NVIDIA 专有图形驱动程序、VirtualBox等),需要先卸载,否则可能导致安装失败
  3. 官方说明 MainlineBuilds

手动安装

  要安装新的 Ubuntu 的内核,首先打开 http://kernel.ubuntu.com/~kernel-ppa/mainline/,然后从列表中选择需要的版本。打开页面就会发现 Ubuntu 官方对该内核针对不同架构平台的构建(xxx/build)和测试(xxx/self-tests)情况,所以,务必注意不要选择错了架构(例如我这里是 amd64)。
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
  如上所示,内核并不是只有一个包,通常会有 linux-headers-*-generic_*linux-headers-*_alllinux-image-unsigned-*-generic_*linux-modules-*-generic_* 四个软件包(我们通常需要的就是名字中带有 generic 字样的包),我们可以使用 dpkg -x xx.deb ./xxx 将这些包解压看到里面的内容。

  1. linux-headers-*:这个包里主要就是我们在应用编程时使用的各种 C 头文件,因为在大版本升级时,这些头文件可能会变化,因此需要替换。
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
    linux-headers-*有时会有两个,这主要是因为 Ubuntu 提供了不用用途的内核,带有 _all 的那个包含了实际的各种文件,带有 generic_ 的那个里面通常是一些指向带有 _all 的那个里面的符号

  2. linux-image-*: 这个包里主要就是编译出来的内核镜像文件 vmlinuz
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

  3. linux-modules-*:这个包里主要就是那些 .ko 驱动
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

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

  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 安装下载的所有包即可

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 选择要安装的内核即可
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

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

修改默认版本内核

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

命令行方式

  1. 首先打开 sudo nano /boot/grub/grub.cfg,从中选择要配置的内核参数。这个文件就是 GRUB 启动项的菜单描述文件!GRUB 在启动中会读取该文件,然后显示出来就是我们看到的 GRUB 引导界面。
    ubuntu更新grub,Linux,ubuntu,linux,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 为例。
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
      我们只需要将需要的内核对应的菜单添加到 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 编辑器,不喜欢使用命令行的可以直接安装这个工具。使用也比较简单直接,简单说一下如何安装,就不过多介绍使用方法了。
ubuntu更新grub,Linux,ubuntu,linux,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
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
    1. GRUB_TIMEOUT_STYLE=hidden 这一行前加个 # 注释掉或者改为 GRUB_TIMEOUT_STYLE=menu
    2. 修改 GRUB_TIMEOUT=0,添加一个合适的启动超时时间,单位是秒。超时时间内如果无操作,则自动启动。
  2. 保存后退出。然后执行 sudo update-grub,最后 sudo reboot 重启应该就可以看到 GRUB 引导界面了。
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

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

远程桌面

  Ubuntu 22.04 自带了微软搞的 RDP(Remote Desktop Protocol),并且是默认的远程桌面,因此,我们可以直接使用 Windows 的远程桌面进行连接。同时也带了 VNC 远程桌面,再也不用手动安装各种 VNC 服务端了。
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
  Ubuntu 22.04 中的这套远程桌面其实就来自于最新的 GNOME 中的 gnome-remote-desktopgnome-remote-desktop 还有个配套的命令行工具 grdctl,通过 grdctl 可以直接在 SSH 中来修改上面 GUI 中的配置。
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

处理锁屏断开问题

  上面这些都不是重点,重点是默认的远程桌面在自动息屏(屏幕变黑)或者手动执行 Lock 锁屏之后就会断开连接,然而,如果把 Ubuntu 22.04 的息屏直接关闭,屏幕就会一直亮着(容易被领导窥屏),再也不会锁屏了(手动锁屏还是会断开远程桌面)。
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
  Ubuntu 使用的是 GNOME 桌面,GNOME 提供了很多插件,最终,我在 GNOME 插件中发现了 Allow Locked Remote Desktop 这个插件,完美解决了上面的问题。在 Ubuntu 下,GNOME 插件有个带 GUI 的管理程序,通过管理程序可以方便安装卸载各种插件:sudo apt install gnome-shell-extension-manager gnome-shell-extensions
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

处理重启无法连接问题

  还有一种情况,当我们重启电脑后,远程桌面是无法链接的,因为默认用户没有启用自动登录,导致没有可用的账户来进行远程链接。然而,并不是开了自动登录就可以用的,因为权限问题,自动登录后不允许远程操作,这和常用的 Windows 还是有很大差别的。
ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核
  解决方法就是将修改 Ubuntu 中的秘钥链:Ubuntu 提供了 Passwords and Keys 这个 GUI 程序,打开后修改 Login 的密码为空(直接在 Login 上鼠标右键,输入原密码,新密码留空,确定即可)。以后即使重启电脑,也会自动登录并可以进行远程桌面链接了(与 Windows 体验一模一样)。

包后缀

  在 Ubuntu 下使用 apt 命令安装软件包时,经常会遇到这些包都有各种各样的后缀。apt 命令安装软件包其实就是安装了一些其他软件的依赖(运行时 .so.a 文件)。注意,包全名的格式通常是 包名-版本-patch-后缀,例如:libusb-1.0-0。此外,包的版本号与包中运行时(全名格式通常与包差不多)的版本号可能不一致!

  • 无后缀:不带任何后缀的包就是一个包含软件运行时(.so 文件)包,以供其他软件运行时调用。当我们运行某个软件时就需要安装其依赖的这种不带后缀的包! 无后缀的包中的运行时是经过版本化的(运行时文件有版本后缀),如下所示:
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

  • -dev:带 -dev 后缀的包是开发专用的,其中不仅包含运行时(.so.a 文件),还包含了该软件包对外提供的开发使用的各种头文件。当我们要编译某些软件源码时,就需要安装其依赖的带 -dev 后缀的包! -dev 后缀的包中的运行时通常是没有版本化的(运行时文件没有版本后缀),如下所示
    ubuntu更新grub,Linux,ubuntu,linux,grub,引导,内核

    1. debian、ubuntu 常用 -dev 后缀;red hat、centos、fedora 常用 -devel 后缀
  • -utils:带 -utils 后缀的包里面包含了一些该软件额外的命令行工具。

  • -dbg:带 -dbg 后缀的包里面包含调试符号,通常仅供开发人员使用该软件或调试软件的人员使用

  • -doc:带 -dbg 后缀的包里是本软件包的文档

The following packages have been kept back

  当我们使用 sudo apt upgrade 时,经常会遇到 The following packages have been kept back,被保留的软件包不会被升级。出现这个文件的很大原因是 Ubuntu 的阶段性更新策略导致的,从 21.04 开始,apt 命令实现了阶段性更新策略(以前只有更新管理器支持阶段性更新)。

  在分批更新策略之下,更新包会优先推送给部分用户,以供测试及反馈,只有没问题后才会逐步大面积推送。我们可以在 https://ubuntu-archive-team.ubuntu.com/phased-updates.html 这个页面上看到更新的推送情况。

  阶段性更新是由 python3-update-manager 提供的,具体文件是在 /usr/lib/python3/dist-packages/UpdateManager/Core/UpdateList.py 中实现的。apt 设置与更新管理器设置略有不同:

Update-Manager::Always-Include-Phased-Updates;
APT::Get::Always-Include-Phased-Updates True;

Update-Manager::Never-Include-Phased-Updates;
APT::Get::Never-Include-Phased-Updates True;

可以通过告诉 apt 忽略阶段性更新来尽早获得更新:sudo apt -o APT::Get::Always-Include-Phased-Updates=true upgrade文章来源地址https://www.toymoban.com/news/detail-660900.html

参考

  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/
  4. https://askubuntu.com/questions/1246962

到了这里,关于Linux 之七 Ubuntu 22.04 配置内核版本、GRUB 引导、远程桌面、包后缀(-dev、-dbg等)、Ubuntu 阶段更新的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在Ubuntu 22.04上安装Linux 内核 详细教程!

    在Ubuntu 22.04上安装Linux内核可以按照以下步骤进行操作: 更新系统:首先,确保你的Ubuntu系统是最新的,执行以下命令更新系统软件包: 下载内核文件:访问Linux内核官方网站(https://www.kernel.org)下载所需的内核版本。选择一个稳定版本并下载源代码文件(以.tar.gz或.tar.xz为

    2024年02月07日
    浏览(44)
  • Ubuntu 22.04 版本的网络配置

    Ubuntu 22.04 版本是一款强大的操作系统,它提供了广泛的网络配置选项,包括网络连接、路由设置、DNS 配置和防火墙配置等。在这篇博客中,我们将仔细介绍关于 Ubuntu 22.04 版本的网络配置。 网络连接配置 在安装 Ubuntu 22.04 后,通常需要配置网络连接以便访问互联网。有两种

    2024年02月09日
    浏览(30)
  • Ubuntu22.04开机出现the GNU GRUB version 2.06

    偶然的机会,笔者重新打开了自己的Linux电脑,在启动时出现了如下问题: 开机黑屏,并显示 现在该如何开机,又该如何修复呢? 首先,该问题是由于开机系统盘引导出现问题导致的,所以我们进行如下操作(以启动盘为(hd0,msdos1)为例) 如上操作后即可正常启动,但是注意

    2024年02月05日
    浏览(39)
  • 【Linux】Ubuntu22.04版本下实现gcc版本的快速切换

    本文将介绍如何在Ubuntu22.04版本下实现gcc版本的快速切换。 本文首发于 ❄️慕雪的寒舍 有的时候,不同版本的gcc会造成一些细微的差异,导致相关的一些工具不兼容,比如用于单元测试覆盖率生成的gcov/lcov工具,在不同的gcc版本下可能会出现不同的结果。 为了确定是否是

    2024年01月22日
    浏览(42)
  • Ubuntu22.04服务器版本配置静态IP地址

    1、进入文件/etc/netplan/00-installer-config.yam 2、配置文件内容  注意:编写文件内容时一定要格式正确,不然会出差 3、重启网络  4、查看IP  这样就配置成功啦 5、如果是18.04一下版本参照这个配置,22.04版本也可以用这个,重启网络的时候会有报错,但不会有影响  重启网络后

    2024年02月11日
    浏览(43)
  • Ubuntu22.04内核升级

            第二句代码运行出来有一堆内核,我是选择linux-image-X.X.X-X-generic 格式的。比如我选择的是最新的linux-image-6.2.0-26-generic          更新内核要把所有相关的都更新了,不然到了引导界面,进不了系统,只能进旧版本内核系统。         请参考文章: https://blog

    2024年02月06日
    浏览(32)
  • 如何安装ubuntu22.04以及ubuntu各个版本配置国内源和ssh远程登录

      目录 一.简介 二.配置root账号 三、配置IP地址 四、更换阿里云源 五、配置ssh,root可以远程登录安装ssh服务 VMware17.0安装教程(2023最新最详细)-CSDN博客 VMware虚拟机安装Ubuntu22.04教程(2023最新最详细)-CSDN博客 Ubuntu22.04(非虚拟机)安装教程(2023最新最详细)-CSDN博客 Linux是一

    2024年02月08日
    浏览(50)
  • Ubuntu 22.04 编译 Linux 5.16.5 内核报错:FAILED: load BTF from vmlinux: Invalid argument

    Ubuntu22.04 自带内核版本是5.15,今日想编译一个高版本的 5.16.5 内核,不料编译却报错: 网上搜了下说要将 .config 配置文件中 CONFIG_DEBUG_INFO_BTF=y 改为 CONFIG_DEBUG_INFO_BTF=n。这样编译就不会报错。但是我想要开启这个选项【和ebpf相关的选项】,进一步搜索发现是由于 pahole 这个程

    2024年02月05日
    浏览(29)
  • Linux环境搭建(Ubuntu22.04)+ 配置共享文件夹(Samba)

    Linux开发环境准备 搭建Linux开发环境所需要的软件如下: VMware虚拟机: 用于运行Linux操作系统的虚拟机软件之一,VMware下载安装在文章中不做说明,可自行百度谢谢 Ubuntu光盘镜像: 用于源代码编译,有闲置计算机或服务器可以下载服务器版(没有图形用户界面),只有一台

    2024年02月04日
    浏览(47)
  • 【Linux环境配置】EPYC7642双路服务器Ubuntu22.04安装配置纪要

    服务器核心配置为: 双路 EPYC7642 服务器, 显卡 GeForce RTX 3060 , HDMI输出, 千兆网卡x2 …; 补充采购配件: USB/TypeC转千兆网卡(用于笔记本和服务器直连办公), DVI公 to HDMI母转接头(适配老款显示器), VGA公对公显示线, HDMI音频分离器, HDMI线x2, USB转3.5mm外置声卡, 腾

    2024年01月22日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包