palm84.com

革命的愛熊主義者同盟!

SYSLINUXでマルチブート【基本編】

内容古いです

最終更新日は 2011.6.2 です!ご注意。

2009.8.8 書きかけ中ですが公開してもうたです...

INDEX

これって何

作業環境は、Windows XP です。

【2013.2.21 追記】SYSLINUX バージョン 5.x では・・・

いろいろ変更されてます。このページは変更前のものなのでご注意。後日修正する予定です。orz

バージョン 4.x を使う方が楽かもしれません。

※ 「USBメモリブート初体験」でこれをいきなり!(何)、はやめておいた方がいいと思われます。

めちゃ初歩的・基本的ですが、SYSLINUX ブートローダを使い、マルチブートなUSBメモリを作成する方法。内容は設定ファイルを読めば誰でも(?)できるかなレベルです。

また、USBメモリ用に作成したファイルを基に、マルチブートCD (ISOLINUX)、PXEネットワークブート用サーバ (PXELINUX)、の設定方法も書いてみたり。

※ あんまり根つめると、疲れるのでご注意(何)。お試し気分でのんびり行きませう。

【私的】使用目的は?

一般的な用途にも一応は使えますけど、メンテナンスってやつでありんす。

  • バックアップ・リカバリーイメージ作成
  • GRUB が壊れた Linux の起動
  • メモリーテスト(増設時とか)
  • 起動しない Windows のファイル救出
  • Windows XP のクリーンインストール(Windows PE など使用)
  • Linux のインストール
  • ウイルス・スキャン
  • fdisk, dd, gpart, parted, ...
  • 簡易サーバ

などなどであります。(めちゃ私的)

なぜに SYSLINUX
  • FATパーティションで使える
  • Linux LiveCDの多くは ISOLINUX 使用なので、設定ファイルの仕様がほぼ共通
  • インストールが簡単
  • 構造が単純
    • Windowsと同様、アクティブパーティションのブートセクタ + ブートローダファイルでブート
  • USBメモリの内容が(一部除き)ISOLINUX, PXELINUX でも使える
  • GRUB(for DOS) や FreeDOS をチェインロードできる

※ 実際には、SYSLINUX でできることのごく一部しか使ってなかったりしますが...私のスキルの限界ということです。orz

では短所はというと...

  • FAT(ext2)パーティションでしか使えない。NTFSなUSB HDなどで使えない
  • ファイルのロードはインストールしたパーティションのみ

PBRや GRUB for DOS, NTLDR/BOOTMGR のチェインロードは可能なので、併用することで欠点は補えるかなと思います。

とりあえず以下をマルチブートさせるでござる。

  • FDイメージ --- memdisk 使用、仮想ドライブで
  • Linux LiveCD --- Linuxだし(そのまま)
    • KNOPPIX 5.3.1CD (※ バージョン 6.x でもやり方の基本は同じ)
  • Windows PE (2.0 以降) --- chain.c32 使用 + bootmgr をチェインロード
    • or --- isoイメージを grub.exe
  • FreeDOS --- FDイメージ or chain.c32 でチェインロード
  • GRUB for DOS --- grub.exe をチェインロード
  • Linux(ネットワーク)インストーラ --- Linuxだし(そのまま)
  • Memtest86+ --- バイナリを kernel として指定
おおまか手順
  1. 必要ファイルをダウンロード
  2. syslinux ディレクトリに必要ファイルをコピー
  3. アイテムのファイルをそれぞれディレクトリ作成してコピー
  4. syslinux ディレクトリにブートメニュー設定ファイル作成

※ USBメモリへの書き込みは遅いので、一旦HD上の一時ディレクトリで作業後にUSBメモリへ一括コピーした方が楽だと思います。HD上の一時作業ディレクトリは、ネットワークブートやマルチブートCD作成用にも使えますので。

事前準備

バックアップ

MBR,ブートセクタも含め全体をイメージファイルとしてバックアップできます。もちろん復元も可能。

パーティションの作成

※既にUSBメモリがブート用として使えている場合はこの作業は不要です。

FD扱い(* USB Legacy SupportFD Emulation)でのブート可能なPCではパーティションの作成(正確にはMBRのないFD形式でなくMBRにパーティションテーブルがあるHD形式にする)は不要ですが、両方で使えるように変更しておいた方がいいと思われます。

最近では購入時に既に作成されているものも多いのですけど...。

パーティションはとりあえず一個で構わない。(Windowsでは先頭パーティションしかドライブとして認識しません)

※尚、SDメモリでは、デジタルカメラ・携帯電話などで使えなくなることもあるので、その辺はご覚悟の上にて。

作成方法は色々ありますが、Linuxのfdiskコマンドを使うのがもっとも確実かなと思います。

参考リンク

ダウンロード

SYSLINUX
Linux LiveCD
Windows上でisoイメージのファイルへの展開(抽出)

仮想CDソフトやWinRARなどでも可能ですが、Windows上ではファイル名がすべて大文字になってしまうことがあるため、下記をおすすめしときます。

KNOPPIX 5.3.1CD
FreeDOS

ファイルへの展開はFDに書き込んでもいいけど、Universal Extractor | LegRoom.net (UniExtract Binary Archive)とかでも可能

GRUB for DOS
Linux インストーラ

※ Fedora はだめになってるかも?すみません。

ネットワーク(HTTP,FTP)インストール用カーネルが用意されているディストリならどれでもできますが、とりあえず下記のものを設定。

インストール用カーネル(linux, vmlinuz など)と ミニルート(initrd.img, initrd.gz など)をダウンロード

i386 (x86)
amd64 (x86_64)
Memtest86+

syslinuxディレクトリ

SYSLINUX関連ファイルなど、この syslinux ディレクトリに保存する。

