기본 아이디어는 다음과 같습니다. 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를 사용하기위한 튜토리얼이 있습니다.
- 당신이 모르는 경우에 하나의 도메인은 하나의 가상 머신입니다.
- 글쎄, 당신은 할 수 있지만, 정말로, 정말로해서는 안됩니다. 물론 sshfs를 통해 게스트에 마운트 할 수 있습니다.