다른 파티션에서 Linux 설치를 가상화 할 수있는 방법이 있습니까? 수 있습니다. 예를

기본 아이디어는 다음과 같습니다. VirturalBox 또는 VM웨어에있는 것처럼 다른 Linux 설치를 실행하십시오.

“chroot”를 사용하면 비슷한 작업을 수행 할 수 있습니다. 예를 들어 Arch Linux가 설치된 파티션을 마운트하고 chroot 할 수 있습니다. 그런 다음 몇 가지 명령을 실행할 수 있습니다.

그러나 많은 제한 사항도 있습니다. 예를 들어 “pacman -Syu”가 제대로 작동하지 않습니다 (아마도 잘못되었을 수 있습니다).

비슷한 작업을 수행하는 더 좋은 방법이 있습니까?



답변

chroot가 작동하려면 procfs, sysfs 및 / dev와 같은 커널 파일 시스템을 바인드해야합니다.

이렇게하려면 일반적으로 chrooting 전에 실행합니다.

cd /path/to/chroot/destination
mount -o bind /proc proc
mount -o bind /sys sys
mount -o bind /dev dev

그리고 나서야 당신은로 들어갑니다 /path/to/chroot/destination.

그러나 이것은 자체 커널이 없기 때문에 VM에서 리눅스를 실행하는 것과는 다릅니다. 사용할 수있는 격리 계층이 두 개 더 있습니다. 하나는 LXC 컨테이너 (자체 커널이 없음)이고 다른 하나는 실제 VM 입니다.

둘 다 libvirt로 관리 할 수 ​​있으며 qemu 드라이버lxc 드라이버를 사용 하여 해당 용도로 libvirt를 살펴 보는 것이 좋습니다 .

libvirt를 사용하면 호스트 파일 시스템을 게스트 파일 시스템으로 마운트 할 수도 있습니다 ( 도메인 구성 ¹ 참조 ). 그러나 일반적으로 전체 파티션을 libvirt에 전달하고 나머지를 수행하게하는 것이 더 현명 할 수 있습니다. VM이 실행되는 동안 호스트 시스템에서 직접 파일에 액세스 할 수 없다는 제한이 있습니다 ².

간단한 구성 예는 다음과 같습니다.

<domain type='qemu'> <!-- if you have kvm, put kvm here instead of qemu -->
  <name>my_fancy_vm</name>
  <memory unit='KiB'>524288</memory>
  <vcpu placement='static'>1</vcpu>
  <features>
    <acpi/>
    <apic/>
  </features>
  <os>
    <type arch='x86_64' machine='pc-i440fx-1.6'>hvm</type>
    <boot dev='cdrom' />
    <boot dev='hd' />
  </os>
  <cpu mode='custom'>
    <model>kvm64</model>
  </cpu>
  <pm>
    <suspend-to-mem enabled='no' />
    <suspend-to-disk enabled='no' />
  </pm>
  <devices>
    <!-- for kvm, you have to put /usr/bin/qemu-kvm here -->
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <!-- to directly use a filesystem here, please see the documentation -->
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' />
      <target dev='vda' bus='virtio' />
      <source dev='/dev/partition_used_by_the_other_linux' />
    </disk>
    <serial type='pty'>
      <target port='0' />
    </serial>
    <console type='pty'>
      <target type='serial' port='0' />
    </console>
  </devices>
  <seclabel type='none' />
</domain>

사용할 파티션이 여러 개인 경우 disk섹션 을 복제하여 파티션을 여러 개 만듭니다 . 자세한 내용은 도메인 XML 형식 의 설명서를 참조하십시오 . 또한 네트워킹을 설정하는 방법에 대한 정보도 포함되어 있습니다.

도메인을 설정 한 후 다음을 사용하여 libvirt에서 도메인을 정의 할 수 있습니다.

virsh define path/to/domain.xml

그리고 그것을 시작하십시오 :

virsh start my_fancy_vm  # that is the name chosen in the xml

xml에 정의 된 가짜 직렬 콘솔에 연결하려면 다음을 사용하십시오.

virsh console my_fancy_vm

아무것도 표시되지 않을 수도 있습니다. 아치 리눅스를 사용하도록 구성해야 할 수도 있습니다. lxc 게스트의 경우 콘솔을 바인딩하여 쉘을 얻는 것보다 쉬운 방법이 있지만 시도하지는 않았습니다. lxc와 함께 libvirt를 사용하기위한 튜토리얼이 있습니다.


  1. 당신이 모르는 경우에 하나의 도메인은 하나의 가상 머신입니다.
  2. 글쎄, 당신은 할 수 있지만, 정말로, 정말로해서는 안됩니다. 물론 sshfs를 통해 게스트에 마운트 할 수 있습니다.