Ich habe Linux A auf Partition A und Linux B auf Partition B derselben Festplatte. Wenn ich jetzt Linux A eingebe.
Ist es möglich, vom Terminal unter Linux A aus einige Treiber unter Linux B zu entfernen und zu installieren?
Antwort1
Ja, Sie können dies tun, indem Sie zwei Ansätze anwenden:
Erste:
Wenn Ihr Treiber aus einem Repository oder über ein Installationsskript (z. B. NVidia-Treiber) bereitgestellt wird, können Sie Partition B von Linux B mounten und proc
, sys
, dev
: mounten.
# 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
Dann chroot
zu /mount/point/partition/B
:
# chroot /mount/point/partition/B/
Jetzt arbeiten Sie in Linux B, als ob Sie in Linux B gebootet hätten. Sie können Repository-Befehle ( yum
, apt
...) und andere verwenden.
!!!Aber du musst daran denken!!!
Der geladene Kernel von Linux A kann sich vom Kernel von Linux B unterscheiden, sodass alle Dienstprogramme, die standardmäßig die Kernelversion als Parameter verwenden ( dkms
, Initramfs-Tools ( dracut
, mkinitrd
...), einige Installationsskripte), fehlschlagen. Sie müssen daher für diese Dienstprogramme die Kernelversion von Linux B als Parameter angeben!
Zweite:
Mounten Sie Partition B von Linux B und entfernen Sie Treiber (Module) in dieser Partition manuell rm /mount/point/partition/B/lib/modules/needed_kernel_version_of_linux_B/module/path/module.ko
. Sie können auch Folgendes bereinigen:Modprobeoder undudevRegeln. Dieser Ansatz ist nicht sauber und geeignet, wenn Sie wirklich wissen, was Sie tun (wie Ihr Treiber organisiert ist und welchen Einfluss er auf Linux B hat).
Kleines Beispiel:
Geben Sie in Linux A lsblk
den Befehl ein. Dadurch erhalten Sie eine Vorstellung von Partitionen, die in Linux A verwendet und gemountet werden, sowie von Partitionen mit leerem Mountpoint. Wenn Sie keine Wechseldatenträger angeschlossen haben, beziehen sich alle Partitionen mit leerem Mountpoint auf Linux B. Erstellen Sie Verzeichnisse, in denen Sie Partitionen von Linux B mounten, und mounten Sie sie:
Einfacher Fall ohne LVM und andere:
# 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
Das Gerät sda3
ist nicht gemountet, daher wird es an Linux B weitergeleitet.
Verzeichnis erstellen /mnt/sda3
und Stammverzeichnis von Linux B mounten:
# mkdir /mnt/sda3
# mount /dev/sda3 /mnt/sda3
Bereiten Sie sich vor auf 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
Jetzt sind Sie in Linux B!