![如何欺骗应用程序所见的 Ubuntu 版本?](https://linux22.com/image/852173/%E5%A6%82%E4%BD%95%E6%AC%BA%E9%AA%97%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%89%80%E8%A7%81%E7%9A%84%20Ubuntu%20%E7%89%88%E6%9C%AC%EF%BC%9F.png)
我正在尝试安装英特尔灯塔山在 Ubuntu 13.10 (Saucy Salamander) 64 位上。
但安装程序抱怨它不是受支持的操作系统。安装程序仅支持 12.04、12.10 和 13.04。我查看了脚本,但最终它运行了另一个安装程序(二进制可执行文件),并且它似乎检查了 Ubuntu 版本本身。我刚刚尝试修改/etc/issue
和/etc/issue.net
,但正如预期的那样,我没有成功。
我不确定安装程序使用什么机制来检查操作系统版本。也许吧lsb_release?
有没有什么通用的方法可以欺骗操作系统版本?
其实我对安装Beacon Mountain没多大兴趣,但是我想知道欺骗OS版本的方法。
答案1
关键是/etc/lsb-release
。
我只是修改/etc/lsb-release
并使其正常工作。我以前不知道该文件,但是/etc/issue
。但是,根据我的理解,/etc/issue
文件用于 shell 问候消息,/etc/issue.net
文件用于远程 shell 问候。(FIXME)
我弄清楚了strace lsb_release -a
并发现它读取了/etc/lsb-release
文件。
答案2
我只需要这样做就可以让 saltstack 在 Ubuntu 20.04 的开发版本上运行。
该脚本/usr/lib/lsb_release
是一个导入的python脚本/usr/lib/python3/dist-packages/lsb_release.py
。通过检查脚本,我可以看到它现在读取的/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