Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
kkkbbb
V2EX  ›  Linux

Linux 内核升级问题

  •  
  •   kkkbbb · Sep 18, 2023 · 4368 views
    This topic created in 1146 days ago, the information mentioned may be changed or developed.
    有没有对 linux 内核了解的 v 友,系统升级高版本的内核是不是系统路径下的 lib 、include 都会替换成和内核的对应版本?这样会不会导致一些应用无法正常使用?
    27 replies  •  2023-09-20 11:38:30 +08:00
    ggsimida0
    ggsimida0
    Sep 18, 2023
    1
    include 和应用运行没啥关系,你在 linux 里面去编译应用才会用到。lib 比较重要,里面会有共享库 so 文件,一般程序都是编译出来动态链接的,就是运行时进行加载,如果兼容性做的比较好,应用应该不需要重新编译就可以正常运行
    aisk
    aisk
    Sep 18, 2023
    2
    不走发行版自己的机制,而是手动替换的,一般都会翻车。
    kkkbbb
    kkkbbb
    OP
    Sep 18, 2023
    3
    @aisk 发行版自己的机制是指通过 make install 安装内核?
    m1nm13
    m1nm13
    Sep 18, 2023
    4
    @aisk #2
    直接 copy /boot/configxxx 发行版的内核配置来编译.
    可能不会稳定,但是起码能开机
    leonshaw
    leonshaw
    Sep 18, 2023
    5
    /lib/modules 每个内核版本独立的。内核和用户态的接口本身都是向下兼容的,包括 include
    lysS
    lysS
    Sep 18, 2023
    6
    这就体现了 docker 的好处
    aisk
    aisk
    Sep 18, 2023
    7
    @kkkbbb 不是
    PTLin
    PTLin
    Sep 18, 2023
    8
    我记得时 make install 安装内核本身到/boot ,make modules_install 安装 编译的模块到/lib/modules ,和现有的不冲突。
    julyclyde
    julyclyde
    Sep 18, 2023❤️1
    9
    @kkkbbb 显然“不是 make install”
    你咋理解的?居然能恰好相反
    julyclyde
    julyclyde
    Sep 18, 2023
    10
    @lysS docker 还能升级内核?
    kkkbbb
    kkkbbb
    OP
    Sep 18, 2023
    11
    @PTLin lib 库是不是也会更新?
    mantouboji
    mantouboji
    Sep 18, 2023
    12
    第一,你可以自己用个虚拟机试验一下,得到第一手经验。不难。

    第二,你不想或者不会动手,那就不要瞎折腾,用发行版自己的升级工具。
    sxzzsf
    sxzzsf
    Sep 18, 2023
    13
    内核手动升级一般就安装如下几个文件:
    /boot/vmlinuz-....
    /boot/initrd.img-....
    /lib/modules/6.x.x
    /boot/grub/grub.cfg 更新添加新内核启动条目
    如果 secureboot 启用,升级后新内核可能无法启动。
    lysS
    lysS
    Sep 18, 2023
    14
    @julyclyde 换个 from 就行
    PTLin
    PTLin
    Sep 18, 2023
    15
    @kkkbbb 不会,你说的不会是 glibc 那些吧。安装内核什么都不影响
    kkkbbb
    kkkbbb
    OP
    Sep 18, 2023
    16
    @PTLin 嗯嗯,确认了下系统的库文件和头文件只有通过发行版的软件包更新的时候会进行更新。
    julyclyde
    julyclyde
    Sep 18, 2023❤️2
    17
    @lysS 好神奇啊……建议你多学习
    jlak
    jlak
    Sep 18, 2023 via iPhone
    18
    需要自己升级的吗?我的 ubuntu server 22.04lts 不知道为什么 apt get install 一些应用时经常提示升级内核 ,两周更新好几次了
    mokiki
    mokiki
    Sep 18, 2023
    19
    内核模块重新安装一下就好,具体要看你用的发行版。
    我用 Gentoo 都是手动编译内核
    kkkbbb
    kkkbbb
    OP
    Sep 18, 2023
    20
    @jlak 我觉得不影响正常使用就不需要吧
    kkkbbb
    kkkbbb
    OP
    Sep 18, 2023
    21
    @jlak 可以关闭包的自动更新
    0superx0
    0superx0
    Sep 18, 2023❤️1
    22
    自编译内核说多都是泪,安装好像没报错,但运行虚拟机或者其它环境老报错,
    版本不知道,现在 ubuntu 都是直接编译成 deb 再安装,这样遇上奇葩问题机率少很多.
    julyclyde
    julyclyde
    Sep 18, 2023
    23
    @0superx0 这年头,编译内核作为一个兴趣爱好还是可以的;作为生产力已经没什么意义了
    zzzkkk
    zzzkkk
    Sep 18, 2023 via Android
    24
    宝贵的时间千万不要浪费在没回报的事上
    deorth
    deorth
    Sep 19, 2023 via Android
    25
    微内核
    limon
    limon
    Sep 20, 2023
    26
    你可以全编进去,没有模块,升级只换个 vmlinuz
    libook
    libook
    Sep 20, 2023
    27
    include 存的是头文件吧,有的你只装预编译的内核不装头文件包也就不会有这一部分。

    不管是库还是应用程序,都看是不是调用内核的特定版本才有的 API ,如果你换了一个 API 不兼容的内核,这些库和应用程序就会因为调用不到相应的 API 而无法正常工作。不过貌似这方面比较少见,绝大多数还是使用比较稳定的 API 的,很长时间里的内核版本都是兼容的。

    如果遇到现有库和应用程序与新内核 API 不兼容的情况,就要看可不可以使用兼容版本的库和应用程序,或者看是不是编译过程支持按照新内核的特性来选择 API 编译。

    现在很多发行版都支持同时安装多个内核,重启的时候可以在启动界面切换内核版本,如果一个版本的内核不能让系统正常工作,可以重启选择旧内核。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1520 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 15:36 · PVG 23:36 · LAX 07:36 · JFK 10:36
    ♥ Do have faith in what you're doing.