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

TweetBuzz  はてなブックマーク

2009.8.8 書きかけ中ですが公開してもうたです...
最終更新日 2011.6.2

作業環境は、Windows XP です。

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

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

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

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

これって何 3

めちゃ初歩的・基本的ですが、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 のチェインロードは可能なので、併用することで欠点は補えるかなと思います。

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

おおまか手順
  1. 必要ファイルをダウンロード
  2. syslinux ディレクトリに必要ファイルをコピー
  3. アイテムのファイルをそれぞれディレクトリ作成してコピー
  4. syslinux ディレクトリにブートメニュー設定ファイル作成

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

ページ先頭 U

事前準備 4

バックアップ

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

パーティションの作成

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

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

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

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

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

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

参考リンク

ページ先頭 U

ダウンロード 5

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 インストーラ

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

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

i386 (x86)
amd64 (x86_64)
Memtest86+

ページ先頭 U

syslinuxディレクトリ 6

ページ先頭 U

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
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へはインストールできない筈ですけど...)

めも

ページ先頭 U

アイテム投入 7

ページ先頭 U

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

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

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

ページ先頭 U

FDイメージ

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

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

ページ先頭 U

Knoppix 5.3.1CD

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

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

戻る | ページ先頭 U

Windows PE 2.0

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

ファイル作成後に。

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

戻る | ページ先頭 U

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 など

戻る | ページ先頭 U

GRUB for DOS

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

戻る | ページ先頭 U

Linux インストーラ

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

戻る | ページ先頭 U

Memtest86+

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

戻る | ページ先頭 U

syslinux.cfg 作成 8

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

戻る | ページ先頭 U

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
めも

戻る | ページ先頭 U

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 でもやり方は同じで。

めも

戻る | ページ先頭 U

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)"
めも

戻る | ページ先頭 U

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
めも

戻る | ページ先頭 U

GRUB for DOS

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

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

戻る | ページ先頭 U

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
めも

戻る | ページ先頭 U

Memtest86+

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

LABEL Memtest86+
KERNEL /syslinux/memtest
めも

戻る | ページ先頭 U

スクリーン・ショット 9

ページ先頭 U

テキストメニュー

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

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

テキストメニュー - オプション編集画面

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

テキストメニュー - コマンドライン・モード

戻る | ページ先頭 U

もっと入れたい!

とりあえずは、サブディレクトリにファイルをコピーし、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イメージの内容をサブディレクトリにコピーした場合は原則としてオプションの指定が必要になります。

戻る | ページ先頭 U

InetBoot (KNOPPIX 5.3.1 Remastered CD)

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

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

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 のあるディレクトリ
めも

戻る | ページ先頭 U

SystemRescueCd

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

LABEL SystemRescueCd
KERNEL /syslinux/menu.c32
APPEND /sysres15/isolinux/isolinux.cfg
LABEL default
KERNEL /sysres15/isolinux/rescuecd
APPEND initrd=/sysres15/isolinux/initram.igz scandelay=5 subdir=sysres15
めも

戻る | ページ先頭 U

PING(Partimage Is Not Ghost)

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

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
めも

戻る | ページ先頭 U

Clonezilla Live

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

LABEL Clonezilla
KERNEL /syslinux/menu.c32
APPEND /live/syslinux.cfg
めも
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

戻る | ページ先頭 U

Parted Magic

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

LABEL Parted_Magic
KERNEL /syslinux/menu.c32
APPEND /pmagic/syslinux.cfg
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

戻る | ページ先頭 U

Puppy Linux

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

LABEL Puppy
KERNEL /puppy/vmlinuz
APPEND initrd=/puppy/initrd.gz psubdir=puppy
めも
  • USBメモリのみ検索 - pmedia=usbflash
  • USB CDのみ検索 - pmedia=usbcd

戻る | ページ先頭 U

SLAX

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

LABEL SLAX6
KERNEL /syslinux/menu.c32
APPEND /slax6/boot/slax.cfg
めも

戻る | ページ先頭 U

Berry Linux

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

KERNEL /BERRY/vmlinuz
APPEND initrd=/BERRY/initrd.gz cdrom lang=ja video=vesa:ywrap,mtrr vga=785 splash=silent overlay=/berry/berry.img
めも

戻る | ページ先頭 U

Paragon Backup & Recovery

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

LABEL Paragon
KERNEL /paragon/vmlinuzp
APPEND initrd=/paragon/initrd.gz vga=0x314 language=en_US.UTF-8 medialable=

戻る | ページ先頭 U

Seagate DiscWizard (True Image)

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

戻る | ページ先頭 U

True Image WD Edition

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

戻る | ページ先頭 U

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

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

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

  1. pxe-on-a-disk.floppysyslinux ディレクトリへコピー
  2. pxeon.img にリネーム
LABEL PXE-on-a-disk
KERNEL /syslinux/memdisk
APPEND /syslinux/pxeon.img

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

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

戻る | ページ先頭 U

マルチブート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ブートのみに設定したい場合はこちらに追記します。

戻る | ページ先頭 U

イメージ作成
  • コマンドプロンプトから(管理者として)実行します
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コンボドライブ - 読み取り不可
めも

戻る | ページ先頭 U

ネットワークブート

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

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

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

戻る | ページ先頭 U

PXEサーバの設定

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

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

戻る | ページ先頭 U

設定変更・ファイル追加

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

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

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"

戻る | ページ先頭 U

PXEでもっと入れたい!

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

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

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

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サーバが必要なもの。

めも

戻る | ページ先頭 U

関連リンク

SYSLINUX
GRUB for DOS
Etherboot/gPXE
FDイメージ関連
私的めも
さらに「ややこしや」版

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

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

ページ先頭 U

いろいろ

  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 文を使う場合の注意事項です。まぁ問題になる場合は少ないかもですが。

戻る | ページ先頭 U

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

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

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

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

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

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

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

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

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

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

戻る | ページ先頭 U

内蔵HDをチェインロード

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

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

LABEL disk1
localboot 0x80

LABEL disk2
localboot 0x81

LABEL floppy
localboot 0x00

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

LABEL disk1
KERNEL /syslinux/chain.c32
APPEND hd0 0

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

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

LABEL disk2-swap
KERNEL /syslinux/chain.c32
APPEND hd1 0 swap

戻る | ページ先頭 U

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

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

LABEL Windows
KERNEL /syslinux/chain.c32
APPEND hd0 0

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

title Windows
find --set-root /ntldr
chainloader /ntldr

※ Vista以降は、ntldr = bootmgr

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

LABEL Windows-swap
KERNEL /syslinux/chain.c32
APPEND hd1 0 swap
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

戻る | ページ先頭 U

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

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

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

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

戻る | ページ先頭 U

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
|           

!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
@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

戻る | ページ先頭 U

グラフィカル・メニュー

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

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

グラフィカル・メニュー

こんなんなりました。(※クリックで拡大)

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

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

MENU BACKGROUND /syslinux/syslinux.jpg

背景画像指定グラフィカル・メニュー

なかなかキレイ?

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

戻る | ページ先頭 U

メニューについてもっと詳しく!

拙作めもですが...

戻る | ページ先頭 U

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

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

LABEL boot_part_win7fs
COM32 /syslinux/chain.c32
APPEND label=win7fs ntldr=/bootmgr
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 の書き換えとかややこしいかも。)

戻る | ページ先頭 U

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

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

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

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

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

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

戻る | ページ先頭 U


Written by yassy