【注意】/boot/syslinux ディレクトリがあると、そちらが優先されてしまいます。/boot/syslinux ディレクトリを作らないように。

USBメモリの syslinux ディレクトリに必要ファイルをコピー。ブートメニュー用設定ファイル作成

USBメモリ
│  
├─syslinux (※ディレクトリ作成)
│      chain.c32
│      jp106.kbd  -- ※あれば
│      memdisk
│      menu.c32
│      poweroff.com
│      reboot.c32
│      syslinux.cfg  -- 作成
  1. 下記を syslinux ディレクトリへコピー
    • \com32\menu\menu.c32
    • \memdisk\memdisk
    • \com32\modules \com32\chain\chain.c32
    • \com32\modules\reboot.c32
    • \modules\poweroff.com
    • jp106.kbd
    • jp106.kbd
USBメモリへSYSLINUXのインストール

win32\syslinux.exe をUSBメモリのルートにコピーした場合は、仮にUSBメモリが X: ドライブだと仮定致しますとこんなかんじ。コマンドプロンプトから

※ Vista/7ではコマンド プロンプトを「管理者として実行」すること!

X:
syslinux.exe -ma X:

または、

X:
syslinux.exe --install --active --mbr X:

【注意!】ドライブ文字を間違うとWindowsが起動しなくなることもありますので注意。(※ 上記コマンドでは内蔵HD、USB HDへはインストールできない筈ですけど...)

めも

アイテム投入

まず、USBメモリにディレクトリを作成しておきませう

USBメモリ
 |  
 +---syslinux
 |
 +---KNOPPIX
 +---bootdisk
 +---debian
 |   \---gtk
 +---fedora
 +---ubuntu
\---vine

必要なものを設定。USBメモリへのコピーは容量に合わせて。(※すべて入れると 900 MB 程。)

FDイメージ

  1. bootdisk ディレクトリへFDイメージをコピー

とりあえずは、BG-Rescue Linux (rescue-0.9.1.img) とか?

Knoppix 5.3.1CD

  1. KNOPPIXディレクトリへisoイメージ内の下記ファイルをコピー
    • /boot/isolinux ディレクトリの内容
    • /KNOPPIX ディレクトリ内の内容

バージョン 6.x でもやり方は同じで。

Windows PE 2.0

※ Windows 7 PCがあるなら「システム修復ディスク」を使いませう。

ファイル作成後に。

バラしたファイルから
  1. ISOフォルダの内容をそのままUSBメモリのルートへコピー
isoイメージから
  1. isoイメージをルートへ、ファイル名はとりあえず WinPEx86.iso などにする

FreeDOS

FDイメージをロード
  1. bootdisk ディレクトリへ balder10.img をコピー
kernel.sys をチェインロード(USBメモリから直接ブート)
  1. USBメモリのルートへコピー
    • command.com
    • kernel.sys
    • keyb.exe
    • keyboard.sys
    • keybrd2.sys
  2. 他、himem.exe, devload.com, edit.exe, xcopy.exe など

GRUB for DOS

  1. USBメモリルートへ下記ファイルをコピー
    • grub.exe
    • menu.lst

Linux インストーラ

  1. 下記ディレクトリへ其々のインストール用カーネル(linux, vmlinuz など)と ミニルート(initrd.img, initrd.gz など)をコピー
    • /debian
    • /fedora
    • /ubuntu
    • /vine

Memtest86+

  1. syslinuxディレクトリへ下記ファイルをコピー
    • memtest86+-x.xx.binmemtest にリネームしてコピー

syslinux.cfg 作成

syslinux ディレクトリにブートオプション設定ファイル syslinux.cfg を作成しませう。

DEFAULT /syslinux/menu.c32
MENU TITLE SYSLINUX Boot Options Menu
PROMPT 0
KBDMAP /syslinux/jp106.kbd
MENU ROWS 14
MENU TABMSGROW 19
MENU CMDLINEROW 19

LABEL FDimage
KERNEL /syslinux/memdisk
APPEND initrd=/bootdisk/fdimage.img

LABEL KNOPPIX
KERNEL /KNOPPIX/linux
APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=/KNOPPIX/minirt.gz nomce highres=off loglevel=0 libata.atapi_enabled=1 quiet SELINUX_INIT=NO nmi_watchdog=0 BOOT_IMAGE=knoppix

LABEL WinPE
KERNEL /syslinux/chain.c32
APPEND ntldr=/bootmgr

LABEL WinPEx86.iso
KERNEL /grub.exe
APPEND --config-file="find --set-root /WinPEx86.iso;map /WinPEx86.iso (0xff) || map --mem /WinPEx86.iso (0xff);map --hook;chainloader (0xff);rootnoverify (0xff)"

LABEL FreeDOS
KERNEL /syslinux/chain.c32
APPEND freedos=/kernel.sys

LABEL FreeDOS-Balder
KERNEL /syslinux/memdisk
APPEND initrd=/bootdisk/balder10.img

LABEL GRUB4DOS
KERNEL /grub.exe
APPEND --config-file="configfile /menu.lst"

LABEL debian
KERNEL /debian/linux
APPEND vga=normal initrd=/debian/initrd.gz locale=ja_JP

LABEL debian-gtk
KERNEL /debian/gtk/linux
APPEND vga=788 initrd=/debian/gtk/initrd.gz locale=ja_JP

LABEL fedora
KERNEL /fedora/vmlinuz
APPEND initrd=/fedora/initrd.img devfs=nomount

LABEL ubuntu
KERNEL /ubuntu/linux
APPEND vga=normal initrd=/ubuntu/initrd.gz locale=ja_JP

