동일한 하드 디스크의 파티션 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/
yum
이제 Linux B에서 부팅한 것처럼 Linux B에서 작업하고 있습니다. 저장소 명령( , 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
. 또한 청소를 원할 수도 있습니다.모드프로브또는/및udev규칙. 이 접근 방식은 자신이 무엇을 하고 있는지(드라이버가 어떻게 구성되어 있고 그것이 Linux B에 어떻게 영향을 미치는지) 알고 있다면 깨끗하지도 적합하지도 않습니다.
작은 예:
리눅스에서 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
이제 당신은 리눅스 B에 있습니다!