同じハードディスクのパーティション A に Linux A があり、パーティション B に Linux B があります。ここで、Linux A と入力します。
Linux A のターミナルから Linux B のいくつかのドライバーを削除してインストールすることは可能ですか?
答え1
はい、次の 2 つのアプローチを適用することでこれを実現できます。
初め:
ドライバーがリポジトリまたはインストール スクリプト (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 のカーネル バージョンを指定する必要があります。
2番目:
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 にいます!