LABEL vine
KERNEL /vine/vmlinuz
APPEND initrd=/vine/initrd.img devfs=nomount

LABEL Memtest86+
KERNEL /syslinux/memtest

LABEL poweroff
MENU LABEL * Poweroff *
KERNEL /syslinux/poweroff.com

LABEL reboot
MENU LABEL *  Reboot  *
KERNEL /syslinux/reboot.c32
  • DEFAULT - /syslinux/menu.c32 を指定
  • MENU TITLE - メニューのタイトル
  • PROMPT - 0 にしないとコマンドモードになる
  • KBDMAP - キーボード配列をJP仕様に(アンダースコアはShift-0
  • MENU ROWS - メニュー行数(多い場合はスクロールで表示)
  • MENU TABMSGROW - メニュー下メッセージの行番号(項目数 +5 とする)
  • MENU CMDLINEROW - オプション編集時の行番号(項目数 +5 とする)
  • 最終行番号は 24
  • LABEL は本来コマンドモード用で、メニュー用には MENU LABEL が指定できますが、とりあえず簡素化ということで

FDイメージ

memdisk を使い、仮想FDドライブとしてオンメモリで起動。

この例では fdimage.img となってますが、実際のファイル名に変更してクダサイ。

LABEL FDimage
KERNEL /syslinux/memdisk
APPEND initrd=/bootdisk/fdimage.img

XP版MS-DOS起動ディスクやGRUB起動ディスクなど raw オプションを付けないと起動できないかもしれません。

LABEL FDimage
KERNEL /syslinux/memdisk
APPEND raw initrd=/bootdisk/fdimage.img

※ 一部の小さなisoイメージなどもオンメモリでの起動が可能です。isoオプションを追記します。

LABEL ISOimage
KERNEL /syslinux/memdisk
INITRD /bootdisk/hoge.img
APPEND iso
めも

KNOPPIX 5.3.1CD

とりあえずデフォルトの設定だけですが。元の isolinux.cfg から設定を抜き出してファイル参照のパスを絶対パスに変更。

LABEL KNOPPIX
KERNEL /KNOPPIX/linux
APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=/KNOPPIX/minirt.gz nomce highres=off loglevel=0 libata.atapi_enabled=1 quiet SELINUX_INIT=NO nmi_watchdog=0 BOOT_IMAGE=knoppix
  1. KERNEL linux/KNOPPIX/linux へ置換
  2. initrd=minirt.gzinitrd=/KNOPPIX/minirt.gz へ置換

バージョン 6.x でもやり方は同じで。

めも

Windows PE 2.0

SYSLINUXの chain.c32 モジュールで bootmgr をチェインロードします。

または、grub.exe でisoイメージからブート。

※ 前者の方法はNTシグネチャ関連なのかうまく行かないこともあるので、isoイメージの方が確実かも?

LABEL WinPE
KERNEL /syslinux/chain.c32
APPEND ntldr=/bootmgr

LABEL WinPEx86.iso
KERNEL /grub.exe
APPEND --config-file="find --set-root /WinPEx86.iso;map /WinPEx86.iso (0xff) || map --mem /WinPEx86.iso (0xff);map --hook;chainloader (0xff);rootnoverify (0xff)"
めも

FreeDOS

前者がUSBメモリから直接(C:ドライブまたは A:,B:)、後者はFDイメージを仮想Aドライブとしてブート(USBメモリはC:またはB:)。

LABEL FreeDOS
KERNEL /syslinux/chain.c32
APPEND freedos=/kernel.sys

LABEL FreeDOS-Balder
KERNEL /syslinux/memdisk
APPEND initrd=/bootdisk/balder10.img
めも

GRUB for DOS

KERNEL に grub.exe を指定するだけ。念のため configfile でUSBメモリ内の menu.lst を指定。

LABEL GRUB4DOS
KERNEL /grub.exe
APPEND --config-file="configfile /menu.lst"
めも

Linux インストーラ

基本的には、kernelinitrd を指定するだけ。他のオプション(パラメータ)はなしでも。

LABEL debian
KERNEL /debian/linux
APPEND vga=normal initrd=/debian/initrd.gz locale=ja_JP

LABEL debian-gtk
KERNEL /debian/gtk/linux
APPEND vga=788 initrd=/debian/gtk/initrd.gz locale=ja_JP video=vesa:ywrap,mtrr

LABEL fedora
KERNEL /fedora/vmlinuz
APPEND initrd=/fedora/initrd.img

LABEL ubuntu
KERNEL /ubuntu/linux
APPEND vga=normal initrd=/ubuntu/initrd.gz locale=ja_JP

LABEL vine
KERNEL /vine/vmlinuz
APPEND initrd=/vine/initrd.img
めも

Memtest86+

kernelmemtest(バイナリ)を指定するだけ。

LABEL Memtest86+
KERNEL /syslinux/memtest
めも

スクリーン・ショット

f:id:palm84:20210118115734p:plain

Tabキーを押すとブートオプションを編集できます。Enterでブート、Escでキャンセル。

※ アンダースコア_Shift-0です。

f:id:palm84:20210118115739p:plain

Escでコマンドライン・モードになります。何も入力せずにEnterを押すとメニューに戻ります。

f:id:palm84:20210118115744p:plain

もっと入れたい!

とりあえずは、サブディレクトリにファイルをコピーし、sylinux.cfg に追記するだけでもいいのですが、選択オプションの多い場合など、メニューの項目が増えすぎて別ファイルに切り替えないとシンドイこともあるかと。

メニューを切り替えるには

Linux LiveCDの元々のブート設定ファイルである isolinux.cfg などを表示します。

  • /syslinux/syslinux.cfg に追記
LABEL hoge
KERNEL /syslinux/menu.c32
APPEND /hoge/isolinux.cfg

しかしながら、元の isolinux.cfg は殆ど場合相対パスでファイル名のみ記述となってるので、これをルートからの絶対パスに変更する必要があります。

  • DEFAULT行の変更
DEFAULT /syslinux/menu.c32

Esc Enter で最初のメニューに戻れます。

  • ファイルのパスの変更
KERNEL /hoge/vmlinuz
APPEND vga=788 initrd=/hoge/initrd.img 

この他にもファイルの参照があればすべて絶対パスへ変更します。

また、ISOイメージの内容をサブディレクトリにコピーした場合は原則としてオプションの指定が必要になります。

InetBoot (KNOPPIX 5.3.1 Remastered CD)

HTTPサーバが必要です。KNOPPIX起動後はUSBメモリの差換えが可能です。

HTTPサーバのisoイメージをマウントしてブートします。

  • USBメモリに inetboot ディレクトリを作成
  • inetboot ディレクトリへダウンロードファイルをコピー
  • /syslinux/syslinux.cfg に追記
LABEL InetBoot
KERNEL /inetboot/linux
APPEND /initrd=inetboot/minirt.gz netdir=http://192.168.0.2/knoppix_v5.3.1CD_20080326-20080520.iso type=knoppix ramdisk_size=100000 lang=ja screen=1024x768

【注意】IPアドレスをサーバのものに合わせて修正してクダサイ!

HTTPサーバの設定

※Windowsなら下記の AN HTTPD が簡単かも。

  1. isoイメージのダウンロード
  2. HTTPサーバのドキュメントルートにisoイメージをコピー
    • AN HTTPD の初期設定では、httpd.exe のあるディレクトリ
めも

SystemRescueCd

※【注意】systemrescuecd-x86-1.5.0.iso の例

  • USBメモリに sysres15 ディレクトリを作成
  • sysres15 ディレクトリへisoイメージ内の下記をコピー
    1. すべてそのまま
    2. isolinuxディレクトリの内容
    3. 後はそのまま
  • /syslinux/syslinux.cfg に追記
LABEL SystemRescueCd
KERNEL /syslinux/menu.c32
APPEND /sysres15/isolinux/isolinux.cfg
  • /sysres15/isolinux/isolinux.cfg を編集
    1. 1行目:DEFAULT /syslinux/menu.c32
    2. 2行目:削除
    3. ファイル参照のパスをすべて絶対パスへ変更
    4. APPEND行に scandelay=5 subdir=sysres15 を追記
    5. 2行目:下記 LABEL を挿入追記
  • 2行目に挿入追記
LABEL default
KERNEL /sysres15/isolinux/rescuecd
APPEND initrd=/sysres15/isolinux/initram.igz scandelay=5 subdir=sysres15
めも

PING(Partimage Is Not Ghost)

※【注意】バージョン 3.00.02 の例

  • USBメモリに ping ディレクトリを作成
  • ping ディレクトリへisoイメージ内の下記をコピー
    • すべてそのまま
  • /syslinux/syslinux.cfg に追記
LABEL PING
KERNEL /ping/kernel
APPEND vga=normal devfs=nomount pxe ramdisk_size=55000 load_ramdisk=1 init=/linuxrc prompt_ramdisk=0 initrd=/ping/initrd.gz root=/dev/ram0 rw noapic nolapic lba combined_mode=libata ide0=noprobe nomce pci=nomsi irqpoll quiet
めも

Clonezilla Live

※【注意】clonezilla-live-1.2.3-27.zip の例

  • USBメモリに live ディレクトリを作成
  • live ディレクトリへ展開した下記ファイルをコピー
    1. liveディレクトリの内容
    2. syslinuxディレクトリの内容
  • /syslinux/syslinux.cfg に追記
LABEL Clonezilla
KERNEL /syslinux/menu.c32
APPEND /live/syslinux.cfg
  • /live/syslinux.cfg を編集
    1. 4行目:DEFAULT /syslinux/menu.c32
めも
GRUB for DOS の CD-ROM Emulation

isoイメージからブートします。あんまり確実とは言えないかも。

下記は、menu.lst に追記して GRUB for DOS から起動する例。

  • isoイメージをルートに保存
  • menu.lst に下記を追記
title Linux Live == clonezilla-live-1.2.3-27.iso (from iso)
find --set-root /clonezilla-live-1.2.3-27.iso
map --heads=0 --sectors-per-track=0 /clonezilla-live-1.2.3-27.iso (0xff)
map --hook
root (0xff)
kernel /live/vmlinuz boot=live union=aufs noswap nolocales noprompt ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="ja_JP.UTF-8" vga=791 ip=frommedia toram=filesystem.squashfs findiso=/clonezilla-live-1.2.3-27.iso
initrd /live/initrd.img

Parted Magic

※【注意】pmagic-usb-4.8.zip の例

  • USBメモリに pmagic ディレクトリを作成
  • pmagic ディレクトリへ下記をコピー
    1. boot\syslinux ディレクトリの内容
    2. pmagic ディレクトリの内容
  • /syslinux/syslinux.cfg に追記
LABEL Parted_Magic
KERNEL /syslinux/menu.c32
APPEND /pmagic/syslinux.cfg
  • /pmagic/syslinux.cfg を編集
    1. 1行目に挿入追記:DEFAULT /syslinux/menu.c32
    2. ファイル参照のパスを変更
    3. 挿入追記:MENU HELPMSGROW 20
GRUB for DOS の CD-ROM Emulation

isoイメージからブートします。設定が楽ですが、あんまり確実とは言えないかも。

  1. isoイメージをルートに保存
  2. syslinux.cfgに追記
LABEL PartedMagic(from-iso)
KERNEL /grub.exe
APPEND --config-fie="map /pmagic-4.8.iso (0xff) || map --mem /pmagic-4.8.iso (0xff);map --hook;chainloader (0xff)"

※ ルート以外にコピーする場合は、追加パラメータ指定(例: iso_filename=/syslinux_multi/pmagic-4.8.iso)が必要。

下記は、 menu.lst に追記して GRUB for DOS から起動する例。

title Linux Live == Parted Magic 4.8 (from /syslinux_multi/pmagic-4.8.iso)
find --set-root /syslinux_multi/pmagic-4.8.iso
map /syslinux_multi/pmagic-4.8.iso (hd32)
map --hook
root (hd32)
kernel /pmagic/bzImage edd=off noapic load_ramdisk=1 prompt_ramdisk=0 rw vga=791 loglevel=0 max_loop=256 keymap=jp106 iso_filename=/syslinux_multi/pmagic-4.8.iso
initrd /pmagic/initramfs

Puppy Linux

※【注意】puppy-4.1.2.1-JP.iso の例

  • USBメモリに puppy ディレクトリを作成
  • puppy ディレクトリへisoイメージ内の下記をコピー
    1. すべてそのまま
  • /syslinux/syslinux.cfg に追記
LABEL Puppy
KERNEL /puppy/vmlinuz
APPEND initrd=/puppy/initrd.gz psubdir=puppy
めも
  • USBメモリのみ検索 - pmedia=usbflash
  • USB CDのみ検索 - pmedia=usbcd

SLAX

※【注意】slax-ja-6.0.9-1.iso の例

  • USBメモリに slax6 ディレクトリを作成
  • slax6 ディレクトリへisoイメージ内の下記をコピー
    1. すべてそのまま
  • /syslinux/syslinux.cfg に追記
LABEL SLAX6
KERNEL /syslinux/menu.c32
APPEND /slax6/boot/slax.cfg
  • /slax6/boot/slax.cfg を編集
    1. 3行目:DEFAULT /syslinux/menu.c32
    2. ファイル参照のパスをすべて絶対パスへ変更
    3. APPEND行に slax=slax6/ を追記
めも

Berry Linux

※【注意】berry-1.00.iso の例

  • USBメモリに BERRY ディレクトリをコピー
  • Setup ディレクトリ内の vmlinuzinitrd.gzBERRY ディレクトリへコピー
  • /syslinux/syslinux.cfg に追記
KERNEL /BERRY/vmlinuz
APPEND initrd=/BERRY/initrd.gz cdrom lang=ja video=vesa:ywrap,mtrr vga=785 splash=silent overlay=/berry/berry.img
めも

Paragon Backup & Recovery

※ Normal Mode のみの起動となります。

  • USBメモリに paragon ディレクトリを作成
  • paragon ディレクトリへ作成した Recovery Media(または C:\Program Files\Paragon Software\Backup and Recovery 10 Free Edition\iso\bootcd.iso内の下記ファイルをコピー
    1. すべてそのまま
  • /syslinux/syslinux.cfg に追記
LABEL Paragon
KERNEL /paragon/vmlinuzp
APPEND initrd=/paragon/initrd.gz vga=0x314 language=en_US.UTF-8 medialable=

Seagate DiscWizard (True Image)

  • USBメモリに ti ディレクトリを作成
  • ti ディレクトリへ作成したメディアの下記ファイルをコピー
    1. Recovery Manager ディレクトリ内のファイル
  • /syslinux/syslinux.cfg に追記
LABEL Seagate_DiscWizard 
KERNEL /ti/kernel.dat
APPEND initrd=/ti/ramdisk.dat /S rw mbrcrcs=on video=vesa vga=791 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=32768 quiet

True Image WD Edition

  • USBメモリに ti_wd ディレクトリを作成
  • ti_wd ディレクトリへ作成したメディアの下記ファイルをコピー
    1. Recovery Manager ディレクトリ内のファイル
  • /syslinux/syslinux.cfg に追記
LABEL TrueImage_WD_Edition
KERNEL /ti_wd/kernel.dat
APPEND initrd=/ti_wd/ramdisk.dat /S rw mbrcrcs=on video=vesa vga=0x314 load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=40948 quiet

ネットワークブート用起動ディスク

(PXE)ネットワークワークブート非対応PCでネットワークブートする際に使います。

※ 対応PCで使うと若干遅くなったりします。GRUB for DOS の CD ROM Emulation(ISOイメージからブート)などは使えないことがあります。

  1. pxe-on-a-disk.floppysyslinux ディレクトリへコピー
  2. pxeon.img にリネーム
  • /syslinux/syslinux.cfg に追記
LABEL PXE-on-a-disk
KERNEL /syslinux/memdisk
APPEND /syslinux/pxeon.img
  • ROM-o-matic.net: for gPXE version git
    • Choose an output format
      • Linux kernel (SYSLINUX/GRUB/LILO) loadable image (.lkrn) を選択
    • Choose a NIC type
      • all-drivers を選択
    • [Get Image] をポチっと

こちらは(ディスクイメージではないですが)gPXEにも対応の汎用ROMイメージ。

  1. gpxe-x.xx-gpxe.lkrnsyslinux ディレクトリへコピー
  2. gpxe_all.krn にリネーム
  • /syslinux/syslinux.cfg に追記
LABEL gPXE-git
KERNEL /syslinux/gpxe_all.krn

マルチブートDVD/CD

※ CDだと700 MBしか入りませんけどね...私は2枚に分けたりしてます。ってか、KNOPPIXはそのまま1枚でええやん!ですか。

ブートローダに ISOLINUX を使い、USBメモリの内容そのままで、ISOイメージを作成します。

上記で作成したUSBメモリ内のファイルを作業用ディレクトリコピー、ファイルを追加して作成...

【注意】/boot/isolinux ディレクトリがあると、そちらが優先されてしまいます。/boot/isolinux ディレクトリを作らないように。ファイル名は英数30文字以内、アンダースコア(_)以外の記号を使わないようにしませう。

  1. ファイル追加
  2. イメージ作成
ファイル追加

【追記】ルートにある FreeDOS の kernel.syscommand.com は削除しておいた方がいいかも。選択しちゃうとややこしいことになりそうなので。

作業ディレクトリ
│
│  cygwin1.dllmkisofs.exe
│
├─isolinux(ディレクトリ作成)
│      isolinux.bin
│      isolinux.cfg
│          
  1. ルートにファイルをコピー :
  2. isolinux ディレクトリ作成
    • SYSLINUX のファイル群(core\isolinux.bin)から isolinux.bin をコピー
  3. isolinux ディレクトリにファイル isolinux.cfg 作成
  • isolinux.cfg の内容は下記のみで
INCLUDE /syslinux/syslinux.cfg

ISOLINUX の本来の設定ファイルは isolinux.cfg なのですが、 syslinux.cfg を読み込みます。設定変更は syslinux.cfg で行います。CDブートのみに設定したい場合はこちらに追記します。

イメージ作成
  • コマンドプロンプトから(管理者として)実行します
pushd 作業ディレクトリのパス
mkisofs -v -l -r -J -o ../isolinux.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .

※ 一つ上のディレクトリに isolinux.iso が作成されます。

※CD-R/-RWメディアでは、あまり問題ないかと。

  • CD-R, CD-RW, DVD-Rメディア
    • マルチドライブ - 読み取り・ブート可能
    • DVD-ROM/CD-RWコンボドライブ - 読み取り・ブート可能
  • DVD-RWメディア
    • マルチドライブ - 読み取り・ブート可能
    • DVD-ROM/CD-RWコンボドライブ - 読み取り不可
めも

ネットワークブート

  1. PXEサーバの設定
  2. 設定変更・ファイル追加
  3. PXEでもっと入れたい!

Windowsでは、TFTPD32 でDHCP/TFTPサーバを稼動できます。

※ 一部のものはネットワークブートでは使えません。例えば、KNOPPIX通常CDではローカルのUSBメモリ/CD/HDに本体を探しに行きますので、起動後にエラー(いわゆる「シェルに落ちる」)となります。でも、USBブート非対応PCにて、ネットワークブート後にUSBメモリやUSB CDから起動させる、なんて使い方はできます。

PXEサーバの設定

  1. USBメモリの内容を作業用ディレクトリにコピーしておく
  2. 作業ディレクトリに、SYSLINUX の core\pxelinux.0 のファイルをコピーする
  3. 作業ディレクトリに、TFTPD32 のファイルをコピーする
  4. PXELINUX の設定ファイル default を作成する
作業ディレクトリ
 |
 |  pxelinux.0 
 |  tftpd32.chm 
 |  tftpd32.exe 
 |  tftpd32.ini 
 |
 +---- pxelinux.cfg (ディレクトリ)
 |           default 
 |
  • pxelinux.cfg\default
INCLUDE /syslinux/syslinux.cfg

PXELINUX の本来の設定ファイルは pxelinux.cfg ディレクトリにあるファイルなのですが、 syslinux.cfg を読み込みます。設定変更は syslinux.cfg で行います。PXEブートにのみ設定する場合は default に追記します。

設定変更・ファイル追加

下記のものは、USBメモリブートと同じ設定で起動できます。

  • FDイメージ
  • Linux (ネットワーク)インストーラ
  • Memtest86+

TFTPD32だけで起動可能ですが、若干の設定変更・追加が必要なもの

  • Windows PE 2.0
  • GRUB for DOS
Windows PE 2.0

PXEブート用のファイルを追加します。

  1. 作成時にマウントした mount\Windows\Boot\PXE\ にある bootmgr.exe を作業ディレクトリルートにコピー
  2. mount\Windows\Boot\PXE\ にある pxeboot.n12boot ディレクトリにコピー
  3. pxeboot.n12pxeboot.0 にリネーム
  • /syslinux/syslinux.cfg 編集 or 追記
LABEL WinPE-PXE
PXE /boot/pxeboot.n12

※ 尚、PE 2.1 (Vista SP1), PE 3.0 (7) では、TFTPD32の設定で Option Negotiation をオン(PXE Compatibility はオフ)にしないと起動できないようなので注意。

isoイメージからのブートの場合は...

  • /syslinux/syslinux.cfg 編集 or 追記
LABEL WinPEx86.iso-PXE
KERNEL /grub.exe
APPEND keeppxe --config-file="pxe basedir /;map --mem (pd)/WinPEx86.iso (0xff);map --hook;chainloader (0xff)"
GRUB for DOS

※ USBメモリブートと同じ設定ではPXEサーバ上のファイルをロードできません。

  • /syslinux/syslinux.cfg 編集 or 追記
LABEL GRUB4DOS-PXE
KERNEL /grub.exe
APPEND keeppxe --config-file="pxe basedir /;configfile (pd)/menu.lst"

PXEでもっと入れたい!

TFTPD32だけで起動。USBメモリと同じ設定でおk

  • PING(Partimage Is Not Ghost)
  • Paragon Backup & Recovery
  • Seagate Disc Wizard (True Image)
  • True Image WD Edition

HTTPサーバが必要ですが、USBメモリブートと同じ設定でいいもの

  • InetBoot (KNOPPIX 5.3.1 Remastered CD) --- + HTTPサーバ

TFTPD32だけで起動可能ですが、若干の設定変更・追加が必要なもの

  • SystemRescueCd
  • Clonezilla Live
  • Parted Magic
SystemRescueCd

※【注意】systemrescuecd-x86-1.5.0.iso の例

  • 一例です:APPEND行にパラメータを 編集 or 追記
LABEL default
KERNEL /sysres15/isolinux/rescuecd
APPEND netboot=tftp://192.168.0.2/sysres15/sysrcd.dat initrd=/sysres15/isolinux/initram.igz scandelay=5
Clonezilla Live

※【注意】clonezilla-live-1.2.3-27.zip の例

  • 一例です:
    1. APPEND行の ip=frommedia を消す
    2. fetch= でURLを指定
LABEL Clonezilla
KERNEL /live/vmlinuz1
APPEND initrd=/live/initrd.img boot=live union=aufs noswap nolocales noprompt ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="ja_JP.UTF-8" vga=791 fetch=tftp://192.168.0.2/live/filesystem.squashfs
Parted Magic

※【注意】pmagic-usb-4.8.zip + の例

※【USBメモリブートでの作業後に追加で実行

  • 一例です:
    1. 作業ディレクトリの pmagic ディレクトリへPXE版の pmagic\initramfs をコピー
    2. /pmagic/syslinux.cfg - LABELlivelowram は使えないので項目を消す

別にNFSサーバが必要なもの。

  • KNOPPIX 5.3.1CD (NFS)
  • INSERT+ 1.2.18 (NFS)
めも
SYSLINUX
GRUB for DOS
Etherboot/gPXE
FDイメージ関連
私的めも
さらに「ややこしや」版

手前味噌というか拙作でありますが

私的設定ファイルをアップなんてしとりますが、私のはかなり偏ってますんで、設定方法を覚えてしまえば自分で作る方がベターだと思われます。

いろいろ

  1. KERNEL コマンドの注意点
  2. コマンドラインで修正してブート
  3. 内蔵HDをチェインロード
  4. 内蔵HDのWindowsをチェインロード
  5. USBメモリを2台目のHD扱いでDOSをブート
  6. FreeDOSの設定ファイル
  7. グラフィカル・メニュー
  8. メニューについてもっと詳しく! (menu.c32, vesamenu.c32)
  9. chain.c32 についてもっと詳しく!
  10. 「USBメモリブートに対応してません!(><)

KERNEL コマンドの注意点

syslinux.cfg にて KERNEL 文を使う場合の注意事項です。まぁ問題になる場合は少ないかもですが。

  • KERNEL 文ではファイルの拡張子でブートの種類を判断してます
  • 例として、拡張子なしは「Linux kernel image」拡張子 .bin は「CD boot sector」なので plpbt.bin をそのまま指定してもブートできませぬ。plpbt にリネームすればおkです
  • ファイルの拡張子に関わりなくブートの種類を指定できる別のコマンドがあります
  • LINUX - linux kernel image.
  • BOOT - Bootstrap program (.bs, .bin)
  • BSS - BSS image (.bss)
  • PXE - PXE Network Bootstrap Program (.0)
  • FDIMAGE - Floppy disk image (.img)
  • COMBOOT - COMBOOT program (.com, .cbt)
  • COM32 - COM32 program (.c32)

コマンドラインで修正してブート

設定ファイル (syslinux.cfg) に記述ミスがあっても、コマンドラインの書式を覚えておけばなんてことないのだ!

【注】 jp106.kbd ではアンダースコア (_) はShift-0となってます。

  1. メニューを選択
  2. Tabキー押す
  3. パスなどを修正 or オプションを追記したり消したり
  4. Enterでブート

または、Escキーでコマンドラインモードから直接指定するとかでも。

尚、コマンドラインでの書式はというと、こんな石原莞爾

<kernelのファイル名> <APPEND行の内容>

例えば、FDイメージのブートなら

boot: /syslinux/memdisk initrd=/bootdisk/hogehoge.img

これでいいのだ!(柳の下は下柳)

内蔵HDをチェインロード

GRUBからでもできますけど...

間違ってUSBメモリからブートしちゃった時とか書いとくと便利。

LABEL disk1
localboot 0x80

LABEL disk2
localboot 0x81

LABEL floppy
localboot 0x00

HDのパーティションを指定するには、chain.c32 を使います。

  • hd0 0 (hd0) - 第1HD(hd0)のMBR
  • hd0 1 - 第1HDの第1パーティション
  • syslinux.cfg に追記
LABEL disk1
KERNEL /syslinux/chain.c32
APPEND hd0 0

LABEL disk1-1
KERNEL /syslinux/chain.c32
APPEND hd0 1

USBメモリが第1HD、内蔵HDが第2HDとなることが多いので、Windowsの起動など、順序を入換える必要があるかも。

  • syslinux.cfg に追記
LABEL disk2-swap
KERNEL /syslinux/chain.c32
APPEND hd1 0 swap

内蔵HDのWindowsをチェインロード

(あくまで一例ですが)基本的にはこんなかんじなのですが...

  • SYSLINUX - chain.c32 使用(一例)
LABEL Windows
KERNEL /syslinux/chain.c32
APPEND hd0 0

※ MBRにWindowsブートストラップがない場合や第1パーティション以外の場合はパーティション番号を指定します。例: hd0 2

  • GRUB for DOS(一例)
title Windows
find --set-root /ntldr
chainloader /ntldr

※ Vista以降は、ntldr = bootmgr

しかしながら、USBメモリブートではUSBメモリが第1HD、内蔵HDが第2HDとして認識されてる場合が多い(殆ど?)のです。原則的にはですが(Vista以降は少し違うかも)、Windowsは第2HDからだとブートしません。よって、この場合は順序を入換えてからブートさせます。

  • SYSLINUX - chain.c32 使用(一例)
LABEL Windows-swap
KERNEL /syslinux/chain.c32
APPEND hd1 0 swap
  • GRUB for DOS(一例)
title Windows swap
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
find --set-root /ntldr
chainloader /ntldr
title Windows swap
find --set-root --ignore-floppies --ignore-cd /ntldr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /ntldr
chainloader /ntldr

USBメモリを2台目のHD扱いでDOSをブート

BIOSの仕様に依存すると思われますが、殆どの場合USBメモリでブートした際は(FD扱いでブートした場合を除き)、1台目のHDとして認識されます。

2台目としてブートさせたい場合は、GRUBのmapコマンドでHDの順序を入替、FDイメージでブートするのが安全かな。

  • GRUB起動後にコマンド入力(menu.lstに書いといてもいいかな)
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
root (hd1,0)
map --mem /bootdisk/balder10.img (fd0)
map --memdisk-raw=1
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
boot

FreeDOSの設定ファイル

FDイメージブートでなく、USBメモリから直接ブート時に使いたい場合です。

起動時に HIMEM.EXE とキーボードドライバを読み込みます。

  1. USBメモリに freedos ディレクトリを作成しコマンド類を移動
  2. config.sys, autoexec.bat をルートに作成
USBメモリ
 |
 |  autoexec.bat 
 |  config.sys 
 |
 |  command.com 
 |  kernel.sys 
 |
 +---- freedos (ディレクトリ)
 |           keyb.exe 
 |           keyboard.sys 
 |           keybrd2.sys 
 |           himem.exe 
 |           edit.exe
 |           devload.com
 |           

  • config.sys
!SWITCHES=/E
menucolor=7,0
menudefault=0,100
menu
menu FreeDOS
menu
menu 0 - Clean boot
menu 1 - load HIMEM.EXE
menu

0?shell=command.com command.com /P
1?DEVICE=.\FREEDOS\HIMEM.EXE
1?DOSDATA=UMB
1?DOS=HIGH,UMB
!FILES=20
!BUFFERS=20
!LASTDRIVE=Z
  • autoexec.bat
@echo off
for %%x in (C D E F G H I J ) do if exist %%x:\freedos\keyb.exe set dosdrv=%%x:
if not "%dosdrv%"=="" GOTO set_path
if exist A:\freedos\keyb.exe set dosdrv=A:
if not "%dosdrv%"=="" GOTO set_path
if exist B:\freedos\keyb.exe set dosdrv=B:

:set_path
set path=%dosdrv%\freedos
keyb jp

グラフィカル・メニュー

menu.c32 の代わりに vesamenu.c32 を使うとグラフィカルなメニュー画面となります。

  1. \com32\menu\vesamenu.c32syslinux ディレクトリへコピー
  2. syslinux\syslinux.cfg の1行目を編集
DEFAULT /syslinux/vesamenu.c32

f:id:palm84:20210118115749p:plain

背景画像の指定もできます。サイズ640x480のjpgかpngが指定可能。

試しに sample\m16-640x640-syslinux.jpg を、(syslinux.jpg にリネームして)指定してみます。

  • syslinux.cfg に追記
MENU BACKGROUND /syslinux/syslinux.jpg

f:id:palm84:20210118115754p:plain

なかなかキレイ?

※ 但し、かなり古いマシンだと表示できないこともあるのでご注意。

拙作めもですが...

chain.c32 についてもっと詳しく!

パーティション番号の指定以外の方法もいろいろあります。

  • LABEL(ボリューム ラベル)を指定
LABEL boot_part_win7fs
COM32 /syslinux/chain.c32
APPEND label=win7fs ntldr=/bootmgr
  • disk ID を指定(※ fdisk コマンドなどで確認可)
LABEL mbr_serial
COM32 /syslinux/chain.c32
APPEND mbr:0x0ec8694c
NTLDR, BOOTMGR のチェインロード(Windows 起動)

chain.c32 でNTLDRやBOOTMGRのチェインロードは可能です。しかしながら、USBメモリブート時はややこしいので GRUB for DOS の方が確実だと思います。

  • NTLDR (Windows NT/2000/XP/2003) のチェインロード
LABEL boot_part_win7fs
COM32 /syslinux/chain.c32
APPEND hd0,1 ntldr=/ntldr
  • BOOTMGR (Windows Vista/7/2008/PE 2.0) のチェインロード
LABEL boot_part_win7fs
COM32 /syslinux/chain.c32
APPEND hd0,1 ntldr=/bootmgr

と、基本はこうなのですが、USBメモリブート時にはUSBメモリが hd0, 内蔵HDが hd1 となります。Windows(PE除く)は原則、第2HDからブートできないので前述のとおり swap などの指定が必要になるかと。(※ USBメモリの NTLDR から第2HDの Windows のブートは可能です。でも boot.ini の書き換えとかややこしいかも。)

「USBメモリブートに対応してません!(><)

あくまで、「at your own risk」なツールです。「バッチシ確実!」とは言えませんけど。

起動ディスク(FD,CD,ネットワーク)などからブートして、USB メモリ/HD をチェインロードできる(かもしれない)ブートローダです。

マルチブートCD,ネットワークブートに組み込む場合は下記の手順にて。(※ USBメモリに入れても意味ないです)

  1. syslinuxディレクトリへ下記ファイルをコピー
    • plpbt.binplpbt にリネームしてコピー
  2. /syslinux/syslinux.cfg に追記
  • /syslinux/syslinux.cfg
LABEL PLoP-Boot-Manager
LINUX /syslinux/plpbt.bin

USB 1.1 では起動まで非常に遅いのでご注意!止まってしまうこともあります。Windows PE では1時間以上かかったり、とか。


ほなね