如何手动检查 Ubuntu 版本?(例如从硬盘驱动器)

duc*_*cin 4 linux ubuntu version

有一种快速的方法可以检查系统的 ubuntu 版本:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 11.10
Release:        11.10
Codename:       oneiric
Run Code Online (Sandbox Code Playgroud)

但是存储这些信息的文件是什么,我如何访问它们?特别是,我有一个旧分区,上面放着一个死 Linux,我想检查它的 Ubuntu 版本是什么。lsb_release -a仅显示我当前的 Linux 版本...

小智 7

你可以使用/etc/lsb-release

~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=13.04
DISTRIB_CODENAME=raring
Run Code Online (Sandbox Code Playgroud)


gro*_*taj 5

您可以尝试从另一个 Linux 或 LiveCD chroot 进入该系统。让我们假设你的死发行版是在sda2. 首先,挂载分区:

$ mount /dev/sda2 /mnt
Run Code Online (Sandbox Code Playgroud)

现在用重要的二进制文件绑定文件夹以替换可能已死的文件。mount -B将一个目录安装在另一个目录上,实际上替换了它的内容,但没有物理接触它:

$ mount -B /bin /mnt/bin
$ mount -B /sbin /mnt/sbin
$ mount -B /usr/bin /mnt/usr/bin
Run Code Online (Sandbox Code Playgroud)

现在chroot到旧发行版。chroot会假装给定的目录是/(所以在我们的例子中,我们将在离线发行版中运行一个 shell,处理它的文件,除了我们之前绑定的二进制文件)

$ chroot /mnt
Run Code Online (Sandbox Code Playgroud)

现在,您发出的任何命令都将像该分区是您的文件系统根一样工作。lsb_release -a将从您的二进制文件中执行,但将从死发行版的文件中读取。

您可以chroot用于许多其他事情。例如,您可以在不启动的情况下升级 Ubuntu:只需启动 LiveCD,挂载 Ubuntu 的分区,绑定诸如/proc等的关键目录(不要二进制文件 - 这将更新 LiveCD 二进制文件)并do-release-upgrade在 chrooted shell 中运行。