问题描述
我正在尝试在 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