V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
kkkbbb
V2EX  ›  Linux

Linux 内核升级问题

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

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

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

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

    现在很多发行版都支持同时安装多个内核,重启的时候可以在启动界面切换内核版本,如果一个版本的内核不能让系统正常工作,可以重启选择旧内核。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5839 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 06:20 · PVG 14:20 · LAX 23:20 · JFK 02:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.