我在同一硬碟的分割區 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 中啟動一樣yum
。apt
!
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 相關。
沒有 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 了!