报fatal: kernel too old说明vscode server 1.99+要求内核≥4.18,而centos 7默认3.10.0不满足;推荐降级使用兼容kernel 3.10和glibc 2.17的code-server v4.16.1,而非高风险升级内核。

VSCode Server 启动报 FATAL: kernel too old 怎么办
这是最典型的错误,说明你用的 VSCode Server 版本(1.99+)要求内核 ≥ 4.18,而 CentOS 7 默认是 3.10.0。硬升级内核风险高,但不升又跑不起来——必须二选一:换低版本 code-server 或 升内核到 5.4.x LTS。
推荐优先尝试 code-server v4.16.1(2024 年发布),它仍兼容 kernel 3.10 和 glibc 2.17,无需动系统底层。下载地址直接用 GitHub 官方 release 链接:https://github.com/coder/code-server/releases/download/v4.16.1/code-server-4.16.1-linux-amd64.tar.gz。
- 别下 v5.x 或最新 stable,它们默认要求
glibc >= 2.28 - 解压后检查
bin/code-server是否可执行:file bin/code-server应显示 “ELF 64-bit LSB pie executable”,不是 “statically linked” - 如果提示
libstdc++.so.6: version `GLIBCXX_3.4.25' not found,补装:sudo yum install -y libstdc++
为什么 rpm 包安装 VSCode Desktop 在 CentOS 7 上常失败
因为 VSCode Desktop(code)从 1.85 开始打包依赖较新 libsecret 和 glibc,而 CentOS 7 的 libsecret-1.so.0 是旧版,rpm 安装时会卡在依赖检查。
解决路径很明确:不用最新版,用实测能跑的旧 rpm 包。目前稳定可用的是 code-1.74.3-1673284922.el7.x86_64.rpm(对应 VSCode 1.74.3),下载地址:https://vscode.download.prss.microsoft.com/dbazure/download/stable/97dec172d3256f8ca4bfb2143f3f76b503ca0534/code-1.74.3-1673284922.el7.x86_64.rpm。
- 安装前先装依赖:
sudo yum install -y libsecret-1.so.0 - 不要用
yum localinstall,改用sudo rpm -ivh code-*.rpm,更可控 - 若提示 conflict 或 file overwrite,加
--force --nodeps(仅限测试环境) - 启动时如黑屏或无响应,加
--user-data-dir参数避开旧配置干扰
code-server 自启动脚本写进 /etc/rc.local 为什么重启后失效
CentOS 7 默认使用 systemd,/etc/rc.local 已被弃用,即使加了执行权限,systemd 也可能跳过它或按 strict mode 拒绝运行。
正确做法是写一个 systemd service 文件。例如创建 /etc/systemd/system/code-server.service:
[Unit] Description=code-server After=network.target [Service] Type=simple User=root Environment="PASSWORD=your_pass" WorkingDirectory=/root/code-server ExecStart=/root/code-server/bin/code-server --port 9999 --host 0.0.0.0 --auth password Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload && sudo systemctl enable code-server && sudo systemctl start code-server- 日志查错用:
journalctl -u code-server -f - 别把
PASSWORD写进命令行,systemd 日志可能泄露;改用EnvironmentFile=/etc/code-server.env更安全
Remote-SSH 连接卡在 Starting VS Code Server 怎么排查
这不是网络问题,而是本地 VSCode 和远端 ~/.vscode-server 二进制版本不匹配。VSCode 1.79.2 会自动下载并部署对应版本 server,但如果你手动替换了本地 VSCode,远端残留的旧 server 仍会尝试加载,导致协议握手失败。
- 删掉远端整个
~/.vscode-server目录(注意不是~/.vscode) - 确保本地 VSCode 版本和你期望的 server 版本一致,比如用 VSCode 1.74.3 就别指望它拉 v4.16.1 的 server
- 连接时加
"remote.SSH.enableAgentForwarding": true到 settings.json,避免 SSH key 转发失败 - 如果远端是 CentOS 7,确认
/lib64/libc.so.6确实是glibc 2.17,否则 server 进程启动即崩溃,strace -f ./code-server可捕获缺失符号
真正麻烦的从来不是装不上,而是装上之后版本链断裂——本地、远端、插件、glibc、内核,五个环只要断一个,VSCode Server 就静默失败。盯住 ~/.vscode-server/bin 下的实际二进制名和 ldd 输出,比看文档管用十倍。











