터미널에 액세스하여 다른 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/

이제 당신은 리눅스 B에서 부팅하는 것처럼 리눅스 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의 유형 명령입니다 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를 사용하고 있습니다!

관련 정보