ターミナルにアクセスし、同じハードディスクの別のLinuxインストールおよびパーティションで操作を実行する

ターミナルにアクセスし、同じハードディスクの別のLinuxインストールおよびパーティションで操作を実行する

同じハードディスクのパーティション 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 で作業できます。リポジトリ コマンド ( yumapt...) などを使用できます。

!!!しかし、覚えておく必要があります!!!

Linux A のロードされたカーネルは Linux B のカーネルと異なる可能性があるため、デフォルトでカーネル バージョンをパラメーターとして使用するすべてのユーティリティ ( dkms、initramfs ツール ( dracutmkinitrd...)、一部のインストール スクリプト) は失敗します。したがって、これらのユーティリティのパラメーターとして 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 にいます!

関連情報