tinyvisor (1.8) | 2016-11-13 20:03 |
このページではTinyVisorをインストールし、VMを1個作成し、OSを起動する手順を説明します。 インストール作業はLinux (x86_64)上で行います。
TinyVisorはBIOS環境とUEFI環境のどちらにもインストールすることができます。
流れは次の通りです。
2のインストールする方法は、以下の3つがあります。
次のパッケージが必要ですのでビルドマシンにインストールしてください(他にもあるかもしれません)。
UEFI環境の場合は、次のパッケージもインストールしてください。
ソースツリーのアーカイブを次のページからダウンロードします。
ダウンロードしたら、ソースツリーを展開し、生成されたディレクトリへ移動します。
tar zxvf tinyvisor-*.tar.gz cd tinyvisor*
なお、1.7以降のソースツリーはMercurialで管理しています。 Mercurialのリポジトリから直接ソースコードを取得するには、次のコマンドを実行します。
mkdir tinyvisor cd tinyvisor hg clone http://hg.osdn.jp/view/tinyvisor/tinyvisor-vmm vmm hg clone http://hg.osdn.jp/view/tinyvisor/tinyvisor-bios bios
1.6以前のソースツリーはSubversionで管理しています。 Subversionのリポジトリから直接ソースコードを取得するには、次のコマンドを実行します。
svn checkout http://svn.osdn.jp/svnroot/tinyvisor/trunk tinyvisor cd tinyvisor
1.7以降は、次のコマンドでビルドします。
make -C vmm -j 8 make -C vmm/boot/loader make -C vmm/boot/uefi-loader LC_ALL=C make -C bios -j 8
1.6以前は、次のコマンドでビルドします。
make
USBメモリが /dev/sdf の場合の手順を記載します。 異なる場合は、読み替えてください。
sudo /sbin/sgdisk -Z /dev/sdf GPT data structures destroyed! You may now partition the disk using fdisk or other utilities.
sudo /sbin/gdisk /dev/sdf GPT fdisk (gdisk) version 0.8.5 Partition table scan: MBR: not present BSD: not present APM: not present GPT: not present Creating new GPT entries. Command (? for help): n Partition number (1-128, default 1): First sector (34-492510, default = 2048) or {+-}size{KMGTP}: Last sector (2048-492510, default = 492510) or {+-}size{KMGTP}: Current type is 'Linux filesystem' Hex code or GUID (L to show codes, Enter = 8300): ef00 Changed type of partition to 'EFI System' Command (? for help): p Disk /dev/sdf: 492544 sectors, 240.5 MiB Logical sector size: 512 bytes Disk identifier (GUID): 44D93EB8-59E3-4222-B8CF-089083DC5D67 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 492510 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB) Number Start (sector) End (sector) Size Code Name 1 2048 492510 239.5 MiB EF00 EFI System Command (? for help): w Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!! Do you want to proceed? (Y/N): y OK; writing new GUID partition table (GPT) to /dev/sdf. The operation has completed successfully.
sudo /sbin/mkfs.vfat -F32 /dev/sdf1 mkfs.vfat 3.0.13 (30 Jun 2012)
1.7以降の場合は、次のコマンドを実行します。
sudo vmm/boot/uefi-loader/install.sh -f /dev/sdf1
1.6以前の場合は、次のコマンドを実行します。
sudo ./install_to_usb.sh -e -f /dev/sdf1
USBメモリを挿入して、PCの電源を投入します。
BIOSメニューにおいて、OSがインストールされているHDDの優先順位がUSBメモリの優先順位の方が低く設定されている場合は、USBメモリの優先順位を高くして、再度PCを再起動してください。
USBメモリからVMMがロードされ起動を開始すると、メッセージが画面とCOM1に出力されます。 VMMの起動が完了すると、VM0が実行され始め、Host のUEFIに戻ります。 USBメモリの次の優先順位のHDDからOSがロードされて起動します。
1.7以降の場合は、次のコマンドを実行します。
sudo vmm/boot/uefi-loader/install.sh /dev/sdf1
1.6以前の場合は、次のコマンドを実行します。
sudo ./install_to_usb.sh -e /dev/sdf1 2014年 10月 7日 火曜日 23:19:40 JST
USBメモリを挿入して、PCの電源を投入します。
BIOSメニューにおいて、OSがインストールされているHDDの優先順位がUSBメモリの優先順位の方が低く設定されている場合は、USBメモリの優先順位を高くして、再度PCを再起動してください。
USBメモリからVMMがロードされ起動を開始すると、メッセージが画面とCOM1に出力されます。 VMMの起動が完了すると、VM0が実行され始め、Host のUEFIに戻ります。 USBメモリの次の優先順位のHDDからOSがロードされて起動します。
USBメモリが /dev/sdf の場合の手順を記載します。 異なる場合は、読み替えてください。
sudo /sbin/sgdisk -Z /dev/sdf GPT data structures destroyed! You may now partition the disk using fdisk or other utilities.
USBメモリ全体を使用して一つのパーティションを作成します。
sudo /sbin/fdisk /dev/sdf Welcome to fdisk (util-linux 2.25.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0x6a01f56c. Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): Using default response p. Partition number (1-4, default 1): First sector (2048-1965055, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-1965055, default 1965055): Created a new partition 1 of type 'Linux' and of size 958.5 MiB. Command (m for help): p Disk /dev/sdf: 959.5 MiB, 1006108672 bytes, 1965056 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x6a01f56c Device Boot Start End Sectors Size Id Type /dev/sdf1 2048 1965055 1963008 958.5M 83 Linux Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.
1.7以降の場合は、次のコマンドを実行します。
sudo vmm/boot/loader/install.sh -f -c 'vm0.boot_int18' /dev/sdf 0 1 vmm/boot/loader/bootloader vmm/vmm.elf
1.6以前の場合は、次のコマンドを実行します。
sudo ./install_to_usb.sh -f -c 'vm0.boot_int18' /dev/sdf
なお、「vm0.boot_int18」は、VMMが格納されているUSBメモリの次の起動順位のHDDからVM0のOSの起動を行うことを指示するパラメータです。このパラメータを指定しないと、再度VMMの起動が試みられてパニックします。
USBメモリを挿入して、PCの電源を投入します。
BIOSメニューにおいて、OSがインストールされているHDDの優先順位がUSBメモリの優先順位の方が低く設定されている場合は、USBメモリの優先順位を高くして、再度PCを再起動してください。
USBメモリからVMMがロードされ起動を開始すると、メッセージが画面とCOM1に出力されます。 VMMの起動が完了すると、VM0が実行され始め、Host BIOSのINT18 BIOS CALLが呼び出されます。 USBメモリの次の優先順位のHDDからOSがロードされて起動します。
BIOSによっては、OSが見つからないというエラーメッセージが出力され、OSの起動に失敗することがあります。その場合は、「vm0.boot_int18」の代わりに「vm0.boot_drive=81」を指定してUSBメモリにインストールしてみてください。このパラメータはBIOSのドライブ番号81のHDDからOSを起動することを指示するパラメータです。
1.7以降の場合は、次のコマンドを実行します。
sudo vmm/boot/loader/install.sh -c 'vm0.boot_int18' /dev/sdf 0 1 vmm/boot/loader/bootloader vmm/vmm.elf
1.6以前の場合は、次のコマンドを実行します。
sudo ./install_to_usb.sh -c 'vm0.boot_int18' /dev/sdf
なお、「vm0.boot_int18」は、VMMが格納されているUSBメモリの次の起動順位のHDDからVM0のOSの起動を行うことを指示するパラメータです。このパラメータを指定しないと、再度VMMの起動が試みられてパニックします。
USBメモリを挿入して、PCの電源を投入します。
BIOSメニューにおいて、OSがインストールされているHDDの優先順位がUSBメモリの優先順位の方が低く設定されている場合は、USBメモリの優先順位を高くして、再度PCを再起動してください。
USBメモリからVMMがロードされ起動を開始すると、メッセージが画面とCOM1に出力されます。 VMMの起動が完了すると、VM0が実行され始め、Host BIOSのINT18 BIOS CALLが呼び出されます。 USBメモリの次の優先順位のHDDからOSがロードされて起動します。
BIOSによっては、OSが見つからないというエラーメッセージが出力され、OSの起動に失敗することがあります。その場合は、「vm0.boot_int18」の代わりに「vm0.boot_drive=81」を指定してUSBメモリにインストールしてみてください。このパラメータはBIOSのドライブ番号81のHDDからOSを起動することを指示するパラメータです。
バイナリを/bootにコピーします。以下はビルドマシンとターゲットマシンが同一の場合の例です。ビルドマシンとターゲットマシンが異なる場合はftpやscpなどでターゲットマシンの適当なディレクトリへコピーしたのち、/bootディレクトリに移動してください。
sudo cp vmm/vmm.elf /boot sudo bios/out/bios.bin /boot
/etc/grub.d/40_customに次のエントリを追加します。このエントリは、VMを一つのみ作成します。
menuentry 'VMM (VM0)' --class vmm { insmod part_msdos insmod ext2 set root='(hd0,msdos1)' echo 'Loading VMM ...' multiboot /boot/vmm.elf }
Debianの場合は、update-grubコマンドを実行します。 Fedoraの場合は、grub2-mkconfig -o /boot/grub2/grub.cfgコマンドを実行します。
PCを再起動します。
GRUBメニューが表示されたら、「VMM (VM0)」を選択します。
VMMの起動が開始し、メッセージが画面とCOM1に出力されます。 VMMの起動が完了すると、VM0が実行され始め、再度GRUBメニューが表示されます。 このときは、VMMではなくOSを選択し、OSを起動させます。
複数のOSを起動する手順は、TinyVisorの使い方を参照してください。