![VHD에 Linux 배포 및 VHD에서 부팅](https://linux55.com/image/94448/VHD%EC%97%90%20Linux%20%EB%B0%B0%ED%8F%AC%20%EB%B0%8F%20VHD%EC%97%90%EC%84%9C%20%EB%B6%80%ED%8C%85.png)
답변1
한 가지 방법은 다음과 같습니다.저장 디스크. dd
또는 이와 유사한 것을 사용하여 기존 시스템에서 원시 이미지를 쉽게 만들 수 있습니다 . libvirt
/ virt-manager
또는 등을 사용하여 virtualbox
쉽게 가상 머신을 생성 할 수도 있습니다 . 예를 들어 를 사용하면 virt-manager
가상 디스크를 생성하고 ISO 파일을 사용하여 여기에 운영 체제를 설치할 수 있습니다. memdisk가 어떤 형식을 지원하는지 100% 확신할 수 없으므로 raw
미리 할당된 고정 크기 이미지 형식을 사용하는 것이 더 낫다고 생각합니다 .
단일 물리적 파티션에 부팅 가능한 여러 Linux 시스템을 두는 것이 목표라면 LVM이 더 간단한 선택입니다. 여기에는 물리적 파티션, 논리 볼륨 그룹, 여러 논리 볼륨(및 각 논리 볼륨의 파일 시스템) 생성, 각 논리 볼륨에 시스템 마운트 또는 복사(후자의 경우 grub을 편집해야 함)가 포함됩니다. 많은 단계처럼 들리지만 대부분의 Linux 배포판 설치 프로그램을 사용하면 쉽게 설정할 수 있습니다.
답변2
이 아이디어를 며칠 동안 고민했는데, 드디어 실현됐습니다.
먼저 VHD 파일을 탑재하기 위한 바이너리 파일을 컴파일해야 합니다. 그러나 VMDK, VDI 및 원시 디스크 이미지도 마운트할 수 있습니다. 여기에서 이 프로그램을 컴파일하기 위한 소스 코드를 얻을 수 있습니다. https://github.com/SophosLabs-zz/vdfuse
하지만 컴파일하기 전에전압 퓨즈이 명령을 실행해야 합니다.
sudo apt install libfuse-dev virtualbox pkg-config
libfuse-devvdfuse 컴파일에 필요한 헤더 파일이 있습니다.
가상 상자디스크 이미지를 설치하는 데 필요한 사전 컴파일된 드라이버가 있습니다.
패키지 구성vdfuse를 컴파일할 때 스크립트에서 사용됩니다.
이제 필요한 파일과 바이너리가 모두 준비되었으므로 vdfuse를 컴파일해 보겠습니다.
따라서 컴파일 명령을 실행해야 합니다.전압 퓨즈아래에 명시된 바와 같이:
./autogen.sh
./configure
make
sudo make install
다음으로 intird.img에서 init 전에 실행할 몇 가지 스크립트를 추가해야 합니다.
다음과 같이 이러한 파일을 만듭니다.
/usr/share/initramfs-tools/hooks/vdfuse
#!/bin/sh -e
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
. /usr/share/initramfs-tools/hook-functions
copy_exec /usr/local/bin/vdfuse /sbin
/usr/share/initramfs-tools/scripts/init-top/vdfuse
#!/bin/sh -e
PREREQ="udev"
prereqs()
{
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
if [ ! -z $vdisk ]; then
mkdir /vdhost
mkdir /dev/vdhost
mount -t ntfs $host /vdhost/
vdfuse -t VHD -f /vdhost$vdisk /dev/vdhost
mount -t ext4 $ROOT /root
fi
/usr/share/initramfs-tools/scripts/init-bottom/vdhost
#!/bin/sh -e
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
if [ -d ${rootmnt}/vdhost ]; then
mount -n -o move /vdhost ${rootmnt}/vdhost
fi
다음으로, 다음 명령을 실행하여 이러한 파일을 실행 가능하게 만들어야 합니다.
sudo chmod +x /usr/share/initramfs-tools/hooks/vdfuse
sudo chmod +x /usr/share/initramfs-tools/scripts/init-top/vdfuse
sudo chmod +x /usr/share/initramfs-tools/scripts/init-bottom/vdhost
이제 다음 명령을 사용하여 새 커널을 빌드해야 합니다.sudo update-initramfs -k all -c
이것이 Linux에서 해야 할 전부입니다. 마지막으로 가상 디스크 이미지를 부팅하도록 grub을 설정하는 것입니다.
다음은 grub.cfg 파일에 추가해야 하는 명령입니다.
set vhd=/vhd/Ubuntu.vhd
set vdhost
search --no-floppy -s root -f $vhd
loopback lp0 $vhd tdisk=VHD
linux (lp0,1)/vmlinuz root=/dev/vdhost/Partition1 vdisk=$vhd host=/dev/sda1 quiet splash
initrd (lp0,1)/initrd.img
/dev/sda1을 VHD가 있는 장치로 변경합니다.
답변3
또한 VHD에서 Linux를 부팅하고 VHD를 HD/USB/SD/등에 저장하고 싶습니다.
데비안 기반이 나의 첫 번째 선택이 될 것입니다 ...
GRUB4DOS에는 몇 가지 흥미로운 실험이 있습니다.
http://reboot.pro/topic/20603-linux-from-vhd-how-to/
"UBT-small.vhd"라는 사전 빌드된 이미지 사용 중...
약간만 수정하면 다른 부트로더에서도 작동할 수 있을 것 같아요...
답변4
나는 Ubuntu의 WUBI가 원칙적으로 기본 vdisk 부팅의 Linux 버전이라고 생각합니다. 이 기능은 오랫동안 Ubuntu에 의해 공식적으로 종료되었지만 여전히 타사 버전 wubi uefi가 계속되고 있습니다. Wubi는 일반 사람들이 Ubuntu를 실행할 수 있도록 설계되었으므로 기본 부팅과는 다른 의도를 가지고 있습니다.