答え1
1つの方法は次のとおりです。ストレージディスク。dd
あるいは、これと同様のものを使用して、既存のシステムから生の画像を簡単に作成できます。libvirt
/virt-manager
またはなどを使用してvirtualbox
簡単に仮想マシンを作成することもできます。たとえば、virt-manager
仮想ディスクを作成し、ISOファイルを使用してオペレーティングシステムをここにインストールできます。 memdiskがどのフォーマットをサポートしているのか100%確信できないので、事前に割り当てられraw
た固定サイズのイメージフォーマットを使用する方が良いと思います。
単一の物理パーティションにブート可能な複数のLinuxシステムを置くことが目標である場合、LVMはより簡単な選択です。これには、物理パーティション、論理ボリュームグループ、複数の論理ボリューム(および各論理ボリュームのファイルシステム)の作成、各論理ボリュームへのシステムのマウントまたはコピー(後者の場合はgrubを編集する必要があります)が含まれます。多くの手順のように聞こえますが、ほとんどのLinuxディストリビューションインストーラを使用すると簡単に設定できます。
答え2
このアイデアを数日間悩みましたが、いよいよ実現しました。
まず、VHDファイルをマウントするためのバイナリファイルをコンパイルする必要があります。ただし、VMDK、VDI、およびRAWディスクイメージもマウントできます。ここからこのプログラムをコンパイルするためのソースコードを入手できます。 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.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/などに保存したいと思います。
Debian ベースが私の最初の選択になります...
GRUB4DOSにはいくつかの興味深い実験があります。
http://reboot.pro/topic/20603-linux-from-vhd-how-to/
「UBT-small.vhd」という事前に構築された画像を使用しています...
少しだけ修正すれば、他のブートローダでも動作できると思います。
答え4
私はUbuntuのWUBIが原則としてデフォルトのvdiskブートのLinuxバージョンだと思います。この機能は長い間Ubuntuによって正式に終了しましたが、まだサードパーティ版のwubi uefiが続いています。 Wubiは通常の人々がUbuntuを実行できるように設計されているため、デフォルトのブートとは異なる意図があります。