LinuxでのマルチブートHDDの作成(GRUB2 + memdisk + grub4dos)
ある特定の瞬間、私は数十個のブート可能なフラッシュドライブを持ち歩くのに疲れていました。 そして、マルチブートUSB HDDを自分で作成しました。
必要なもの:
- grub2でLinuxをインストールしました
- syslinuxのmemdisk
- grub4dosのgrub.exe
- Plopブートマネージャー
- フィラディスク
この方法はフラッシュドライブで機能するはずですが、テストは行われていません。
追加の説明:
- ハイレンのブートCD
- Dr.Web Live CD
- Debian Netinstall
- 究極のブートCD
- SystemRescue CD
- Clonezilla CD
- Memtest cd
- Ubuntu Live CD
- Lubuntu Live CD
- Windows XP CD
ディスクの準備
まず、将来の起動可能なハードディスクをいくつかのパーティションに分割する価値があります。 私は2つのセクションに分割することにしました。1つはブート、もう1つはさまざまなファイル用です。
パーティションテーブルを変更した後、ディスク上のすべてのデータは現在失われます!
パーティションを作成する
#fdisk /dev/sdX
空のパーティションテーブルを作成します。
Command (m for help): o
マルチブート用のセクションを作成します。
Command (m for help): n Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-XXXXXXXXX, default 2048): Last sector, +sectors or +size{K,M,G} (2048-XXXXXXXXX, default XXXXXXXXX): +32G
データのセクションを作成します。
Command (m for help): n Select (default p): p Partition number (1-4, default 2): 2 First sector (67110912-XXXXXXXXX, default 67110912): Last sector, +sectors or +size{K,M,G} (67110912-XXXXXXXXX, default XXXXXXXXX):
最初のセクションを起動可能としてマークし、変更をディスクに書き込みます。
Command (m for help): a Partition number (1-4): 1 Command (m for help): w
ファイルシステムの作成
ファイルシステムを作成します。
- マルチブートのセクション:FAT32
- データセクション:NTFS
#mkfs.vfat -n boot /dev/sdX1 #mkfs.ntfs -f -L data /dev/sdX2
ブートローダーをインストールする
マルチブート用のパーティションをマウントし、その上にgrub2をインストールします。
#mount /dev/sdX1 /mnt #grub-install --no-floppy --root-directory=/mnt /dev/sdX
syslinuxアーカイブから「memdisk / memdisk」ファイル、grub4dosアーカイブから「grub.exe」ファイル、Plopアーカイブから「plpbt.bin」ファイル、firadiskを含むアーカイブから「firadisk.img」ファイルを抽出します。
$unzip -j -d /mnt/boot/ syslinux-XXzip memdisk/memdisk $unzip -j -d /mnt/ grub4dos-XXXzip grub4dos-XXX/grub.exe $unzip -j -d /mnt/ grub4dos-XXXzip grub4dos-XXX/grldr $unzip -j -d /mnt/boot/ plpbt-XXXzip plpbt-XXX/plpbt.bin $7zx -o/mnt/boot/ firadisk-driver-0.0.1.30-f6.7z
画像の準備
isoファイル用のディレクトリを作成します。 Ultimate Boot CD、SystemRescue CD、Clonezilla CD(clz16.iso-バージョンi486、clz32.iso-バージョンi686pae、clz64.iso-バージョンamd64)、Memtest CD、Debian Netinstall、Ubuntu、Lubuntu、Windows XPのファイルをコピーします。
$mkdir /mnt/iso $cp ./iso/{clz16.iso,clz32.iso,clz64.iso,ubcd.iso,sysr.iso,memtest.iso,debian32.iso,debian64.iso,ubuntu32.iso,ubuntu64.iso,lbuntu32.iso,lbuntu64.iso,xp.iso} /mnt/iso/
ハイレンのブートCD
isoファイルから「HBCD」ディレクトリを解凍します。 その後、ファイル「grub.exe」をマルチブート用のパーティションのルートに抽出します。
$7zx ./iso/hiren.iso -o/mnt/ -ir\!HBCD
Dr.Web Live CD
isoファイルから「boot」ディレクトリを一時ディレクトリに解凍し、その内容をマルチブート用のパーティションの「boot」ディレクトリに移動します。
$mkdir /mnt/drweb $7zx ./iso/drweb.iso -o/tmp -ir\!boot $mv /tmp/boot/* /mnt/boot/
BOOT_IDも認識します。
$cat /mnt/drweb/config|grep BOOT_ID export BOOT_ID=xxxxxxxxxxxxxxxxxxxx
grub4dosの構成ファイル「/mnt/boot/drweb.lst」を作成し、次の内容を追加します。
title 1. Dr.Web Russian kernel /boot/vmlinuz ID=< BOOT_ID> root=/dev/ram0 init=/linuxrc init_opts=4 vga=791 splash=silent,theme:drweb CONSOLE=/dev/tty1 BOOT_LANG=ru_RU.UTF-8 quiet initrd /boot/initrd title 2. Dr.Web Advanced options kernel /boot/vmlinuz ID=< BOOT_ID> root=/dev/ram0 init=/linuxrc init_opts=3 CONSOLE=/dev/tty1
Debian Netinstall
debianインストーラーのディレクトリを作成し、それぞれのアーキテクチャのhd-mediaからダウンロードするための「initrd.gz」および「vmlinuz」ファイルをダウンロードします。
$mkdir /mnt/debian $mkdir /mnt/debian/{amd64,i386} $wget -cO /mnt/debian/i386/initrd.gz http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-i386/current/images/hd-media/initrd.gz $wget -cO /mnt/debian/i386/initrd.gz http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-i386/current/images/hd-media/vmlinuz $wget -cO /mnt/debian/amd64/initrd.gz http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/hd-media/initrd.gz $wget -cO /mnt/debian/amd64/initrd.gz http://ftp.nl.debian.org/debian/dists/wheezy/main/installer-amd64/current/images/hd-media/vmlinuz
究極のブートCD
grub4dosの構成ファイル「/mnt/boot/ubcd.lst」を作成し、次の内容を追加します。
title Ultimate Boot CD map (hd0,0)/iso/ubcd.iso (hd32) map --hook root (hd32) chainloader (hd32)
Windows XP CD
grub4dosの構成ファイル「/mnt/boot/win.lst」を作成し、次の内容を追加します。
title 1. Windows XP (1st) map --mem /boot/firadisk.img (fd0) map --mem /iso/xp.iso (hd32) map --hook chainloader (hd32) title 2. Windows XP (2nd) map --mem /boot/firadisk.img (fd0) map --mem /iso/xp.iso (hd32) map --hook find --set-root --ignore-floppies --ignore-cd /ntldr map () (hd0) map (hd0) () map --rehook find --set-root --ignore-floppies --ignore-cd /ntldr chainloader /ntldr
GRUB2の構成ファイル
/mnt/boot/grub/grub.cfg
have_grubenv = true
load_env
insmod part_msdos
脂肪を吸う
gfxmode = 640x480を設定
locale_dir = / boot / grub / localeを設定します
lang = ru_RUを設定
menu_color_highlight = yellow / dark-grayに設定します
menu_color_normal =黒/ライトグレーを設定
color_normal = yellow / blackを設定します
サブメニュー「1。 AVP "{
menuentry "1。 Dr.Web»{
linux /grub.exe --config-file = / boot / drweb.lst
}
}
サブメニュー「2。 ブートCD»{
menuentry "1。 HirenのブートCD»{
linux /grub.exe --config-file = / HBCD / menu.lst
}
menuentry "2。 Ultimate Boot CD»{
linux /grub.exe --config-file = / boot / ubcd.lst
}
menuentry "3。 SystemRescue CD(i586)»{
set isofile = "/ iso / sysr.iso"
ループバックループ$ isofile
linux(ループ)/ isolinux / rescue32 setkmap = ru isoloop = $ isofile
initrd(ループ)/isolinux/initram.igz
}
menuentry "4。 SystemRescue CD(amd64)»{
set isofile = "/ iso / sysr.iso"
ループバックループ$ isofile
Linux(ループ)/ isolinux / rescue64 setkmap = ru isoloop = $ isofile
initrd(ループ)/isolinux/initram.igz
}
menuentry "5。 クローンジラ(i468)»{
設定isofile = "/ iso / clz16.iso"
ループバックループ$ isofile
linux(ループ)/ live / vmlinuz boot = live live-config noswap nolocales edd = on nomodeset ocs_live_run = \ "ocs-live-general \" ocs_live_extra_param = \ "\" ocs_live_keymap = \ "\" ocs_live_batch = \ "no \" ocs_lang = \ "\" vga = 788 ip = frommedia nosplash noeject toram = filesystem.squashfs findiso = $ isofile
initrd(ループ)/live/initrd.img
}
menuentry "6。 Clonezilla(i686pae)»{
設定isofile = "/ iso / clz32.iso"
ループバックループ$ isofile
linux(ループ)/ live / vmlinuz boot = live live-config noswap nolocales edd = on nomodeset ocs_live_run = \ "ocs-live-general \" ocs_live_extra_param = \ "\" ocs_live_keymap = \ "\" ocs_live_batch = \ "no \" ocs_lang = \ "\" vga = 788 ip = frommedia nosplash noeject toram = filesystem.squashfs findiso = $ isofile
initrd(ループ)/live/initrd.img
}
menuentry "7。 Clonezilla(amd64)»{
設定isofile = "/ iso / clz64.iso"
ループバックループ$ isofile
linux(ループ)/ live / vmlinuz boot = live live-config noswap nolocales edd = on nomodeset ocs_live_run = \ "ocs-live-general \" ocs_live_extra_param = \ "\" ocs_live_keymap = \ "\" ocs_live_batch = \ "no \" ocs_lang = \ "\" vga = 788 ip = frommedia nosplash noeject toram = filesystem.squashfs findiso = $ isofile
initrd(ループ)/live/initrd.img
}
}
サブメニュー「3。 別れの魔法»{
menuentry "1。 Parted Magic RAM(i586)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
linux(ループ)/ pmagic / bzImage iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
menuentry "2。 Parted Magic RAM(amd64)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
linux(ループ)/ pmagic / bzImage64 iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
menuentry "3。 別れのマジックライブ(i586)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
linux(ループ)/ pmagic / bzImage iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 livemedia noeject max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
menuentry "4。 別れのマジックライブ(amd64)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
Linux(ループ)/ pmagic / bzImage64 iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 livemedia noeject max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
}
サブメニュー「4。 Debian»{
menuentry "1。 Debian netinstall(i368)»{
linux / debian / i386 / vmlinuz priority = low vga = 788-initrd /debian/i386/initrd.gz
}
menuentry "2。 Debian netinstall(amd64)»{
linux / debian / amd64 / vmlinuz priority = low vga = 788-initrd /debian/amd64/initrd.gz
}
}
サブメニュー「5。 Ubuntu»{
menuentry "1。 Ubuntu Live(i386)»{
set isofile = "/ iso / ubuntu32.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
menuentry "2。 Ubuntuライブ(amd64)»{
set isofile = "/ iso / ubuntu64.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
}
サブメニュー「6。 Lubuntu»{
menuentry "1。 Lubuntuライブ(i386)»{
設定isofile = "/ iso / lbuntu32.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
menuentry "2。 Lubuntuライブ(amd64)»{
set isofile = "/ iso / lbuntu64.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
}
menuentry "7。 Windows»{
linux /grub.exe --config-file = / boot / win.lst
}
サブメニュー「8。 ツール»{
menuentry "1。 Memtest»{
set isofile = "/ iso / memtest.iso"
linux16 / boot / memdisk iso
initrd16 $ isofile
}
menuentry "2。 Plop Boot Manager»{
linux16 /boot/plpbt.bin
}
}
menuentry "9。 最初のhdd»{
insmod ext2
insmod ntfs
ルート設定=(hd1)
チェーンロード+ 1
}
load_env
insmod part_msdos
脂肪を吸う
gfxmode = 640x480を設定
locale_dir = / boot / grub / localeを設定します
lang = ru_RUを設定
menu_color_highlight = yellow / dark-grayに設定します
menu_color_normal =黒/ライトグレーを設定
color_normal = yellow / blackを設定します
サブメニュー「1。 AVP "{
menuentry "1。 Dr.Web»{
linux /grub.exe --config-file = / boot / drweb.lst
}
}
サブメニュー「2。 ブートCD»{
menuentry "1。 HirenのブートCD»{
linux /grub.exe --config-file = / HBCD / menu.lst
}
menuentry "2。 Ultimate Boot CD»{
linux /grub.exe --config-file = / boot / ubcd.lst
}
menuentry "3。 SystemRescue CD(i586)»{
set isofile = "/ iso / sysr.iso"
ループバックループ$ isofile
linux(ループ)/ isolinux / rescue32 setkmap = ru isoloop = $ isofile
initrd(ループ)/isolinux/initram.igz
}
menuentry "4。 SystemRescue CD(amd64)»{
set isofile = "/ iso / sysr.iso"
ループバックループ$ isofile
Linux(ループ)/ isolinux / rescue64 setkmap = ru isoloop = $ isofile
initrd(ループ)/isolinux/initram.igz
}
menuentry "5。 クローンジラ(i468)»{
設定isofile = "/ iso / clz16.iso"
ループバックループ$ isofile
linux(ループ)/ live / vmlinuz boot = live live-config noswap nolocales edd = on nomodeset ocs_live_run = \ "ocs-live-general \" ocs_live_extra_param = \ "\" ocs_live_keymap = \ "\" ocs_live_batch = \ "no \" ocs_lang = \ "\" vga = 788 ip = frommedia nosplash noeject toram = filesystem.squashfs findiso = $ isofile
initrd(ループ)/live/initrd.img
}
menuentry "6。 Clonezilla(i686pae)»{
設定isofile = "/ iso / clz32.iso"
ループバックループ$ isofile
linux(ループ)/ live / vmlinuz boot = live live-config noswap nolocales edd = on nomodeset ocs_live_run = \ "ocs-live-general \" ocs_live_extra_param = \ "\" ocs_live_keymap = \ "\" ocs_live_batch = \ "no \" ocs_lang = \ "\" vga = 788 ip = frommedia nosplash noeject toram = filesystem.squashfs findiso = $ isofile
initrd(ループ)/live/initrd.img
}
menuentry "7。 Clonezilla(amd64)»{
設定isofile = "/ iso / clz64.iso"
ループバックループ$ isofile
linux(ループ)/ live / vmlinuz boot = live live-config noswap nolocales edd = on nomodeset ocs_live_run = \ "ocs-live-general \" ocs_live_extra_param = \ "\" ocs_live_keymap = \ "\" ocs_live_batch = \ "no \" ocs_lang = \ "\" vga = 788 ip = frommedia nosplash noeject toram = filesystem.squashfs findiso = $ isofile
initrd(ループ)/live/initrd.img
}
}
サブメニュー「3。 別れの魔法»{
menuentry "1。 Parted Magic RAM(i586)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
linux(ループ)/ pmagic / bzImage iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
menuentry "2。 Parted Magic RAM(amd64)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
linux(ループ)/ pmagic / bzImage64 iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
menuentry "3。 別れのマジックライブ(i586)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
linux(ループ)/ pmagic / bzImage iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 livemedia noeject max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
menuentry "4。 別れのマジックライブ(amd64)»{
set isofile = "/ iso / pmagic.iso"
ループバックループ$ isofile
Linux(ループ)/ pmagic / bzImage64 iso_filename = $ isofile edd = off load_ramdisk = 1 prompt_ramdisk = 0 rw vga = normal loglevel = 9 livemedia noeject max_loop = 256 vmalloc = 384MiB keymap = en ru_RU
initrd(ループ)/pmagic/initrd.img
}
}
サブメニュー「4。 Debian»{
menuentry "1。 Debian netinstall(i368)»{
linux / debian / i386 / vmlinuz priority = low vga = 788-initrd /debian/i386/initrd.gz
}
menuentry "2。 Debian netinstall(amd64)»{
linux / debian / amd64 / vmlinuz priority = low vga = 788-initrd /debian/amd64/initrd.gz
}
}
サブメニュー「5。 Ubuntu»{
menuentry "1。 Ubuntu Live(i386)»{
set isofile = "/ iso / ubuntu32.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
menuentry "2。 Ubuntuライブ(amd64)»{
set isofile = "/ iso / ubuntu64.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
}
サブメニュー「6。 Lubuntu»{
menuentry "1。 Lubuntuライブ(i386)»{
設定isofile = "/ iso / lbuntu32.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
menuentry "2。 Lubuntuライブ(amd64)»{
set isofile = "/ iso / lbuntu64.iso"
ループバックループ$ isofile
linux(ループ)/ casper / vmlinuz boot = casper iso-scan / filename = $ isofile locale = ru_RU.UTF-8 console-setup / layoutcode = ru noeject noprompt-initrd(loop)/casper/initrd.lz
}
}
menuentry "7。 Windows»{
linux /grub.exe --config-file = / boot / win.lst
}
サブメニュー「8。 ツール»{
menuentry "1。 Memtest»{
set isofile = "/ iso / memtest.iso"
linux16 / boot / memdisk iso
initrd16 $ isofile
}
menuentry "2。 Plop Boot Manager»{
linux16 /boot/plpbt.bin
}
}
menuentry "9。 最初のhdd»{
insmod ext2
insmod ntfs
ルート設定=(hd1)
チェーンロード+ 1
}
テスト中
テストには、 VirtualBoxを使用しました。
次の方法で、物理ディスクを仮想マシンに接続できます。
その後、単にsdX.vmdkファイルを仮想マシンに添付します。 仮想マシンを起動する前に、必ずパーティションをアンマウントしてください。VBoxManage internalcommands createrawvmdk -filename ./sdX.vmdk -rawdisk /dev/sdX