访问终端并在同一硬盘的另一个Linux安装和分区上进行操作

访问终端并在同一硬盘的另一个Linux安装和分区上进行操作

我在同一硬盘的分区 A 上有 linux A,在 B 分区上有 linux B。现在当我进入linux A.

是否可以从 Linux A 上的终端删除并安装 Linux B 上的某些驱动程序?

答案1

是的,您可以通过应用两种方法来做到这一点:

第一的:

如果您的驱动程序是通过存储库或某些安装脚本(如 NVidia 驱动程序)提供的,您可以挂载 linux B 的分区 B 并挂载proc, sys, dev

# mount -t proc proc /mount/point/partition/B/proc
# mount -t sysfs sysfs /mount/point/partition/B/sys
# mount -t devtmpfs devtmpfs /mount/point/partition/B/dev

然后chroot/mount/point/partition/B

# chroot /mount/point/partition/B/

现在您正在 linux B 中工作,就像您在 linux B 中启动一样。您可以使用存储库命令(yumapt...)和其他命令。

!!!但是你要记住!!!

Linux A 加载的内核可能与 Linux B 上的内核不同,因此默认情况下使用内核版本作为参数的所有实用程序(dkms、initramfs 工具(dracut... mkinitrd)、某些安装脚本)都将失败。因此,您需要指定 linux B 的内核版本作为这些实用程序的参数!

第二:

挂载 Linux B 的分区 B,并手动删除此分区中的驱动程序(模块)rm /mount/point/partition/B/lib/modules/needed_kernel_version_of_linux_B/module/path/module.ko。您可能还想清理模组探针或/和乌德夫规则。如果您确实知道自己在做什么(您的驱动程序如何组织以及它如何影响 linux B),则这种方法并不干净且不适合。


小例子:

在linux中A类型lsblk命令。这让您想象在 linux A 中使用和安装的分区以及具有空安装点的分区。如果您没有连接可移动设备,则所有具有空挂载点的分区都与 linux B 相关。创建您将在其中挂载 linux B 分区的目录并挂载它:

没有 LVM 和其他的简单情况:

# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 223.6G  0 disk
├─sda1   8:1    0    12G  0 part  [SWAP]
├─sda2   8:2    0   150G  0 part  /
└─sda3   8:3    0  61.6G  0 part

设备sda3未安装,因此它中继到 linux B。

创建/mnt/sda3目录并挂载linux B的根目录:

# mkdir /mnt/sda3
# mount /dev/sda3 /mnt/sda3

准备chroot

# mount -t proc proc /mnt/sda3/proc
# mount -t sysfs sysfs /mnt/sda3/sys
# mount -t devtmpfs devtmpfs /mnt/sda3/dev

chroot

# chroot /dev/sda3

现在,你已经在linux B 了!

相关内容