当前位置: 首页>>技术教程>>正文


如何欺骗应用程序所看到的 Ubuntu 版本?

问题描述

我正在尝试在 Ubuntu\xa013.10 (Saucy Salamander) 64 位上安装 Intel Beacon Mountain

但安装程序抱怨它不是受支持的操作系统。安装程序仅支持 12.04、12.10 和 13.04。我查看了脚本,但最终它运行了另一个安装程序(二进制可执行文件),并且它似乎检查了 Ubuntu 版本本身。我只是尝试修改 /etc/issue/etc/issue.net ,但正如预期的那样,我没有运气。

我不确定安装程序使用什么机制来检查操作系统版本。也许 lsb_release

有没有通用的方法来欺骗操作系统版本?

其实我对安装Beacon Mountain并没有多大兴趣,只是想知道如何欺骗操作系统版本。

最佳方法

密钥是 /etc/lsb-release

我只是修改 /etc/lsb-release 并使事情正常工作。\n我之前不知道该文件,但 /etc/issue 。\n但是,根据我的理解,/etc/issue 文件用于 shell 问候消息,/etc/issue.net 文件用于远程 shell 问候。 (整我)

我用strace lsb_release -a算出来,发现它读取了/etc/lsb-release文件。

次佳方法

我只需执行此操作即可让 saltstack 在 Ubuntu 20.04 的开发版本上运行。

脚本 /usr/lib/lsb_release 是一个导入 /usr/lib/python3/dist-packages/lsb_release.py 的 python 脚本。通过检查脚本,我可以看到它现在读取 /usr/lib/os-release 而不是 /etc/lsb_release 并且可以通过设置环境变量 LSB_OS_RELEASE 来覆盖它。

您可以通过设置此变量指向 os-release 文件的修改版本来欺骗正在运行的程序。这将允许您在每个程序而不是整个系统的基础上更改检测到的 Ubuntu 版本。

 $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu Focal Fossa (development branch)
Release:    20.04
Codename:   focal

 $ cat /usr/local/lib/os-release
NAME="Ubuntu"
VERSION="18.04 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

 $ LSB_OS_RELEASE=/usr/local/lib/os-release lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:    18.04
Codename:   bionic

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14235.html,未经允许,请勿转载。