동일한 하드 디스크의 파티션 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를 사용하고 있습니다!